From 171e01c4ca367346268f1dd59160d6cd9ce73aad Mon Sep 17 00:00:00 2001 From: Brieuc Viel Date: Fri, 29 Apr 2016 15:59:13 +0200 Subject: [PATCH] [Presence] Log on/off fixed + extra pusblish removed + linphone updated --- src/org/linphone/CallActivity.java | 1 - src/org/linphone/LinphoneActivity.java | 34 +++++++++++++++++++++++++- src/org/linphone/LinphoneManager.java | 9 +++---- src/org/linphone/ui/Digit.java | 4 +-- submodules/linphone | 2 +- 5 files changed, 39 insertions(+), 11 deletions(-) diff --git a/src/org/linphone/CallActivity.java b/src/org/linphone/CallActivity.java index 689eb509d..a1f159d69 100644 --- a/src/org/linphone/CallActivity.java +++ b/src/org/linphone/CallActivity.java @@ -447,7 +447,6 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve } createInCallStats(); - LinphoneManager.getInstance().changeStatusToOnThePhone(); } public void checkAndRequestPermission(String permission, int result) { diff --git a/src/org/linphone/LinphoneActivity.java b/src/org/linphone/LinphoneActivity.java index cd2a3d5f5..a8aee640f 100644 --- a/src/org/linphone/LinphoneActivity.java +++ b/src/org/linphone/LinphoneActivity.java @@ -52,13 +52,16 @@ import org.linphone.ui.AvatarWithPresenceImage; import android.Manifest; import android.annotation.SuppressLint; import android.app.Activity; +import android.app.ActivityManager; import android.app.Dialog; import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; +import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; +import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.drawable.ColorDrawable; @@ -1292,7 +1295,7 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta @Override protected void onPause() { - LinphoneManager.getInstance().enableProxyPublish(false); + LinphoneManager.getInstance().enableProxyPublish(!isApplicationBroughtToBackground(this)); //LinphoneManager.getInstance().subscribeFriendList(false); getIntent().putExtra("PreviousActivity", 0); @@ -1313,6 +1316,27 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta } } + public static boolean isApplicationBroughtToBackground(final Activity activity) { + ActivityManager activityManager = (ActivityManager) activity.getSystemService(Context.ACTIVITY_SERVICE); + List tasks = activityManager.getRunningTasks(1); + + // Check the top Activity against the list of Activities contained in the Application's package. + if (!tasks.isEmpty()) { + ComponentName topActivity = tasks.get(0).topActivity; + try { + PackageInfo pi = activity.getPackageManager().getPackageInfo(activity.getPackageName(), PackageManager.GET_ACTIVITIES); + for (ActivityInfo activityInfo : pi.activities) { + if(topActivity.getClassName().equals(activityInfo.name)) { + return false; + } + } + } catch( PackageManager.NameNotFoundException e) { + return false; // Never happens. + } + } + return true; + } + @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode) { @@ -1379,6 +1403,14 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta } + + @Override + protected void onStop() { + + super.onStop(); + } + + @Override protected void onDestroy() { if (mOrientationHelper != null) { diff --git a/src/org/linphone/LinphoneManager.java b/src/org/linphone/LinphoneManager.java index 464dd6391..dc0ed5d1c 100644 --- a/src/org/linphone/LinphoneManager.java +++ b/src/org/linphone/LinphoneManager.java @@ -356,8 +356,8 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag if (lc != null ) { if ((lc.getGlobalState() == GlobalState.GlobalOn) && (LinphoneService.isReady())) { LinphoneProxyConfig[] proxyList = lc.getProxyConfigList(); - if (!enabled) - changeStatusToOffline(); + // if (!enabled) + // changeStatusToOffline(); for (LinphoneProxyConfig proxyConfig : proxyList) { proxyConfig.edit(); proxyConfig.enablePublish(enabled); @@ -381,7 +381,7 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag public void changeStatusToOnline() { LinphoneCore lc = getLcIfManagerNotDestroyedOrNull(); if (isInstanciated() && lc != null) { - if ((lc.getGlobalState() == GlobalState.GlobalOn) && (LinphoneService.isReady())) { + if ((lc.getGlobalState() == GlobalState.GlobalOn) && (LinphoneService.isReady()) && (lc.getPresenceModel().getActivity().getType() != PresenceActivityType.TV)) { PresenceModel model = LinphoneCoreFactory.instance().createPresenceModel(PresenceActivityType.TV, null); lc.setPresenceModel(model); } @@ -620,8 +620,6 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag mLc = LinphoneCoreFactory.instance().createLinphoneCore(this, mLinphoneConfigFile, mLinphoneFactoryConfigFile, null, c); - instance.enableProxyPublish(true); - TimerTask lTask = new TimerTask() { @Override public void run() { @@ -834,7 +832,6 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag public static synchronized void destroy() { if (instance == null) return; - getInstance().changeStatusToOffline(); sExited = true; instance.doDestroy(); } diff --git a/src/org/linphone/ui/Digit.java b/src/org/linphone/ui/Digit.java index c51022b30..52b093ca0 100644 --- a/src/org/linphone/ui/Digit.java +++ b/src/org/linphone/ui/Digit.java @@ -139,8 +139,8 @@ public class Digit extends Button implements AddressAware { if(which == 0){ Log.setEnableLog(false); LinphonePreferences.instance().enableDebugLogs(false); - LinphoneCoreFactory.instance().setDebugMode(false, getResources().getString(R.string.app_name)); LinphoneCoreFactory.instance().enableLogCollection(false); + LinphoneCoreFactory.instance().setDebugMode(false, getResources().getString(R.string.app_name)); } if(which == 1) { LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); @@ -157,8 +157,8 @@ public class Digit extends Button implements AddressAware { if(which == 0) { Log.setEnableLog(true); LinphonePreferences.instance().enableDebugLogs(true); - LinphoneCoreFactory.instance().setDebugMode(true, getResources().getString(R.string.app_name)); LinphoneCoreFactory.instance().enableLogCollection(true); + LinphoneCoreFactory.instance().setDebugMode(true, getResources().getString(R.string.app_name)); } } }); diff --git a/submodules/linphone b/submodules/linphone index 0215e014f..8377540fc 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 0215e014f454ba3dcdadb63a44f9b5002489f729 +Subproject commit 8377540fc541e948eea34d929facb3e5a6d3dd2c