fix some bugs + update jingle code in asmack default tip
authorNikita Kozlov <nikita@elyzion.net>
Wed, 06 Jun 2012 23:24:12 +0200
changeset 1005 a2cad81f348b
parent 1004 bcacb829dc28
fix some bugs + update jingle code in asmack
AndroidManifest.xml
libs/asmack-android-10-beem.jar
src/com/beem/project/beem/BeemService.java
src/com/beem/project/beem/jingle/JingleService.java
src/com/beem/project/beem/jingle/MicrophoneRTPManager.java
src/com/beem/project/beem/ui/Call.java
src/org/sipdroid/media/RtpStreamReceiver.java
src/org/sipdroid/media/RtpStreamSender.java
src/org/sipdroid/net/SipdroidSocket.java
--- a/AndroidManifest.xml	Tue Jun 05 16:44:38 2012 +0200
+++ b/AndroidManifest.xml	Wed Jun 06 23:24:12 2012 +0200
@@ -66,6 +66,9 @@
 	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
 	<uses-permission android:name="com.beem.project.beem.BEEM_SERVICE"/>
+	
+	<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
+	
 	<uses-feature name="android.hardware.touchscreen" required="false" />
 	<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="10" />
 	<supports-screens android:largeScreens="true"
Binary file libs/asmack-android-10-beem.jar has changed
--- a/src/com/beem/project/beem/BeemService.java	Tue Jun 05 16:44:38 2012 +0200
+++ b/src/com/beem/project/beem/BeemService.java	Wed Jun 06 23:24:12 2012 +0200
@@ -86,6 +86,7 @@
 import org.jivesoftware.smack.proxy.ProxyInfo;
 import org.jivesoftware.smack.proxy.ProxyInfo.ProxyType;
 import org.jivesoftware.smack.util.StringUtils;
+import org.jivesoftware.smackx.jingle.JingleManager;
 import org.jivesoftware.smackx.packet.ChatStateExtension;
 import org.jivesoftware.smackx.provider.DelayInfoProvider;
 import org.jivesoftware.smackx.provider.DiscoverInfoProvider;
@@ -231,6 +232,7 @@
 	}
 
 	configure(ProviderManager.getInstance());
+	//JingleManager.setJingleServiceEnabled();
 
 	mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
 
--- a/src/com/beem/project/beem/jingle/JingleService.java	Tue Jun 05 16:44:38 2012 +0200
+++ b/src/com/beem/project/beem/jingle/JingleService.java	Wed Jun 06 23:24:12 2012 +0200
@@ -102,7 +102,8 @@
      * @param conn the xmppConnection used with constructor
      */
     public void initWhenConntected(XMPPConnection conn) {
-	mJingleManager = new JingleManager(conn, mMediaManagers);
+    JingleManager.setJingleServiceEnabled();
+	mJingleManager = new JingleManager(conn, mMediaManagers);	
 	mJingleManager.addJingleSessionRequestListener(new BeemJingleSessionRequestListener());
     }
 
