src/com/beem/project/beem/BeemService.java
author Da Risk <darisk972@gmail.com>
Sat, 21 Mar 2009 02:09:05 +0100
changeset 33 0e65d5f55d2f
parent 32 4d26854143e2
parent 21 b9f4a0ef574a
child 38 3e76846c48a9
permissions -rw-r--r--
Merge with ui. Synchronous connection worked. Add some checkstyle xml rules to use with the checkstyle plugin for eclipse and also a formatter for eclipse. Still work needs on asynchrounous connect
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
/**
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
     2
 * 
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
     3
 */
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
     4
package com.beem.project.beem;
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
     5
29
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
     6
import java.util.Collection;
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
     7
import java.util.HashSet;
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
     8
import java.util.Set;
18
1063d4bde1aa commit pour test avec barbu
Da Risk <darisk972@gmail.com>
parents: 17
diff changeset
     9
29
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
    10
import org.jivesoftware.smack.Roster;
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
    11
import org.jivesoftware.smack.RosterListener;
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
    12
import org.jivesoftware.smack.packet.Presence;
17
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    13
import org.jivesoftware.smack.XMPPConnection;
18
1063d4bde1aa commit pour test avec barbu
Da Risk <darisk972@gmail.com>
parents: 17
diff changeset
    14
import org.jivesoftware.smack.XMPPException;
1063d4bde1aa commit pour test avec barbu
Da Risk <darisk972@gmail.com>
parents: 17
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;
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    18
import android.app.PendingIntent;
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;
17
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    22
import android.os.IBinder;
29
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
    23
import android.os.Looper;
18
1063d4bde1aa commit pour test avec barbu
Da Risk <darisk972@gmail.com>
parents: 17
diff changeset
    24
import android.os.RemoteException;
17
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    25
import android.widget.Toast;
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    26
29
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
    27
import com.beem.project.beem.service.XMPPConnectionAdapter;
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
    28
import com.beem.project.beem.service.aidl.IXMPPConnection;
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
    29
