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 {