# HG changeset patch # User Nikita Kozlov # Date 1253177205 -7200 # Node ID 7bdff12f2ecb8a1b283dfd2e90b67a918aac4b2b # Parent 13356aeb873c1aa165c43214eb152eb852adcbc1 bundle diff -r 13356aeb873c -r 7bdff12f2ecb src/com/beem/project/beem/BeemService.java --- 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(); } } diff -r 13356aeb873c -r 7bdff12f2ecb src/com/beem/project/beem/jingle/JingleService.java --- 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(); mMediaManagers.add(new MicrophoneRTPManager(bt)); + mJingleManager = new JingleManager(xmppConnection, mMediaManagers); + mJingleManager.addJingleSessionRequestListener(new BeemJingleSessionRequestListener()); + } /** diff -r 13356aeb873c -r 7bdff12f2ecb src/com/beem/project/beem/service/XmppConnectionAdapter.java --- 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 mRemoteConnListeners = new RemoteCallbackList(); + private RemoteCallbackList mRemoteConnListeners = + new RemoteCallbackList(); 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++) {