--- a/src/com/beem/project/beem/BeemService.java Wed Sep 16 15:38:12 2009 +0200
+++ b/src/com/beem/project/beem/BeemService.java Thu Sep 17 10:46:45 2009 +0200
@@ -1,25 +1,18 @@
package com.beem.project.beem;
import org.jivesoftware.smack.ConnectionConfiguration;
-import org.jivesoftware.smack.PacketListener;
import org.jivesoftware.smack.Roster;
-import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.ConnectionConfiguration.SecurityMode;
import org.jivesoftware.smack.Roster.SubscriptionMode;
-import org.jivesoftware.smack.filter.PacketFilter;
-import org.jivesoftware.smack.packet.Packet;
-import org.jivesoftware.smack.packet.Presence;
import org.jivesoftware.smack.proxy.ProxyInfo;
import org.jivesoftware.smack.proxy.ProxyInfo.ProxyType;
import org.jivesoftware.smack.util.StringUtils;
import android.app.Notification;
import android.app.NotificationManager;
-import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.content.SharedPreferences;
-import android.content.SharedPreferences.Editor;
import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;
@@ -28,9 +21,7 @@
import com.beem.project.beem.jingle.JingleService;
import com.beem.project.beem.service.XmppConnectionAdapter;
import com.beem.project.beem.service.XmppFacade;
-import com.beem.project.beem.service.aidl.IBeemConnectionListener;
import com.beem.project.beem.service.aidl.IXmppFacade;
-import com.beem.project.beem.ui.Subscription;
/**
* This class is for the Beem service. The connection to the xmpp server will be made asynchronously when the service
@@ -76,7 +67,6 @@
* Initialise la configuration de la connexion.
*/
private void initConnectionConfig() {
- // TODO mettre a false par defaut et remplacer les valeurs par defaut
java.security.Security.addProvider(new com.sun.security.sasl.Provider());
mUseProxy = mSettings.getBoolean(getString(R.string.settings_key_proxy_use), false);
if (mUseProxy) {
@@ -108,116 +98,6 @@
}
/**
- * Initialize the listener for Roster request.
- */
- private void initRosterRequestListener() {
- Roster.setDefaultSubscriptionMode(SubscriptionMode.manual);
- final XMPPConnection con = mConnection.getAdaptee();
- try {
- // l'ajout d'un packet listener ne peut etre effectuer que lorsqu'on est connecte au
- // serveur
- mConnection.addConnectionListener(new IBeemConnectionListener.Stub() {
-
- @Override
- public void connectionClosed() throws RemoteException {
- Log.i("BeemService", "connectionClosed()");
- }
-
- @Override
- public void connectionClosedOnError() throws RemoteException {
- Log.i("BeemService", "connectionClosedOnError()");
-
- }
-
- @Override
- public void connectionFailed(String errorMsg) throws RemoteException {
- Log.i("BeemService", "connectionFailed()");
-
- }
-
- @Override
- public void onConnect() throws RemoteException {
- mJingle.initWhenConntected(mConnection.getAdaptee());
- PacketFilter filter = new PacketFilter() {
-
- @Override
- public boolean accept(Packet packet) {
- if (packet instanceof Presence) {
- Presence pres = (Presence) packet;
- if (pres.getType() == Presence.Type.subscribe)
- return true;
- }
- return false;
- }
- };
- con.addPacketListener(new PacketListener() {
-
- @Override
- public void processPacket(Packet packet) {
- String from = packet.getFrom();
- Notification notif = new Notification(com.beem.project.beem.R.drawable.signal,
- "Demande d'ajout", System.currentTimeMillis());
- notif.defaults = Notification.DEFAULT_ALL;
- notif.flags = Notification.FLAG_AUTO_CANCEL;
- Intent intent = new Intent(BeemService.this, Subscription.class);
- intent.putExtra("from", from);
- notif.setLatestEventInfo(BeemService.this, from, "demande d'ajout de " + from,
- PendingIntent.getActivity(BeemService.this, 0, intent, PendingIntent.FLAG_ONE_SHOT));
- int id = packet.hashCode();
- sendNotification(id, notif);
- }
- }, filter);
- // set status connect in the preferences
- // private static final int AVAILABLE_IDX = 5;
- Editor edit = mSettings.edit();
- edit.putInt(getString(R.string.PreferenceStatus), 1);
- edit.commit();
- }
-
- @Override
- public void reconnectingIn(int seconds) throws RemoteException {
- Log.i("BeemService", "reconnectingIn()");
-
- }
-
- @Override
- public void reconnectionFailed() throws RemoteException {
- Log.i("BeemService", "reconnectionFailed()");
-
- }
-
- @Override
- public void reconnectionSuccessful() throws RemoteException {
- Log.i("BeemService", "reconnectionSuccessful()");
- PacketFilter filter = new PacketFilter() {
-
- @Override
- public boolean accept(Packet packet) {
- if (packet instanceof Presence) {
- Presence pres = (Presence) packet;
- if (pres.getType() == Presence.Type.subscribe)
- return true;
- }
- return false;
- }
- };
- con.addPacketListener(new PacketListener() {
-
- @Override
- public void processPacket(Packet packet) {
- // TODO Auto-generated method stub
- Log.d("TEST", "Une demande recue");
- }
- }, filter);
- }
- });
- } catch (RemoteException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
-
- /**
* {@inheritDoc}
*/
@Override
@@ -239,7 +119,6 @@
mHost = mSettings.getString(getString(R.string.settings_key_xmpp_server), "");
mPort = Integer.parseInt(mSettings.getString(getString(R.string.settings_key_xmpp_port), "5222"));
- Log.i("BEEEMSERVICE", mLogin);
/*
* Gestion pour gmail.
*/
@@ -253,7 +132,7 @@
mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
mConnection = new XmppConnectionAdapter(mConnectionConfiguration, mLogin, mPassword, this);
mJingle = new JingleService(mConnection.getAdaptee());
- initRosterRequestListener();
+ Roster.setDefaultSubscriptionMode(SubscriptionMode.manual);
mBind = new XmppFacade(mConnection, this, mJingle);
}
@@ -277,7 +156,6 @@
try {
mConnection.connectAsync();
} catch (RemoteException e) {
- // TODO Auto-generated catch block
e.printStackTrace();
}
}
--- a/src/com/beem/project/beem/jingle/JingleService.java Wed Sep 16 15:38:12 2009 +0200
+++ b/src/com/beem/project/beem/jingle/JingleService.java Thu Sep 17 10:46:45 2009 +0200
@@ -37,6 +37,9 @@
mMediaManagers = new ArrayList<JingleMediaManager>();
mMediaManagers.add(new MicrophoneRTPManager(bt));
+ mJingleManager = new JingleManager(xmppConnection, mMediaManagers);
+ mJingleManager.addJingleSessionRequestListener(new BeemJingleSessionRequestListener());
+
}
/**
--- a/src/com/beem/project/beem/service/XmppConnectionAdapter.java Wed Sep 16 15:38:12 2009 +0200
+++ b/src/com/beem/project/beem/service/XmppConnectionAdapter.java Thu Sep 17 10:46:45 2009 +0200
@@ -1,18 +1,22 @@
-/**
- *
- */
package com.beem.project.beem.service;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.ConnectionListener;
+import org.jivesoftware.smack.PacketListener;
import org.jivesoftware.smack.PrivacyListManager;
import org.jivesoftware.smack.Roster;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
+import org.jivesoftware.smack.filter.PacketFilter;
+import org.jivesoftware.smack.packet.Packet;
+import org.jivesoftware.smack.packet.Presence;
import org.jivesoftware.smackx.ChatStateManager;
import org.jivesoftware.smackx.ServiceDiscoveryManager;
import org.jivesoftware.smackx.jingle.JingleManager;
+import android.app.Notification;
+import android.app.PendingIntent;
+import android.content.Intent;
import android.os.RemoteCallbackList;
import android.os.RemoteException;
import android.util.Log;
@@ -22,6 +26,7 @@
import com.beem.project.beem.service.aidl.IChatManager;
import com.beem.project.beem.service.aidl.IRoster;
import com.beem.project.beem.service.aidl.IXmppConnection;
+import com.beem.project.beem.ui.Subscription;
/**
* This class implements an adapter for XMPPConnection.
@@ -37,7 +42,8 @@
private RosterAdapter mRoster;
private PrivacyListManagerAdapter mPrivacyList;
private BeemService mService;
- private RemoteCallbackList<IBeemConnectionListener> mRemoteConnListeners = new RemoteCallbackList<IBeemConnectionListener>();
+ private RemoteCallbackList<IBeemConnectionListener> mRemoteConnListeners =
+ new RemoteCallbackList<IBeemConnectionListener>();
private ConnexionListenerAdapter mConListener = new ConnexionListenerAdapter();
@@ -46,9 +52,10 @@
* @param config Configuration to use in order to connect
* @param login login to use on connect
* @param password password to use on connect
+ *
*/
public XmppConnectionAdapter(final ConnectionConfiguration config, final String login, final String password,
- BeemService service) {
+ final BeemService service) {
this(new XMPPConnection(config), login, password, service);
}
@@ -59,7 +66,7 @@
* @param password password to use on connect
*/
public XmppConnectionAdapter(final String serviceName, final String login, final String password,
- BeemService service) {
+ final BeemService service) {
this(new XMPPConnection(serviceName), login, password, service);
}
@@ -70,7 +77,7 @@
* @param password The password to use
*/
public XmppConnectionAdapter(final XMPPConnection con, final String login, final String password,
- BeemService service) {
+ final BeemService service) {
mAdaptee = con;
PrivacyListManager.getInstanceFor(mAdaptee);
mLogin = login;
@@ -303,6 +310,42 @@
* Method to execute when a connection event occurs.
*/
public void onConnect() {
+ PacketFilter filter = new PacketFilter() {
+
+ @Override
+ public boolean accept(Packet packet) {
+ if (packet instanceof Presence) {
+ Presence pres = (Presence) packet;
+ if (pres.getType() == Presence.Type.subscribe)
+ return true;
+ }
+ return false;
+ }
+ };
+
+ mAdaptee.addPacketListener(new PacketListener() {
+
+ @Override
+ public void processPacket(Packet packet) {
+ String from = packet.getFrom();
+ Notification notif = new Notification(com.beem.project.beem.R.drawable.signal,
+ "Demande d'ajout", System.currentTimeMillis());
+ notif.defaults = Notification.DEFAULT_ALL;
+ notif.flags = Notification.FLAG_AUTO_CANCEL;
+ Intent intent = new Intent(mService, Subscription.class);
+ intent.putExtra("from", from);
+ notif.setLatestEventInfo(mService, from, "demande d'ajout de " + from,
+ PendingIntent.getActivity(mService, 0, intent, PendingIntent.FLAG_ONE_SHOT));
+ int id = packet.hashCode();
+ mService.sendNotification(id, notif);
+ }
+ }, filter);
+
+ /* Editor edit = mSettings.edit();
+ edit.putInt(getString(R.string.PreferenceStatus), 1);
+ edit.commit();*/
+
+
final int n = mRemoteConnListeners.beginBroadcast();
for (int i = 0; i < n; i++) {
@@ -366,6 +409,38 @@
*/
@Override
public void reconnectionSuccessful() {
+ PacketFilter filter = new PacketFilter() {
+
+ @Override
+ public boolean accept(Packet packet) {
+ if (packet instanceof Presence) {
+ Presence pres = (Presence) packet;
+ if (pres.getType() == Presence.Type.subscribe)
+ return true;
+ }
+ return false;
+ }
+ };
+
+ mAdaptee.addPacketListener(new PacketListener() {
+
+ @Override
+ public void processPacket(Packet packet) {
+ String from = packet.getFrom();
+ Notification notif = new Notification(com.beem.project.beem.R.drawable.signal,
+ "Demande d'ajout", System.currentTimeMillis());
+ notif.defaults = Notification.DEFAULT_ALL;
+ notif.flags = Notification.FLAG_AUTO_CANCEL;
+ Intent intent = new Intent(mService, Subscription.class);
+ intent.putExtra("from", from);
+ notif.setLatestEventInfo(mService, from, "demande d'ajout de " + from,
+ PendingIntent.getActivity(mService, 0, intent, PendingIntent.FLAG_ONE_SHOT));
+ int id = packet.hashCode();
+ mService.sendNotification(id, notif);
+ }
+ }, filter);
+
+
final int n = mRemoteConnListeners.beginBroadcast();
for (int i = 0; i < n; i++) {