import com.beem.project.beem.service.aidl.IXMPPFacade;
17
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    30
/**
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    31
 * @author darisk
21
b9f4a0ef574a Contact List OK.
marseille@marseille-desktop
parents: 19
diff changeset
    32
 * 
17
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    33
 */
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    34
public class BeemService extends Service {
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    35
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    36
    private NotificationManager notificationManager;
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    37
29
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
    38
    private IXMPPConnection connection;
19
213b84d2e743 Improve the service. It connect with a xmpp server running on the
Da Risk <darisk972@gmail.com>
parents: 18
diff changeset
    39
    private SharedPreferences settings;
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    40
    private String mLogin;
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    41
    private String mPassword;
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    42
    private String mHost;
21
b9f4a0ef574a Contact List OK.
marseille@marseille-desktop
parents: 19
diff changeset
    43
18
1063d4bde1aa commit pour test avec barbu
Da Risk <darisk972@gmail.com>
parents: 17
diff changeset
    44
    private IXMPPFacade.Stub bind = new IXMPPFacade.Stub() {
21
b9f4a0ef574a Contact List OK.
marseille@marseille-desktop
parents: 19
diff changeset
    45
29
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
    46
	@Override
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
    47
	public IXMPPConnection getXMPPConnection() throws RemoteException {
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
    48
	    return connection;
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
    49
	}
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    50
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    51
	@Override
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    52
	public void disconnect() throws RemoteException {
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    53
	    connection.disconnect();
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    54
	}
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    55
21
b9f4a0ef574a Contact List OK.
marseille@marseille-desktop
parents: 19
diff changeset
    56
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    57
	@Override
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    58
	public void connectAsync() throws RemoteException {
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    59
	    connection.connectAsync(mLogin, mPassword, "BEEM");
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    60
	}
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    61
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    62
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    63
	@Override
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    64
	public void connectSync() throws RemoteException {
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    65
	    connection.connectSync(mLogin, mPassword, "BEEM");
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    66
	}
18
1063d4bde1aa commit pour test avec barbu
Da Risk <darisk972@gmail.com>
parents: 17
diff changeset
    67
    };
21
b9f4a0ef574a Contact List OK.
marseille@marseille-desktop
parents: 19
diff changeset
    68
b9f4a0ef574a Contact List OK.
marseille@marseille-desktop
parents: 19
diff changeset
    69
    /*
b9f4a0ef574a Contact List OK.
marseille@marseille-desktop
parents: 19
diff changeset
    70
     * (non-Javadoc)
b9f4a0ef574a Contact List OK.
marseille@marseille-desktop
parents: 19
diff changeset
    71
     * 
17
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    72
     * @see android.app.Service#onBind(android.content.Intent)
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    73
     */
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    74
    @Override
29
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
    75
    public IBinder onBind(Intent intent) {
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    76
	showBasicNotification(R.string.BeemServiceCreated);
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    77
	return bind;
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    78
	// to forbid a client to bind
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    79
	// return null;
17
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    80
    }
21
b9f4a0ef574a Contact List OK.
marseille@marseille-desktop
parents: 19
diff changeset
    81
29
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
    82
    @Override
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
    83
    public void onCreate() {
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
    84
	super.onCreate();
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
    85
	settings = getSharedPreferences(getString(R.string.PreferenceFileName),
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
    86
		MODE_PRIVATE);
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    87
	mLogin = settings.getString(getString(R.string.PreferenceLoginKey), "");
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    88
	mPassword = settings.getString(
29
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
    89
		getString(R.string.PreferencePasswordKey), "");
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    90
	mHost = settings.getString(getString(R.string.PreferenceHostKey), "");
29
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
    91
	notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    92
	connection = new XMPPConnectionAdapter("10.0.2.2"); // address
17
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    93
    }
33
0e65d5f55d2f Merge with ui. Synchronous connection worked.
Da Risk <darisk972@gmail.com>
parents: 32 21
diff changeset
    94
    
17
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    95
    private void showBasicNotification(int stringResource) {
21
b9f4a0ef574a Contact List OK.
marseille@marseille-desktop
parents: 19
diff changeset
    96
        String text = (String) getText(stringResource);
b9f4a0ef574a Contact List OK.
marseille@marseille-desktop
parents: 19
diff changeset
    97
        Notification notif = new Notification(R.drawable.logo, text, System
b9f4a0ef574a Contact List OK.
marseille@marseille-desktop
parents: 19
diff changeset
    98
                .currentTimeMillis());
b9f4a0ef574a Contact List OK.
marseille@marseille-desktop
parents: 19
diff changeset
    99
        notif.defaults = Notification.DEFAULT_ALL;
b9f4a0ef574a Contact List OK.
marseille@marseille-desktop
parents: 19
diff changeset
   100
        notif.setLatestEventInfo(this, text, text, PendingIntent.getActivity(
b9f4a0ef574a Contact List OK.
marseille@marseille-desktop
parents: 19
diff changeset
   101
                this, 0, new Intent(), 0));
b9f4a0ef574a Contact List OK.
marseille@marseille-desktop
parents: 19
diff changeset
   102
        notificationManager.notify(stringResource, notif);
b9f4a0ef574a Contact List OK.
marseille@marseille-desktop
parents: 19
diff changeset
   103
        Toast toast = Toast.makeText(this, R.string.BeemServiceCreated,
b9f4a0ef574a Contact List OK.
marseille@marseille-desktop
parents: 19
diff changeset
   104
                Toast.LENGTH_LONG);
b9f4a0ef574a Contact List OK.
marseille@marseille-desktop
parents: 19
diff changeset
   105
        toast.show();
17
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
   106
    }
21
b9f4a0ef574a Contact List OK.
marseille@marseille-desktop
parents: 19
diff changeset
   107
19
213b84d2e743 Improve the service. It connect with a xmpp server running on the
Da Risk <darisk972@gmail.com>
parents: 18
diff changeset
   108
    @Override
213b84d2e743 Improve the service. It connect with a xmpp server running on the
Da Risk <darisk972@gmail.com>
parents: 18
diff changeset
   109
    public void onStart(Intent intent, int startId) {
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
   110
	try {
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
   111
	    connection.connectSync(mLogin, mPassword, "BEEM");
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
   112
	} catch (RemoteException e) {
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
   113
	    // TODO Auto-generated catch block
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
   114
	    e.printStackTrace();
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
   115
	}
19
213b84d2e743 Improve the service. It connect with a xmpp server running on the
Da Risk <darisk972@gmail.com>
parents: 18
diff changeset
   116
    }
21
b9f4a0ef574a Contact List OK.
marseille@marseille-desktop
parents: 19
diff changeset
   117
19
213b84d2e743 Improve the service. It connect with a xmpp server running on the
Da Risk <darisk972@gmail.com>
parents: 18
diff changeset
   118
    @Override
17
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
   119
    public void onDestroy() {
19
213b84d2e743 Improve the service. It connect with a xmpp server running on the
Da Risk <darisk972@gmail.com>
parents: 18
diff changeset
   120
	closeConnection();
29
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
   121
	showBasicNotification(R.string.BeemServiceDestroyed);
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
   122
    }
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
   123
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
   124
    private void closeConnection() {
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
   125
	if (connection != null)
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
   126
	    try {
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
   127
		connection.disconnect();
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
   128
	    } catch (RemoteException e) {
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
   129
		// TODO Auto-generated catch block
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
   130
		e.printStackTrace();
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents: 19
diff changeset
   131
	    }
17
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
   132
    }
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
   133
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
   134
}