src/com/beem/project/beem/BeemService.java
author darisk@kaaliyah
Mon, 10 Aug 2009 05:32:45 +0200
changeset 342 2b489d4a7917
parent 326 c5f000965df8
child 351 718557c6c309
permissions -rw-r--r--
Some checkstyle rules
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
17
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
     1
package com.beem.project.beem;
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
     2
80
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 72
diff changeset
     3
import org.jivesoftware.smack.ConnectionConfiguration;
94
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
     4
import org.jivesoftware.smack.PacketListener;
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
     5
import org.jivesoftware.smack.Roster;
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
     6
import org.jivesoftware.smack.XMPPConnection;
315
151b1b64f407 ajout de la fonctionnalite require ssl/tls dans le service
nikita@localhost
parents: 313
diff changeset
     7
import org.jivesoftware.smack.ConnectionConfiguration.SecurityMode;
94
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
     8
import org.jivesoftware.smack.Roster.SubscriptionMode;
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
     9
import org.jivesoftware.smack.filter.PacketFilter;
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
    10
import org.jivesoftware.smack.packet.Packet;
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
    11
import org.jivesoftware.smack.packet.Presence;
80
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 72
diff changeset
    12
import org.jivesoftware.smack.proxy.ProxyInfo;
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 72
diff changeset
    13
import org.jivesoftware.smack.proxy.ProxyInfo.ProxyType;
326
c5f000965df8 Reconnection
Marseille
parents: 315
diff changeset
    14
import org.jivesoftware.smack.util.StringUtils;
239
65369afd96d3 Rajout de Log dans le beem service pour les reconnections etc.
marseille@marseille-desktop
parents: 236
diff changeset
    15
17
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    16
import android.app.Notification;
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    17
import android.app.NotificationManager;
147
472d56ba57c6 debut de la subscription
nikita@nikita-rack
parents: 140
diff changeset
    18
import android.app.PendingIntent;
17
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    19
import android.app.Service;
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    20
import android.content.Intent;
19
213b84d2e743 Improve the service. It connect with a xmpp server running on the
Da Risk <darisk972@gmail.com>
parents: 18
diff changeset
    21
import android.content.SharedPreferences;
297
f882aa78e0f9 Fixes bug #179
Da Risk <darisk972@gmail.com>
parents: 283
diff changeset
    22
import android.content.SharedPreferences.Editor;
17
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    23
import android.os.IBinder;
18
1063d4bde1aa commit pour test avec barbu
Da Risk <darisk972@gmail.com>
parents: 17
diff changeset
    24
import android.os.RemoteException;
94
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
    25
import android.util.Log;
216
5d168a9b6b82 Correction bug textview.
marseille@marseille-desktop
parents: 212
diff changeset
    26
import android.widget.ArrayAdapter;
94
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
    27
67
8c3870db8e31 Rename some XMPP* classes in Xmpp*
Da Risk <darisk972@gmail.com>
parents: 55
diff changeset
    28
import com.beem.project.beem.service.XmppConnectionAdapter;
8c3870db8e31 Rename some XMPP* classes in Xmpp*
Da Risk <darisk972@gmail.com>
parents: 55
diff changeset
    29
import com.beem.project.beem.service.XmppFacade;
94
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
    30
import com.beem.project.beem.service.aidl.IBeemConnectionListener;
67
8c3870db8e31 Rename some XMPP* classes in Xmpp*
Da Risk <darisk972@gmail.com>
parents: 55
diff changeset
    31
import com.beem.project.beem.service.aidl.IXmppFacade;
147
472d56ba57c6 debut de la subscription
nikita@nikita-rack
parents: 140
diff changeset
    32
import com.beem.project.beem.ui.Subscription;
72
cdedc3a25d39 Show a progress dialog during connection with the server
Da Risk <darisk972@gmail.com>
parents: 67
diff changeset
    33
