diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 9f617af4f..4ae956218 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -113,6 +113,7 @@
+
diff --git a/libs/armeabi-v7a/liblinphone.so b/libs/armeabi-v7a/liblinphone.so
index aa455a81b..418e0c751 100755
Binary files a/libs/armeabi-v7a/liblinphone.so and b/libs/armeabi-v7a/liblinphone.so differ
diff --git a/libs/armeabi/liblinphone.so b/libs/armeabi/liblinphone.so
index 6406125bf..4a3f3bfe7 100755
Binary files a/libs/armeabi/liblinphone.so and b/libs/armeabi/liblinphone.so differ
diff --git a/src/org/linphone/DialerActivity.java b/src/org/linphone/DialerActivity.java
index 3f2aabadb..86d72b50b 100644
--- a/src/org/linphone/DialerActivity.java
+++ b/src/org/linphone/DialerActivity.java
@@ -18,6 +18,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
package org.linphone;
+import java.io.IOException;
+
import org.linphone.component.ToggleImageButton;
import org.linphone.component.ToggleImageButton.OnCheckedChangeListener;
import org.linphone.core.AndroidCameraRecord;
@@ -39,10 +41,15 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.media.AudioManager;
+import android.media.MediaPlayer;
+import android.media.Ringtone;
+import android.media.RingtoneManager;
import android.os.Build;
import android.os.Bundle;
import android.os.PowerManager;
+import android.os.Vibrator;
import android.preference.PreferenceManager;
+import android.provider.Settings;
import android.text.Html;
import android.util.Log;
import android.view.MotionEvent;
@@ -101,6 +108,11 @@ public class DialerActivity extends Activity implements LinphoneCoreListener {
private static String CURRENT_ADDRESS = "org.linphone.current-address";
private static String CURRENT_DISPLAYNAME = "org.linphone.current-displayname";
static int VIDEO_VIEW_ACTIVITY = 100;
+
+ Settings.System mSystemSettings = new Settings.System();
+ MediaPlayer mRingerPlayer;
+ LinphoneCall.State mCurrentCallState;
+ Vibrator mVibrator;
/**
*
* @return null if not ready yet
@@ -122,6 +134,7 @@ public class DialerActivity extends Activity implements LinphoneCoreListener {
setContentView(R.layout.dialer);
mAudioManager = ((AudioManager)getSystemService(Context.AUDIO_SERVICE));
PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
+ mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK|PowerManager.ON_AFTER_RELEASE,"Linphone");
mPref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
@@ -227,6 +240,7 @@ public class DialerActivity extends Activity implements LinphoneCoreListener {
if (LinphoneService.isready()) {
LinphoneCore lLinphoneCore = LinphoneService.instance().getLinphoneCore();
if (lLinphoneCore.isIncall()) {
+ mCurrentCallState = lLinphoneCore.getCurrentCall().getState();
if(lLinphoneCore.isInComingInvitePending()) {
callPending();
} else {
@@ -352,6 +366,7 @@ public class DialerActivity extends Activity implements LinphoneCoreListener {
// TODO Auto-generated method stub
super.onDestroy();
if (mWakeLock.isHeld()) mWakeLock.release();
+ theDialer=null;
}
@Override
protected void onResume() {
@@ -428,6 +443,10 @@ public class DialerActivity extends Activity implements LinphoneCoreListener {
public void registrationState(final LinphoneCore lc, final LinphoneProxyConfig cfg,final LinphoneCore.RegistrationState state,final String smessage) {/*nop*/};
public void callState(final LinphoneCore lc,final LinphoneCall call, final State state, final String message) {
+ if (mCurrentCallState == LinphoneCall.State.IncomingReceived) {
+ //previous state was ringing, so stop ringing
+ stoptRinging();
+ }
if (state == LinphoneCall.State.OutgoingInit) {
mWakeLock.acquire();
enterIncalMode(lc);
@@ -455,6 +474,7 @@ public class DialerActivity extends Activity implements LinphoneCoreListener {
finishActivity(VIDEO_VIEW_ACTIVITY);
}
}
+ mCurrentCallState = state;
}
public void show(LinphoneCore lc) {
@@ -530,6 +550,7 @@ public class DialerActivity extends Activity implements LinphoneCoreListener {
boolean prefVideoEnable = mPref.getBoolean(getString(R.string.pref_video_enable_key), false);
boolean prefAutomaticallyShareMyCamera = mPref.getBoolean(getString(R.string.pref_video_automatically_share_my_video_key), false);
AndroidCameraRecord.setMuteCamera(!(prefVideoEnable && prefAutomaticallyShareMyCamera));
+ startRinging();
}
public void newOutgoingCall(String aTo) {
newOutgoingCall(aTo,null);
@@ -645,5 +666,39 @@ public class DialerActivity extends Activity implements LinphoneCoreListener {
// TODO Auto-generated method stub
}
+ private synchronized void startRinging() {
+ try {
+ if (mAudioManager.shouldVibrate(AudioManager.VIBRATE_TYPE_RINGER) && mVibrator !=null) {
+ long[] patern = {0,1000,1000};
+ mVibrator.vibrate(patern, 1);
+ }
+ if (mRingerPlayer == null) {
+ //mRingerPlayer = MediaPlayer.create(getApplicationContext(), RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE));
+ mRingerPlayer = new MediaPlayer();
+ mRingerPlayer.setAudioStreamType(AudioManager.STREAM_RING);
+ mRingerPlayer.setDataSource(getApplicationContext(), RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE));
+ mRingerPlayer.prepare();
+ //mRingerPlayer.setVolume(mAudioManager.getStreamVolume(AudioManager.STREAM_RING),mAudioManager.getStreamVolume(AudioManager.STREAM_RING));
+ mRingerPlayer.setLooping(true);
+ mRingerPlayer.start();
+ } else {
+ Log.w(LinphoneService.TAG,"already ringing");
+ }
+ } catch (Exception e) {
+ Log.e(LinphoneService.TAG, "cannot handle incoming call",e);
+ }
+
+ }
+ private synchronized void stoptRinging() {
+ if (mRingerPlayer !=null) {
+ mRingerPlayer.stop();
+ mRingerPlayer.release();
+ mRingerPlayer=null;
+ }
+ if (mVibrator!=null) {
+ mVibrator.cancel();
+ }
+ }
+
}
diff --git a/src/org/linphone/LinphoneService.java b/src/org/linphone/LinphoneService.java
index 8045f74e2..2ba80da49 100644
--- a/src/org/linphone/LinphoneService.java
+++ b/src/org/linphone/LinphoneService.java
@@ -49,11 +49,13 @@ import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
+import android.media.MediaPlayer;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Handler;
import android.os.IBinder;
import android.preference.PreferenceManager;
+import android.provider.Settings;
import android.util.Log;
public class LinphoneService extends Service implements LinphoneCoreListener {
@@ -79,6 +81,7 @@ public class LinphoneService extends Service implements LinphoneCoreListener {
final int IC_LEVEL_ORANGE=0;
final int IC_LEVEL_GREEN=1;
final int IC_LEVEL_RED=2;
+
private Handler mHandler = new Handler() ;
static boolean isready() {
@@ -117,6 +120,7 @@ public class LinphoneService extends Service implements LinphoneCoreListener {
, null);
mLinphoneCore.setPlaybackGain(3);
+ mLinphoneCore.setRing(null);
try {
initFromConf();
@@ -237,22 +241,19 @@ public class LinphoneService extends Service implements LinphoneCoreListener {
, mNofificationContentIntent);
mNotificationManager.notify(NOTIFICATION_ID, mNotification);
}
- if (DialerActivity.getDialer()!=null) {
- mHandler.post(new Runnable() {
- public void run() {
- DialerActivity.getDialer().registrationState(lc,cfg,state,smessage);
- }
- });
- }
+ mHandler.post(new Runnable() {
+ public void run() {
+ if (DialerActivity.getDialer()!=null) DialerActivity.getDialer().registrationState(lc,cfg,state,smessage);
+ }
+ });
}
public void callState(final LinphoneCore lc,final LinphoneCall call, final State state, final String message) {
- if (DialerActivity.getDialer()!=null) {
- mHandler.post(new Runnable() {
- public void run() {
- DialerActivity.getDialer().callState(lc,call,state,message);
- }
- });
- }
+ Log.i(TAG, "new state ["+state+"]");
+ mHandler.post(new Runnable() {
+ public void run() {
+ if (DialerActivity.getDialer()!=null) DialerActivity.getDialer().callState(lc,call,state,message);
+ }
+ });
if (state == LinphoneCall.State.IncomingReceived) {
//wakeup linphone
Intent lIntent = new Intent();
@@ -347,6 +348,7 @@ public class LinphoneService extends Service implements LinphoneCoreListener {
//proxy
+ mLinphoneCore.clearProxyConfigs();
String lProxy = mPref.getString(getString(R.string.pref_proxy_key),null);
if (lProxy == null || lProxy.length() == 0) {
lProxy = "sip:"+lDomain;
@@ -432,5 +434,6 @@ public class LinphoneService extends Service implements LinphoneCoreListener {
}
+
}
diff --git a/src/org/linphone/core/LinphoneCoreImpl.java b/src/org/linphone/core/LinphoneCoreImpl.java
index 532a7ae2c..f0f4dc15d 100644
--- a/src/org/linphone/core/LinphoneCoreImpl.java
+++ b/src/org/linphone/core/LinphoneCoreImpl.java
@@ -85,6 +85,9 @@ class LinphoneCoreImpl implements LinphoneCore {
private native void setDownloadBandwidth(long nativePtr, int bw);
private native void setPreferredVideoSize(long nativePtr, int width, int heigth);
private native int[] getPreferredVideoSize(long nativePtr);
+
+ private native void setRing(long nativePtr, String path);
+ private native String getRing(long nativePtr);
private static String TAG = "LinphoneCore";
@@ -382,6 +385,7 @@ class LinphoneCoreImpl implements LinphoneCore {
return updateCall(nativePtr, ptrCall, ptrParams);
}
+<<<<<<< HEAD
public void setUploadBandwidth(int bw) {
@@ -404,5 +408,12 @@ class LinphoneCoreImpl implements LinphoneCore {
vSize.setHeight(nativeSize[1]);
return vSize;
+=======
+ public void setRing(String path) {
+ setRing(nativePtr, path);
+ }
+ public String getRing() {
+ return getRing(nativePtr);
+>>>>>>> c95431295dc09c5558d38c6de49fa071c957d926
}
}
diff --git a/src/org/linphone/core/LinphoneProxyConfigImpl.java b/src/org/linphone/core/LinphoneProxyConfigImpl.java
index 7ffb164b2..f1dcb70a4 100644
--- a/src/org/linphone/core/LinphoneProxyConfigImpl.java
+++ b/src/org/linphone/core/LinphoneProxyConfigImpl.java
@@ -18,9 +18,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
package org.linphone.core;
-import org.linphone.LinphoneService;
-
-import android.util.Log;
@@ -35,7 +32,6 @@ class LinphoneProxyConfigImpl implements LinphoneProxyConfig {
setProxy(proxy);
enableRegister(enableRegister);
ownPtr=true;
- Log.w(LinphoneService.TAG, "route ["+route+"] not used yet");
}
protected LinphoneProxyConfigImpl(long aNativePtr) {
nativePtr = aNativePtr;
diff --git a/src/org/linphone/core/tutorials/TutorialBuddyStatusActivity.java b/src/org/linphone/core/tutorials/TutorialBuddyStatusActivity.java
index 376afadfb..d42607d16 100644
--- a/src/org/linphone/core/tutorials/TutorialBuddyStatusActivity.java
+++ b/src/org/linphone/core/tutorials/TutorialBuddyStatusActivity.java
@@ -36,7 +36,7 @@ import android.widget.TextView;
*/
public class TutorialBuddyStatusActivity extends Activity {
- private static final String defaultSipAddress = "sip:tested@10.0.2.6:5059";
+ private static final String defaultSipAddress = "sip:";
private TextView sipAddressWidget;
private TutorialBuddyStatus tutorial;
private Handler mHandler = new Handler() ;
diff --git a/src/org/linphone/core/tutorials/TutorialChatRoomActivity.java b/src/org/linphone/core/tutorials/TutorialChatRoomActivity.java
index aa4623eeb..f7dab4ce7 100644
--- a/src/org/linphone/core/tutorials/TutorialChatRoomActivity.java
+++ b/src/org/linphone/core/tutorials/TutorialChatRoomActivity.java
@@ -36,7 +36,7 @@ import android.widget.TextView;
*/
public class TutorialChatRoomActivity extends Activity {
- private static final String defaultSipAddress = "sip:tested@10.0.2.6:5059";
+ private static final String defaultSipAddress = "sip:";
private TextView sipAddressWidget;
private TutorialChatRoom tutorial;
private Handler mHandler = new Handler() ;
diff --git a/src/org/linphone/core/tutorials/TutorialHelloWorldActivity.java b/src/org/linphone/core/tutorials/TutorialHelloWorldActivity.java
index 3ef643a61..60bd872c7 100644
--- a/src/org/linphone/core/tutorials/TutorialHelloWorldActivity.java
+++ b/src/org/linphone/core/tutorials/TutorialHelloWorldActivity.java
@@ -36,7 +36,7 @@ import android.widget.TextView;
*/
public class TutorialHelloWorldActivity extends Activity {
- private static final String defaultSipAddress = "sip:tested@10.0.2.6:5059";
+ private static final String defaultSipAddress = "sip:";
private TextView sipAddressWidget;
private TutorialHelloWorld tutorial;
private Handler mHandler = new Handler() ;
diff --git a/src/org/linphone/core/tutorials/TutorialRegistrationActivity.java b/src/org/linphone/core/tutorials/TutorialRegistrationActivity.java
index 4da10f632..d87446140 100644
--- a/src/org/linphone/core/tutorials/TutorialRegistrationActivity.java
+++ b/src/org/linphone/core/tutorials/TutorialRegistrationActivity.java
@@ -35,8 +35,8 @@ import android.widget.TextView;
*/
public class TutorialRegistrationActivity extends TutorialHelloWorldActivity {
- private static final String defaultSipAddress = "sip:8182449901ip@mty11.axtel.net";
- private static final String defaultSipPassword = "49901";
+ private static final String defaultSipAddress = "sip:";
+ private static final String defaultSipPassword = "";
private TextView sipAddressWidget;
private TextView sipPasswordWidget;
private TutorialRegistration tutorial;
diff --git a/submodules/linphone b/submodules/linphone
index 801508597..a9db49b15 160000
--- a/submodules/linphone
+++ b/submodules/linphone
@@ -1 +1 @@
-Subproject commit 801508597b36e02e6d726851332a202529dc9025
+Subproject commit a9db49b15aee38098d23086fd574adb99a1afda3