diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 0a4da5f69..fc3b49285 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -106,10 +106,10 @@
-
+
diff --git a/libs/armeabi-v7a/liblinphone.so b/libs/armeabi-v7a/liblinphone.so
index a3b41ef84..c4d345541 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 945b50950..ab3f14c29 100755
Binary files a/libs/armeabi/liblinphone.so and b/libs/armeabi/liblinphone.so differ
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 2a15530a2..350c3f56f 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -37,7 +37,7 @@
iLBC might be unavailable depending on ARM processor and Android OS version.
Echo cancellation
pref_echo_cancellation_key
- If set cellular calls are redirected to voip when possible
+ Configure how cellular calls are redirected to voip when possible
Redirect cellular calls
pref_handle_outcall_key
Start at boot time
@@ -109,4 +109,10 @@
Calibrating...
Calibrated [%s ms]
failed
+
+
+- Off
+- On demand
+- Always
+
diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml
index e7651acf5..95d922f8a 100644
--- a/res/xml/preferences.xml
+++ b/res/xml/preferences.xml
@@ -31,12 +31,12 @@
-
+
-
+
+
diff --git a/src/org/linphone/LinphoneService.java b/src/org/linphone/LinphoneService.java
index fdc973de0..71f1bf8a8 100644
--- a/src/org/linphone/LinphoneService.java
+++ b/src/org/linphone/LinphoneService.java
@@ -91,7 +91,8 @@ public class LinphoneService extends Service implements LinphoneCoreListener {
LinphoneCall.State mCurrentCallState;
Vibrator mVibrator;
private AudioManager mAudioManager;
- private BroadcastReceiver mReceiver = new KeepAliveManager();
+ private BroadcastReceiver mKeepAliveMgrReceiver = new KeepAliveManager();
+ private BroadcastReceiver mOutgoingCallReceiver = new OutgoingCallReceiver();
private Handler mHandler = new Handler() ;
static boolean isready() {
@@ -153,8 +154,13 @@ public class LinphoneService extends Service implements LinphoneCoreListener {
mTimer.scheduleAtFixedRate(lTask, 0, 100);
IntentFilter lFilter = new IntentFilter(Intent.ACTION_SCREEN_ON);
lFilter.addAction(Intent.ACTION_SCREEN_OFF);
- registerReceiver(mReceiver, lFilter);
-
+ registerReceiver(mKeepAliveMgrReceiver, lFilter);
+ if (!mPref.getString(getString(R.string.pref_handle_outcall_key), OutgoingCallReceiver.key_on_demand).equalsIgnoreCase(OutgoingCallReceiver.key_off)){
+ lFilter = new IntentFilter(Intent.ACTION_SCREEN_ON);
+ lFilter.setPriority(0);
+ lFilter.addAction(Intent.ACTION_NEW_OUTGOING_CALL);
+ registerReceiver(mOutgoingCallReceiver,lFilter);
+ }
}
@@ -459,7 +465,7 @@ public class LinphoneService extends Service implements LinphoneCoreListener {
mLinphoneCore.destroy();
theLinphone=null;
mNotificationManager.cancel(NOTIFICATION_ID);
- unregisterReceiver(mReceiver);
+ unregisterReceiver(mKeepAliveMgrReceiver);
}
public void newSubscriptionRequest(LinphoneCore lc, LinphoneFriend lf,
String url) {
diff --git a/src/org/linphone/OutgoingCallReceiver.java b/src/org/linphone/OutgoingCallReceiver.java
index 710149eea..f0a896637 100644
--- a/src/org/linphone/OutgoingCallReceiver.java
+++ b/src/org/linphone/OutgoingCallReceiver.java
@@ -27,6 +27,9 @@ import android.preference.PreferenceManager;
public class OutgoingCallReceiver extends BroadcastReceiver {
public static String TAG = ";0000000";
+ public static String key_off="off";
+ public static String key_on_demand="ask_for_outcall_interception";
+ public static String key_always="alway_intercept_out_call";
@Override
public void onReceive(Context context, Intent intent) {
String to = intent.getStringExtra("android.intent.extra.PHONE_NUMBER");
@@ -41,7 +44,7 @@ public class OutgoingCallReceiver extends BroadcastReceiver {
setResult(Activity.RESULT_OK,null, null);
Intent lIntent = new Intent();
// 1 check config
- if (PreferenceManager.getDefaultSharedPreferences(context).getBoolean(context.getString(R.string.pref_handle_outcall_key), false)) {
+ if (PreferenceManager.getDefaultSharedPreferences(context).getString(context.getString(R.string.pref_handle_outcall_key),key_on_demand).equals(key_always)) {
//start linphone directly
lIntent.setClass(context, LinphoneActivity.class);
} else {