@@ -146,7 +147,8 @@
     public void acceptCall() throws RemoteException {
     	Log.d(TAG, "Accept Call");
 	try {
-	    mRequest.accept();
+	    mIn = mRequest.accept(mIn);
+	    mIn.addListener(new BeemJingleSessionListener());
 	    mIn.start();
 	} catch (XMPPException e) {
 	    e.printStackTrace();
@@ -167,20 +169,21 @@
 	mAudioSession = null;
 	if (isCaller) {
 	    try {
-		mOut.terminate("Cancelled");
+	   
+		mOut.terminate();
 		mOut.close();
 	    } catch (XMPPException e) {
 		e.printStackTrace();
 	    }
 	    mOut = null;
 	} else {
-	    try {
+	    //try {
 		mRequest.reject();
-		mIn.terminate();
-		mIn.close();		    
-	    } catch (XMPPException e) {
-		e.printStackTrace();
-	    }
+		//mIn.terminate();
+		//mIn.close();		    
+	    //} catch (XMPPException e) {
+		//e.printStackTrace();
+	    //}
 	    mIn = null;
 	}
     }
@@ -200,7 +203,7 @@
 
 	@Override
 	public void sessionClosed(String reason, JingleSession jingleSession) {
-	    System.out.println("Session " + jingleSession.getResponder() + " closed because " + reason);
+		Log.d(TAG, "Session " + jingleSession.getResponder() + " closed because " + reason);
 
 	    final int n = mRemoteJingleListeners.beginBroadcast();
 	    for (int i = 0; i < n; i++) {
@@ -216,7 +219,7 @@
 
 	@Override
 	public void sessionClosedOnError(XMPPException e, JingleSession jingleSession) {
-	    System.out.println("Session " + jingleSession.getResponder() + " closed");
+		Log.d(TAG, "Session " + jingleSession.getResponder() + " closed");
 
 	    final int n = mRemoteJingleListeners.beginBroadcast();
 	    for (int i = 0; i < n; i++) {
@@ -294,14 +297,14 @@
 	    try {
 		mIn = mJingleManager.createIncomingJingleSession(mRequest);
 		mIn.addListener(new BeemJingleSessionListener());
-		mIn.startIncoming();
+		//mIn.startIncoming();
 	    } catch (XMPPException e) {
 		e.printStackTrace();
 	    }
-	    System.out.println("Jingle Session request from " + request.getFrom());
+	    Log.d(TAG, "Jingle Session request from " + request.getFrom());
 	    isCaller = false;
 	    Intent intent = new Intent(mContext, Call.class);
-	    intent.setData(Uri.parse("jingle:"+request.getFrom()));
+	    intent.setData(Uri.parse("xmpp:"+request.getFrom()));
 	    intent.putExtra("isCaller", false);
 	    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 	    mContext.startActivity(intent);
--- a/src/com/beem/project/beem/jingle/MicrophoneRTPManager.java	Tue Jun 05 16:44:38 2012 +0200
+++ b/src/com/beem/project/beem/jingle/MicrophoneRTPManager.java	Wed Jun 06 23:24:12 2012 +0200
@@ -54,7 +54,6 @@
 import org.jivesoftware.smackx.jingle.nat.TransportCandidate;
 
 import android.content.Context;
-import android.provider.MediaStore.Audio;
 
 /**
  * RTPMediaManager, gere les payloads et renvoie une session RTP.
--- a/src/com/beem/project/beem/ui/Call.java	Tue Jun 05 16:44:38 2012 +0200
+++ b/src/com/beem/project/beem/ui/Call.java	Wed Jun 06 23:24:12 2012 +0200
@@ -56,6 +56,7 @@
 import android.os.IBinder;
 import android.os.RemoteException;
 import android.os.Vibrator;
+import android.util.Log;
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
@@ -83,6 +84,7 @@
     static {
 	SERVICE_INTENT.setComponent(new ComponentName("com.beem.project.beem", "com.beem.project.beem.BeemService"));
     }
+    private static final String TAG="Jingle/Call";
     private ImageView mLogo;
     private TextView mCallInfo;
     private Animation mRotateAnim;
@@ -94,6 +96,7 @@
     private Button mAcceptCall;
     private IJingle mJingle;
     private Intent mIntent;
+	private boolean mIsCaller;
 
     final static long[] vibratePattern = {0,1000,1000};
 
@@ -142,7 +145,8 @@
 	mRotateAnim = AnimationUtils.loadAnimation(this, R.anim.rotate_and_scale);
 	mCloseCall = (Button) findViewById(R.id.call_cancel_button);
 	mCloseCall.setOnClickListener(new ClickListener());
-	if (mIntent.getBooleanExtra("isCaller", false)) {
+	mIsCaller = mIntent.getBooleanExtra("isCaller", false);
+	if (mIsCaller) {
 	    mAcceptCall = (Button) findViewById(R.id.call_accept_button);
 	    mAcceptCall.setVisibility(View.GONE);
 	    call_state = UA_STATE_OUTGOING_CALL;
@@ -241,15 +245,16 @@
 		    mJingle.closeCall();
 		    stopRingtone();
 		    Call.call_state = UA_STATE_IDLE;
+		    finish();
 		} else if (v == mAcceptCall) {
 		    mJingle.acceptCall();
 		    stopRingtone();
 		    Call.call_state = UA_STATE_INCALL;
+		    mAcceptCall.setVisibility(View.GONE);
 		}
 	    } catch (RemoteException e) {
 		e.printStackTrace();
 	    }
-	    finish();
 	}
     }
 
@@ -282,7 +287,7 @@
 
 	@Override
 	public void sessionClosed(final String reason) {
-	    android.util.Log.d("TEST", "TEST " + reason);
+	    Log.d(TAG, "sessionClosed " + reason);
 	    Call.stopRingtone();
 	    call_state = UA_STATE_IDLE;
 	    mHandler.post(new RunnableChange(reason));
@@ -290,7 +295,7 @@
 
 	@Override
 	public void sessionDeclined(final String reason)  {
-	    android.util.Log.d("TEST", "TEST4 " + reason);
+	    Log.d(TAG, "sessionDeclined " + reason);
 	    Call.stopRingtone();
 	    call_state = UA_STATE_IDLE;
 	    mHandler.post(new RunnableChange(reason));
@@ -298,7 +303,7 @@
 
 	@Override
 	public void sessionClosedOnError(final String error) {
-	    android.util.Log.d("TEST", "TEST5 " + error);
+	    Log.d(TAG, "sessionClosedOnError " + error);
 	    Call.stopRingtone();
 	    call_state = UA_STATE_IDLE;
 	    mHandler.post(new RunnableChange(error));
@@ -306,7 +311,7 @@
 
 	@Override
 	public void sessionEstablished() {
-	    android.util.Log.d("TEST", "TEST2 ");
+	    Log.d(TAG, "sessionEstablished ");
 	    call_state = UA_STATE_INCALL;
 	    Call.stopRingtone();
 	    mHandler.post(new RunnableChange("established"));
@@ -314,7 +319,7 @@
 
 	@Override
 	public void sessionRequested(final String fromJID) {
-	    android.util.Log.d("TEST", "TEST3 " + fromJID);
+	    Log.d(TAG, "sessionRequested " + fromJID);
 	    mHandler.post(new RunnableChange(fromJID));
 	}
     }
@@ -338,8 +343,10 @@
 	    try {
 		mJingle = mXmppFacade.getJingleService();
 		mJingle.addJingleListener(mJingleListener);
+		if (mIsCaller) {
 		mContact = new Contact(getIntent().getData());
 		mJingle.call(mContact.getJIDWithRes());
+		}
 	    } catch (RemoteException e) {
 		e.printStackTrace();
 	    }
--- a/src/org/sipdroid/media/RtpStreamReceiver.java	Tue Jun 05 16:44:38 2012 +0200
+++ b/src/org/sipdroid/media/RtpStreamReceiver.java	Wed Jun 06 23:24:12 2012 +0200
@@ -24,24 +24,22 @@
 import java.io.IOException;
 import java.net.SocketException;
 
-import com.beem.project.beem.jingle.JingleService;
-import com.beem.project.beem.ui.Call;
 import org.sipdroid.net.RtpPacket;
 import org.sipdroid.net.RtpSocket;
 import org.sipdroid.net.SipdroidSocket;
 import org.sipdroid.pjlib.Codec;
 
-import android.content.ContentResolver;
 import android.content.Context;
 import android.content.SharedPreferences.Editor;
 import android.media.AudioFormat;
 import android.media.AudioManager;
 import android.media.AudioTrack;
 import android.media.ToneGenerator;
-import android.os.PowerManager;
 import android.os.RemoteException;
 import android.preference.PreferenceManager;
-import android.provider.Settings;
+
+import com.beem.project.beem.jingle.JingleService;
+import com.beem.project.beem.ui.Call;
 
 /**
  * RtpStreamReceiver is a generic stream receiver. It receives packets from RTP
@@ -67,7 +65,6 @@
     /** Whether it is running */
     private boolean running;
     private AudioManager am;
-    private ContentResolver cr;
     public static int speakermode;
     private JingleService mJingle;
 
@@ -194,12 +191,9 @@
 	    int oldvibrate2 = am.getVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION);
 	    if (!PreferenceManager.getDefaultSharedPreferences(Call.mContext).contains("oldvibrate2"))
 		oldvibrate2 = AudioManager.VIBRATE_SETTING_ON;
-	    int oldpolicy = android.provider.Settings.System.getInt(cr, android.provider.Settings.System.WIFI_SLEEP_POLICY, 
-		Settings.System.WIFI_SLEEP_POLICY_DEFAULT);
 	    Editor edit = PreferenceManager.getDefaultSharedPreferences(Call.mContext).edit();
 	    edit.putInt("oldvibrate", oldvibrate);
 	    edit.putInt("oldvibrate2", oldvibrate2);
-	    edit.putInt("oldpolicy", oldpolicy);
 	    edit.putInt("oldring",am.getStreamVolume(AudioManager.STREAM_RING));
 	    edit.putBoolean("oldvalid", true);
 	    edit.commit();
@@ -223,21 +217,14 @@
     public static void restoreSettings() {
 	if (PreferenceManager.getDefaultSharedPreferences(Call.mContext).getBoolean("oldvalid",true)) {
 	    AudioManager am = (AudioManager) Call.mContext.getSystemService(Context.AUDIO_SERVICE);
-	    ContentResolver cr = Call.mContext.getContentResolver();
 	    int oldvibrate = PreferenceManager.getDefaultSharedPreferences(Call.mContext).getInt("oldvibrate",0);
 	    int oldvibrate2 = PreferenceManager.getDefaultSharedPreferences(Call.mContext).getInt("oldvibrate2",0);
-	    int oldpolicy = PreferenceManager.getDefaultSharedPreferences(Call.mContext).getInt("oldpolicy",0);
 	    am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,oldvibrate);
 	    am.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,oldvibrate2);
-	    Settings.System.putInt(cr, Settings.System.WIFI_SLEEP_POLICY, oldpolicy);
 	    setStreamVolume(AudioManager.STREAM_RING, PreferenceManager.getDefaultSharedPreferences(Call.mContext).getInt("oldring",0), 0);
 	    Editor edit = PreferenceManager.getDefaultSharedPreferences(Call.mContext).edit();
 	    edit.putBoolean("oldvalid", false);
 	    edit.commit();
-	    PowerManager pm = (PowerManager) Call.mContext.getSystemService(Context.POWER_SERVICE);
-	    PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK |
-		PowerManager.ACQUIRE_CAUSES_WAKEUP, "Sipdroid.RtpStreamReceiver");
-	    wl.acquire(1000);
 	}
 	restoreMode();
     }
@@ -288,9 +275,8 @@
 
 	android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_AUDIO);
 	am = (AudioManager) Call.mContext.getSystemService(Context.AUDIO_SERVICE);
