merge
authorNikita Kozlov <nikita@beem-project.com>
Thu, 24 Sep 2009 12:30:17 +0200
changeset 376 76d505cbe7db
parent 374 295cc30ae84a (current diff)
parent 375 7bdff12f2ecb (diff)
child 377 5f60caa9f85c
merge
src/com/beem/project/beem/jingle/JingleService.java
src/com/beem/project/beem/service/XmppConnectionAdapter.java
--- a/src/com/beem/project/beem/BeemService.java	Thu Sep 24 14:06:24 2009 +0200
+++ b/src/com/beem/project/beem/BeemService.java	Thu Sep 24 12:30:17 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	Thu Sep 24 14:06:24 2009 +0200
+++ b/src/com/beem/project/beem/jingle/JingleService.java	Thu Sep 24 12:30:17 2009 +0200
@@ -40,6 +40,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	Thu Sep 24 14:06:24 2009 +0200
+++ b/src/com/beem/project/beem/service/XmppConnectionAdapter.java	Thu Sep 24 12:30:17 2009 +0200
@@ -1,19 +1,23 @@
-/**
- *
- */
 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.PacketListener;
+
+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;
@@ -23,6 +27,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.
@@ -322,6 +327,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++) {
@@ -385,6 +426,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++) {