17
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    34
/**
326
c5f000965df8 Reconnection
Marseille
parents: 315
diff changeset
    35
 * This class is for the Beem service. The connection to the xmpp server will be made asynchronously when the service
c5f000965df8 Reconnection
Marseille
parents: 315
diff changeset
    36
 * will start.
17
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    37
 * @author darisk
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    38
 */
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    39
public class BeemService extends Service {
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    40
72
cdedc3a25d39 Show a progress dialog during connection with the server
Da Risk <darisk972@gmail.com>
parents: 67
diff changeset
    41
    /**
cdedc3a25d39 Show a progress dialog during connection with the server
Da Risk <darisk972@gmail.com>
parents: 67
diff changeset
    42
     * The id to use for status notification.
cdedc3a25d39 Show a progress dialog during connection with the server
Da Risk <darisk972@gmail.com>
parents: 67
diff changeset
    43
     */
326
c5f000965df8 Reconnection
Marseille
parents: 315
diff changeset
    44
    public static final int NOTIFICATION_STATUS_ID = 100;
72
cdedc3a25d39 Show a progress dialog during connection with the server
Da Risk <darisk972@gmail.com>
parents: 67
diff changeset
    45
326
c5f000965df8 Reconnection
Marseille
parents: 315
diff changeset
    46
    private NotificationManager mNotificationManager;
c5f000965df8 Reconnection
Marseille
parents: 315
diff changeset
    47
    private XmppConnectionAdapter mConnection;
c5f000965df8 Reconnection
Marseille
parents: 315
diff changeset
    48
    private SharedPreferences mSettings;
c5f000965df8 Reconnection
Marseille
parents: 315
diff changeset
    49
    private String mLogin;
c5f000965df8 Reconnection
Marseille
parents: 315
diff changeset
    50
    private String mPassword;
c5f000965df8 Reconnection
Marseille
parents: 315
diff changeset
    51
    private String mHost;
c5f000965df8 Reconnection
Marseille
parents: 315
diff changeset
    52
    private String mService;
c5f000965df8 Reconnection
Marseille
parents: 315
diff changeset
    53
    private int mPort;
80
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 72
diff changeset
    54
    private ConnectionConfiguration mConnectionConfiguration;
326
c5f000965df8 Reconnection
Marseille
parents: 315
diff changeset
    55
    private ProxyInfo mProxyInfo;
c5f000965df8 Reconnection
Marseille
parents: 315
diff changeset
    56
    private boolean mUseProxy;
c5f000965df8 Reconnection
Marseille
parents: 315
diff changeset
    57
    private IXmppFacade.Stub mBind;
21
b9f4a0ef574a Contact List OK.
marseille@marseille-desktop
parents: 19
diff changeset
    58
55
66732dd2cb77 Add an interface for sending im message.
Da Risk <darisk972@gmail.com>
parents: 42
diff changeset
    59
    /**
72
cdedc3a25d39 Show a progress dialog during connection with the server
Da Risk <darisk972@gmail.com>
parents: 67
diff changeset
    60
     * Constructor.
cdedc3a25d39 Show a progress dialog during connection with the server
Da Risk <darisk972@gmail.com>
parents: 67
diff changeset
    61
     */
cdedc3a25d39 Show a progress dialog during connection with the server
Da Risk <darisk972@gmail.com>
parents: 67
diff changeset
    62
    public BeemService() {
cdedc3a25d39 Show a progress dialog during connection with the server
Da Risk <darisk972@gmail.com>
parents: 67
diff changeset
    63
    }
cdedc3a25d39 Show a progress dialog during connection with the server
Da Risk <darisk972@gmail.com>
parents: 67
diff changeset
    64
cdedc3a25d39 Show a progress dialog during connection with the server
Da Risk <darisk972@gmail.com>
parents: 67
diff changeset
    65
    /**
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
    66
     * Close the connection to the xmpp server.
55
66732dd2cb77 Add an interface for sending im message.
Da Risk <darisk972@gmail.com>
parents: 42
diff changeset
    67
     */
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
    68
    private void closeConnection() {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
    69
	if (mConnection != null)
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
    70
	    mConnection.disconnect();
17
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    71
    }
147
472d56ba57c6 debut de la subscription
nikita@nikita-rack
parents: 140
diff changeset
    72
94
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
    73
    /**
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
    74
     * Initialise la configuration de la connexion.
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
    75
     */
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
    76
    private void initConnectionConfig() {
193
marseille@marseille-desktop
parents: 190
diff changeset
    77
	// TODO mettre a false par defaut et remplacer les valeurs par defaut
313
3805671d14ff oublie du provider
nikita@localhost
parents: 297
diff changeset
    78
	java.security.Security.addProvider(new com.sun.security.sasl.Provider());
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
    79
	mUseProxy = mSettings.getBoolean(getString(R.string.settings_key_proxy_use), false);
94
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
    80
	if (mUseProxy) {
216
5d168a9b6b82 Correction bug textview.
marseille@marseille-desktop
parents: 212
diff changeset
    81
	    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.proxy_types,
313
3805671d14ff oublie du provider
nikita@localhost
parents: 297
diff changeset
    82
		android.R.layout.simple_spinner_item);
216
5d168a9b6b82 Correction bug textview.
marseille@marseille-desktop
parents: 212
diff changeset
    83
	    int pos = mSettings.getInt(getString(R.string.settings_key_proxy_type), 0);
5d168a9b6b82 Correction bug textview.
marseille@marseille-desktop
parents: 212
diff changeset
    84
	    String stype = adapter.getItem(pos).toString();
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
    85
	    String phost = mSettings.getString(getString(R.string.settings_key_proxy_server), "");
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
    86
	    String puser = mSettings.getString(getString(R.string.settings_key_proxy_username), "");
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
    87
	    String ppass = mSettings.getString(getString(R.string.settings_key_proxy_password), "");
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
    88
	    int pport = Integer.parseInt(mSettings.getString(getString(R.string.settings_key_proxy_port), "1080"));
94
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
    89
	    ProxyInfo.ProxyType type = ProxyType.valueOf(stype);
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
    90
	    mProxyInfo = new ProxyInfo(type, phost, pport, puser, ppass);
193
marseille@marseille-desktop
parents: 190
diff changeset
    91
	    if (mService != null)
marseille@marseille-desktop
parents: 190
diff changeset
    92
		mConnectionConfiguration = new ConnectionConfiguration(mHost, mPort, mService, mProxyInfo);
marseille@marseille-desktop
parents: 190
diff changeset
    93
	    else
marseille@marseille-desktop
parents: 190
diff changeset
    94
		mConnectionConfiguration = new ConnectionConfiguration(mHost, mPort, mProxyInfo);
94
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
    95
	} else {
193
marseille@marseille-desktop
parents: 190
diff changeset
    96
	    if (mService != null)
marseille@marseille-desktop
parents: 190
diff changeset
    97
		mConnectionConfiguration = new ConnectionConfiguration(mHost, mPort, mService);
marseille@marseille-desktop
parents: 190
diff changeset
    98
	    else
marseille@marseille-desktop
parents: 190
diff changeset
    99
		mConnectionConfiguration = new ConnectionConfiguration(mHost, mPort);
94
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
   100
	}
342
2b489d4a7917 Some checkstyle rules
darisk@kaaliyah
parents: 326
diff changeset
   101
	if (mSettings.getBoolean(getString(R.string.settings_key_xmpp_tls_use), false)) {
315
151b1b64f407 ajout de la fonctionnalite require ssl/tls dans le service
nikita@localhost
parents: 313
diff changeset
   102
	    mConnectionConfiguration.setSecurityMode(SecurityMode.required);
151b1b64f407 ajout de la fonctionnalite require ssl/tls dans le service
nikita@localhost
parents: 313
diff changeset
   103
	}
133
190a55f30e11 tite modif avant merge
Da Risk <darisk972@gmail.com>
parents: 122
diff changeset
   104
	mConnectionConfiguration.setDebuggerEnabled(false);
94
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
   105
	mConnectionConfiguration.setSendPresence(true);
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
   106
    }