-	cr = Call.mContext.getContentResolver();
+	Call.mContext.getContentResolver();
 	saveSettings();
-	Settings.System.putInt(cr, Settings.System.WIFI_SLEEP_POLICY,Settings.System.WIFI_SLEEP_POLICY_NEVER);
 	am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_OFF);
 	am.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,AudioManager.VIBRATE_SETTING_OFF);
 	int oldvol = am.getStreamVolume(AudioManager.STREAM_MUSIC);
--- a/src/org/sipdroid/media/RtpStreamSender.java	Tue Jun 05 16:44:38 2012 +0200
+++ b/src/org/sipdroid/media/RtpStreamSender.java	Wed Jun 06 23:24:12 2012 +0200
@@ -26,16 +26,10 @@
 import java.net.InetAddress;
 import java.util.Random;
 
-
-import org.sipdroid.pjlib.Codec;
-
-import org.sipdroid.media.RtpStreamReceiver;
 import org.sipdroid.net.RtpPacket;
 import org.sipdroid.net.RtpSocket;
 import org.sipdroid.net.SipdroidSocket;
-
-import com.beem.project.beem.ui.Call;
-import com.beem.project.beem.utils.BeemConnectivity;
+import org.sipdroid.pjlib.Codec;
 
 import android.content.Context;
 import android.media.AudioFormat;
@@ -43,9 +37,10 @@
 import android.media.AudioRecord;
 import android.media.MediaRecorder;
 import android.preference.PreferenceManager;
-import android.provider.Settings;
 import android.telephony.TelephonyManager;
 
+import com.beem.project.beem.ui.Call;
+
 /**
  * RtpStreamSender is a generic stream sender. It takes an InputStream and sends
  * it through RTP.
--- a/src/org/sipdroid/net/SipdroidSocket.java	Tue Jun 05 16:44:38 2012 +0200
+++ b/src/org/sipdroid/net/SipdroidSocket.java	Wed Jun 06 23:24:12 2012 +0200
@@ -78,7 +78,7 @@
 	if (!loaded) super.connect(addr,port);
     }
 
-    static {
+    /*static {
 	try {
 	    System.loadLibrary("OSNetworkSystem");
 	    OSNetworkSystem.getOSNetworkSystem().oneTimeInitialization(true);
@@ -86,5 +86,5 @@
 	} catch (Throwable e) {
 	    e.printStackTrace();
 	}
-    }
+    }*/
 }