diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 4ec765344..008d536b3 100755 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -2,8 +2,8 @@ + android:versionCode="2000" + android:versionName="2.0.0"> + /> diff --git a/res/raw/linphonerc_factory b/res/raw/linphonerc_factory index 0758999a3..60830acc1 100644 --- a/res/raw/linphonerc_factory +++ b/res/raw/linphonerc_factory @@ -46,7 +46,6 @@ activation_code_length=4 show_login_view=1 friendlist_subscription_enabled=1 debug_popup_magic=#1234 -debug=1 [assistant] password_max_length=-1 diff --git a/src/android/org/linphone/LinphoneManager.java b/src/android/org/linphone/LinphoneManager.java index 79afbe958..64908ca24 100644 --- a/src/android/org/linphone/LinphoneManager.java +++ b/src/android/org/linphone/LinphoneManager.java @@ -990,9 +990,10 @@ public class LinphoneManager implements CoreListener, SensorEventListener, Accou public static synchronized void destroy() { if (instance == null) return; - getInstance().changeStatusToOffline(); + instance.changeStatusToOffline(); sExited = true; instance.destroyCore(); + instance = null; } private String getString(int key) { diff --git a/src/android/org/linphone/LinphoneService.java b/src/android/org/linphone/LinphoneService.java index 640b38d25..9d29bb42e 100644 --- a/src/android/org/linphone/LinphoneService.java +++ b/src/android/org/linphone/LinphoneService.java @@ -84,7 +84,7 @@ import static org.linphone.LinphoneUtils.getZrtpStatus; * Linphone service, reacting to Incoming calls, ...
* * Roles include:
    - *
  • Initializing LinphoneManager
  • + *
  • Initializing LinphoneManager
  • F *
  • Starting C libLinphone through LinphoneManager
  • *
  • Reacting to LinphoneManager state changes
  • *
  • Delegating GUI state change actions to GUI listener
  • @@ -322,8 +322,12 @@ public final class LinphoneService extends Service { public int onStartCommand(Intent intent, int flags, int startId) { super.onStartCommand(intent, flags, startId); - if (!LinphoneManager.isInstanciated()) - LinphoneManager.createAndStart(LinphoneService.this); + if (instance != null) { + Log.w("Attempt to start the LinphoneService but it is already running !"); + return START_REDELIVER_INTENT; + } + + LinphoneManager.createAndStart(LinphoneService.this); instance = this; // instance is ready once linphone manager has been created LinphoneManager.getLc().addListener(mListener = new CoreListenerStub() { @@ -438,7 +442,7 @@ public final class LinphoneService extends Service { AlarmManager alarmManager = ((AlarmManager) this.getSystemService(Context.ALARM_SERVICE)); Compatibility.scheduleAlarm(alarmManager, AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 600000, keepAlivePendingIntent); - return START_STICKY; + return START_REDELIVER_INTENT; } @SuppressWarnings("unchecked") diff --git a/src/android/org/linphone/receivers/BootReceiver.java b/src/android/org/linphone/receivers/BootReceiver.java index 340206aec..2d379e712 100644 --- a/src/android/org/linphone/receivers/BootReceiver.java +++ b/src/android/org/linphone/receivers/BootReceiver.java @@ -39,7 +39,7 @@ public class BootReceiver extends BroadcastReceiver { } else { boolean autostart = LinphonePreferences.instance().isAutoStartEnabled(); android.util.Log.i("LinphoneBootReceiver", "Device is starting, auto_start is " + autostart); - if (autostart) { + if (autostart && !LinphoneService.isReady()) { Intent lLinphoneServiceIntent = new Intent(Intent.ACTION_MAIN); lLinphoneServiceIntent.setClass(context, LinphoneService.class); lLinphoneServiceIntent.putExtra("ForceStartForeground", true);