# HG changeset patch # User Nikita Kozlov # Date 1253788217 -7200 # Node ID 76d505cbe7db61f87030ce92c9186a953b298fb1 # Parent 295cc30ae84a38af02925a69153e0fe6a0b0d6b4# Parent 7bdff12f2ecb8a1b283dfd2e90b67a918aac4b2b merge diff -r 295cc30ae84a -r 76d505cbe7db src/com/beem/project/beem/BeemService.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(); } } diff -r 295cc30ae84a -r 76d505cbe7db src/com/beem/project/beem/jingle/JingleService.java --- 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(); mMediaManagers.add(new MicrophoneRTPManager(bt)); + mJingleManager = new JingleManager(xmppConnection, mMediaManagers); + mJingleManager.addJingleSessionRequestListener(new BeemJingleSessionRequestListener()); + } /** diff -r 295cc30ae84a -r 76d505cbe7db src/com/beem/project/beem/service/XmppConnectionAdapter.java --- 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++) {