99
8de21ac527ce revert pour refaire un push propre
nikita@nikita-rack
parents: 98
diff changeset
   107
94
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
   108
    private void initRosterRequestListener() {
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
   109
	Roster.setDefaultSubscriptionMode(SubscriptionMode.manual);
193
marseille@marseille-desktop
parents: 190
diff changeset
   110
	final XMPPConnection con = mConnection.getAdaptee();
94
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
   111
	try {
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   112
	    // l'ajout d'un packet listener ne peut etre effectuer que lorsqu'on est connecte au
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   113
	    // serveur
94
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
   114
	    mConnection.addConnectionListener(new IBeemConnectionListener.Stub() {
99
8de21ac527ce revert pour refaire un push propre
nikita@nikita-rack
parents: 98
diff changeset
   115
8de21ac527ce revert pour refaire un push propre
nikita@nikita-rack
parents: 98
diff changeset
   116
		@Override
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   117
		public void connectionClosed() throws RemoteException {
239
65369afd96d3 Rajout de Log dans le beem service pour les reconnections etc.
marseille@marseille-desktop
parents: 236
diff changeset
   118
		    Log.i("BeemService", "connectionClosed()");
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   119
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   120
		}
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   121
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   122
		@Override
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   123
		public void connectionClosedOnError() throws RemoteException {
239
65369afd96d3 Rajout de Log dans le beem service pour les reconnections etc.
marseille@marseille-desktop
parents: 236
diff changeset
   124
		    Log.i("BeemService", "connectionClosedOnError()");
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   125
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   126
		}
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   127
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   128
		@Override
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   129
		public void connectionFailed(String errorMsg) throws RemoteException {
239
65369afd96d3 Rajout de Log dans le beem service pour les reconnections etc.
marseille@marseille-desktop
parents: 236
diff changeset
   130
		    Log.i("BeemService", "connectionFailed()");
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   131
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   132
		}
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   133
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   134
		@Override
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   135
		public void onConnect() throws RemoteException {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   136
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   137
		    PacketFilter filter = new PacketFilter() {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   138
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   139
			@Override
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   140
			public boolean accept(Packet packet) {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   141
			    if (packet instanceof Presence) {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   142
				Presence pres = (Presence) packet;
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   143
				if (pres.getType() == Presence.Type.subscribe)
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   144
				    return true;
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   145
			    }
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   146
			    return false;
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   147
			}
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   148
		    };
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   149
		    con.addPacketListener(new PacketListener() {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   150
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   151
			@Override
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   152
			public void processPacket(Packet packet) {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   153
			    String from = packet.getFrom();
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   154
			    Notification notif = new Notification(com.beem.project.beem.R.drawable.signal,
342
2b489d4a7917 Some checkstyle rules
darisk@kaaliyah
parents: 326
diff changeset
   155
				    "Demande d'ajout", System.currentTimeMillis());
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   156
			    notif.defaults = Notification.DEFAULT_ALL;
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   157
			    notif.flags = Notification.FLAG_AUTO_CANCEL;
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   158
			    Intent intent = new Intent(BeemService.this, Subscription.class);
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   159
			    intent.putExtra("from", from);
326
c5f000965df8 Reconnection
Marseille
parents: 315
diff changeset
   160
			    notif.setLatestEventInfo(BeemService.this, from, "demande d'ajout de " + from,
c5f000965df8 Reconnection
Marseille
parents: 315
diff changeset
   161
				PendingIntent.getActivity(BeemService.this, 0, intent, PendingIntent.FLAG_ONE_SHOT));
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   162
			    int id = packet.hashCode();
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   163
			    sendNotification(id, notif);
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   164
			}
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   165
		    }, filter);
297
f882aa78e0f9 Fixes bug #179
Da Risk <darisk972@gmail.com>
parents: 283
diff changeset
   166
		    // set status connect in the preferences
f882aa78e0f9 Fixes bug #179
Da Risk <darisk972@gmail.com>
parents: 283
diff changeset
   167
		    // private static final int AVAILABLE_IDX = 5;
f882aa78e0f9 Fixes bug #179
Da Risk <darisk972@gmail.com>
parents: 283
diff changeset
   168
		    Editor edit = mSettings.edit();
f882aa78e0f9 Fixes bug #179
Da Risk <darisk972@gmail.com>
parents: 283
diff changeset
   169
		    edit.putInt(getString(R.string.PreferenceStatus), 1);
f882aa78e0f9 Fixes bug #179
Da Risk <darisk972@gmail.com>
parents: 283
diff changeset
   170
		    edit.commit();
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   171
		}
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   172
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   173
		@Override
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   174
		public void reconnectingIn(int seconds) throws RemoteException {
239
65369afd96d3 Rajout de Log dans le beem service pour les reconnections etc.
marseille@marseille-desktop
parents: 236
diff changeset
   175
		    Log.i("BeemService", "reconnectingIn()");
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   176
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   177
		}
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   178
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   179
		@Override
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   180
		public void reconnectionFailed() throws RemoteException {
239
65369afd96d3 Rajout de Log dans le beem service pour les reconnections etc.
marseille@marseille-desktop
parents: 236
diff changeset
   181
		    Log.i("BeemService", "reconnectionFailed()");
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   182
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   183
		}
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   184
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   185
		@Override
99
8de21ac527ce revert pour refaire un push propre
nikita@nikita-rack
parents: 98
diff changeset
   186
		public void reconnectionSuccessful() throws RemoteException {
239
65369afd96d3 Rajout de Log dans le beem service pour les reconnections etc.
marseille@marseille-desktop
parents: 236
diff changeset
   187
		    Log.i("BeemService", "reconnectionSuccessful()");
99
8de21ac527ce revert pour refaire un push propre
nikita@nikita-rack
parents: 98
diff changeset
   188
		    PacketFilter filter = new PacketFilter() {
8de21ac527ce revert pour refaire un push propre
nikita@nikita-rack
parents: 98
diff changeset
   189
8de21ac527ce revert pour refaire un push propre
nikita@nikita-rack
parents: 98
diff changeset
   190
			@Override
8de21ac527ce revert pour refaire un push propre
nikita@nikita-rack
parents: 98
diff changeset
   191
			public boolean accept(Packet packet) {
8de21ac527ce revert pour refaire un push propre
nikita@nikita-rack
parents: 98
diff changeset
   192
			    if (packet instanceof Presence) {
8de21ac527ce revert pour refaire un push propre
nikita@nikita-rack
parents: 98
diff changeset
   193
				Presence pres = (Presence) packet;
8de21ac527ce revert pour refaire un push propre
nikita@nikita-rack
parents: 98
diff changeset
   194
				if (pres.getType() == Presence.Type.subscribe)
8de21ac527ce revert pour refaire un push propre
nikita@nikita-rack
parents: 98
diff changeset
   195
				    return true;
8de21ac527ce revert pour refaire un push propre
nikita@nikita-rack
parents: 98
diff changeset
   196
			    }
8de21ac527ce revert pour refaire un push propre
nikita@nikita-rack
parents: 98
diff changeset
   197
			    return false;
8de21ac527ce revert pour refaire un push propre
nikita@nikita-rack
parents: 98
diff changeset
   198
			}
8de21ac527ce revert pour refaire un push propre
nikita@nikita-rack
parents: 98
diff changeset
   199
		    };
8de21ac527ce revert pour refaire un push propre
nikita@nikita-rack
parents: 98
diff changeset
   200
		    con.addPacketListener(new PacketListener() {
8de21ac527ce revert pour refaire un push propre
nikita@nikita-rack
parents: 98
diff changeset
   201
8de21ac527ce revert pour refaire un push propre
nikita@nikita-rack
parents: 98
diff changeset
   202
			@Override
8de21ac527ce revert pour refaire un push propre
nikita@nikita-rack
parents: 98
diff changeset
   203
			public void processPacket(Packet packet) {
8de21ac527ce revert pour refaire un push propre
nikita@nikita-rack
parents: 98
diff changeset
   204
			    // TODO Auto-generated method stub
147
472d56ba57c6 debut de la subscription
nikita@nikita-rack
parents: 140
diff changeset
   205
			    Log.d("TEST", "Une demande recue");
99
8de21ac527ce revert pour refaire un push propre
nikita@nikita-rack
parents: 98
diff changeset
   206
			}
8de21ac527ce revert pour refaire un push propre
nikita@nikita-rack
parents: 98
diff changeset
   207
		    }, filter);
8de21ac527ce revert pour refaire un push propre
nikita@nikita-rack
parents: 98
diff changeset
   208
		}
94
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
   209
	    });
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
   210
	} catch (RemoteException e) {
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
   211
	    // TODO Auto-generated catch block
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
   212
	    e.printStackTrace();
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
   213
	}
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
   214
    }
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
   215
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
   216
    /**
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   217
     * {@inheritDoc}
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   218
     */
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   219
    @Override
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   220
    public IBinder onBind(Intent intent) {
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 239
diff changeset
   221
	Log.e("BEEMSERVICE", "ONBIND()");
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   222
	return mBind;
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   223
    }
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   224
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   225
    /**
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   226
     * {@inheritDoc}
94
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
   227
     */
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   228
    @Override
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   229
    public void onCreate() {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   230
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   231
	super.onCreate();
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   232
	mSettings = getSharedPreferences(getString(R.string.settings_filename), MODE_PRIVATE);
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   233
	mLogin = mSettings.getString(getString(R.string.settings_key_account_username), "");
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   234
	mPassword = mSettings.getString(getString(R.string.settings_key_account_password), "");
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   235
	mHost = mSettings.getString(getString(R.string.settings_key_xmpp_server), "");
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   236
	mPort = Integer.parseInt(mSettings.getString(getString(R.string.settings_key_xmpp_port), "5222"));
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   237
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 239
diff changeset
   238
	Log.i("BEEEMSERVICE", mLogin);
326
c5f000965df8 Reconnection
Marseille
parents: 315
diff changeset
   239
	/*
c5f000965df8 Reconnection
Marseille
parents: 315
diff changeset
   240
	 * Gestion pour gmail.
c5f000965df8 Reconnection
Marseille
parents: 315
diff changeset
   241
	 */
c5f000965df8 Reconnection
Marseille
parents: 315
diff changeset
   242
	if ("".equals(mHost)) {
c5f000965df8 Reconnection
Marseille
parents: 315
diff changeset
   243
	    mHost = StringUtils.parseServer(mLogin);
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   244
	    mService = null;
326
c5f000965df8 Reconnection
Marseille
parents: 315
diff changeset
   245
	    mLogin = StringUtils.parseName(mLogin);
c5f000965df8 Reconnection
Marseille
parents: 315
diff changeset
   246
	} else
c5f000965df8 Reconnection
Marseille
parents: 315
diff changeset
   247
	    mService = StringUtils.parseServer(mLogin);
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   248
	initConnectionConfig();
326
c5f000965df8 Reconnection
Marseille
parents: 315
diff changeset
   249
	mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   250
	mConnection = new XmppConnectionAdapter(mConnectionConfiguration, mLogin, mPassword, this);
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   251
	initRosterRequestListener();
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   252
	mBind = new XmppFacade(mConnection, this);
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   253
    }
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   254
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   255
    /**
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   256
     * {@inheritDoc}
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   257
     */
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   258
    @Override
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   259
    public void onDestroy() {
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 239
diff changeset
   260
	super.onDestroy();
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   261
	closeConnection();
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   262
	mNotificationManager.cancel(NOTIFICATION_STATUS_ID);
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 239
diff changeset
   263
	Log.e("BEEEMSERVICE", "ONDESTROY");
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   264
    }
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   265
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   266
    /**
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   267
     * {@inheritDoc}
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   268
     */
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   269
    @Override
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   270
    public void onStart(Intent intent, int startId) {
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 239
diff changeset
   271
	super.onStart(intent, startId);
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   272
	try {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   273
	    mConnection.connectAsync();
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   274
	} catch (RemoteException e) {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   275
	    // TODO Auto-generated catch block
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   276
	    e.printStackTrace();
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   277
	}
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   278
    }
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   279
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   280
    /**
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   281
     * Show a notification.
326
c5f000965df8 Reconnection
Marseille
parents: 315
diff changeset
   282
     * @param id the id of the notification.
c5f000965df8 Reconnection
Marseille
parents: 315
diff changeset
   283
     * @param notif the notification to show
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   284
     */
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   285
    public void sendNotification(int id, Notification notif) {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 193
diff changeset
   286
	mNotificationManager.notify(id, notif);
94
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
   287
    }
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
   288
17
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
   289
}