diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 84c64b18e..3baba3a38 100755 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -7,7 +7,7 @@ + android:targetSdkVersion="27"/> diff --git a/AndroidManifestSdk.xml b/AndroidManifestSdk.xml new file mode 100755 index 000000000..6a132d3d1 --- /dev/null +++ b/AndroidManifestSdk.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/README.md b/README.md index 36c677fde..113bde647 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +[![pipeline status](https://gitlab.linphone.org/BC/public/linphone-android/badges/master/pipeline.svg)](https://gitlab.linphone.org/BC/public/linphone-android/commits/master) + Linphone is a free VoIP and video softphone based on the SIP protocol. # COMPILATION INSTRUCTIONS diff --git a/build.gradle b/build.gradle index a388ff7d6..16902bf25 100644 --- a/build.gradle +++ b/build.gradle @@ -47,7 +47,7 @@ dependencies { if (firebaseEnable()) { implementation 'com.google.firebase:firebase-messaging:15.0.2' } - implementation 'com.android.support:support-v4:26.0.1' + implementation 'com.android.support:support-v4:27.0.1' implementation project(':liblinphone-sdk') } @@ -79,6 +79,7 @@ excludePackage.add('**/LICENSE.txt') android { defaultConfig { compileSdkVersion 26 + buildToolsVersion "27.0.3" applicationId getPackageName() multiDexEnabled true @@ -155,7 +156,7 @@ android { packagingOptions { pickFirst 'META-INF/NOTICE' pickFirst 'META-INF/LICENSE' - pickFirst 'META-INF/MANIFEST.MF' + exclude 'META-INF/MANIFEST.MF' } } diff --git a/liblinphone-sdk/build.gradle b/liblinphone-sdk/build.gradle index 4098e7085..fc7b6a88d 100644 --- a/liblinphone-sdk/build.gradle +++ b/liblinphone-sdk/build.gradle @@ -73,7 +73,7 @@ android { defaultConfig { compileSdkVersion 26 - buildToolsVersion "26.0.0" + buildToolsVersion "27.0.3" multiDexEnabled true } diff --git a/linphoneAndroidSdk.gradle b/linphoneAndroidSdk.gradle index 874c962f8..34b5c80b0 100644 --- a/linphoneAndroidSdk.gradle +++ b/linphoneAndroidSdk.gradle @@ -26,7 +26,7 @@ allprojects { apply plugin: 'com.android.library' dependencies { - compile group: 'org.apache.commons', name: 'commons-compress', version: '+' + compile group: 'org.apache.commons', name: 'commons-compress', version: '1.16.1' compile 'com.android.support:support-v4:26.0.2' } @@ -49,6 +49,7 @@ excludePackage.add('**/LICENSE.txt') android { defaultConfig { compileSdkVersion 26 + buildToolsVersion "27.0.3" multiDexEnabled true } @@ -61,7 +62,7 @@ android { sourceSets { main { - manifest.srcFile 'AndroidManifestLibrary.xml' + manifest.srcFile 'AndroidManifestSdk.xml' java.srcDirs = srcDirs resources.srcDirs = srcDirs aidl.srcDirs = srcDirs diff --git a/prepare.py b/prepare.py index 30479e28d..ee5063a73 100755 --- a/prepare.py +++ b/prepare.py @@ -144,7 +144,7 @@ class AndroidPreparator(prepare.Preparator): retval = True ndk_build = find_executable('ndk-build') ndk_path = os.path.dirname(ndk_build) - # NDK prior to r11 had a RELEASE.TXT file holding the version number + # NDK prior to r11 had a RELEASE.TXT file holding the version number release_file = os.path.join(ndk_path, 'RELEASE.TXT') if os.path.isfile(release_file): version = open(release_file).read().strip() diff --git a/src/android/org/linphone/LinphoneManager.java b/src/android/org/linphone/LinphoneManager.java index 41c65f2f2..e9638139f 100644 --- a/src/android/org/linphone/LinphoneManager.java +++ b/src/android/org/linphone/LinphoneManager.java @@ -584,7 +584,7 @@ public class LinphoneManager implements CoreListener, SensorEventListener, Accou BluetoothManagerDestroy(); try { mTimer.cancel(); - mLc = null; + destroyLinphoneCore(); } catch (RuntimeException e) { Log.e(e); @@ -623,6 +623,7 @@ public class LinphoneManager implements CoreListener, SensorEventListener, Accou } } + public void restartCore() { destroyCore(); startLibLinphone(mServiceContext); @@ -917,51 +918,6 @@ public class LinphoneManager implements CoreListener, SensorEventListener, Accou mLc = null; } - @TargetApi(Build.VERSION_CODES.HONEYCOMB) - private void doDestroy() { - ContactsManagerDestroy(); - BluetoothManagerDestroy(); - try { - mTimer.cancel(); - destroyLinphoneCore(); - } - catch (RuntimeException e) { - Log.e(e); - } - finally { - try { - if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) { - mServiceContext.unregisterReceiver(mNetworkReceiver); - } - } catch (Exception e) { - Log.e(e); - } - try { - mServiceContext.unregisterReceiver(mHookReceiver); - } catch (Exception e) { - Log.e(e); - } - try { - mServiceContext.unregisterReceiver(mKeepAliveReceiver); - } catch (Exception e) { - Log.e(e); - } - try { - mServiceContext.unregisterReceiver(mCallReceiver); - } catch (Exception e) { - Log.e(e); - } - try { - dozeManager(false); - } catch (IllegalArgumentException iae) { - Log.e(iae); - } catch (Exception e) { - Log.e(e); - } - instance = null; - } - } - public void dozeManager(boolean enable) { if (enable) { Log.i("[Doze Mode]: register"); @@ -1045,7 +1001,7 @@ public class LinphoneManager implements CoreListener, SensorEventListener, Accou if (instance == null) return; getInstance().changeStatusToOffline(); sExited = true; - instance.doDestroy(); + instance.destroyCore(); } private String getString(int key) { diff --git a/src/android/org/linphone/LinphonePreferences.java b/src/android/org/linphone/LinphonePreferences.java index d36a974e7..dc3d573f4 100644 --- a/src/android/org/linphone/LinphonePreferences.java +++ b/src/android/org/linphone/LinphonePreferences.java @@ -370,6 +370,13 @@ public class LinphonePreferences { prxCfg.setQualityReportingCollector(tempQualityReportingCollector); prxCfg.setQualityReportingInterval(tempQualityReportingInterval); + String regId = LinphonePreferences.instance().getPushNotificationRegistrationID(); + String appId = LinphonePreferences.instance().getString(R.string.push_sender_id); + if (regId != null && LinphonePreferences.instance().isPushNotificationEnabled()) { + String contactInfos = "app-id=" + appId + ";pn-type=" + LinphonePreferences.instance().getString(R.string.push_type) + ";pn-tok=" + regId + ";pn-silent=1"; + prxCfg.setContactUriParameters(contactInfos); + } + if(tempPrefix != null){ prxCfg.setDialPrefix(tempPrefix); } diff --git a/src/android/org/linphone/LinphoneUtils.java b/src/android/org/linphone/LinphoneUtils.java index 2391e4b7f..00933b03b 100644 --- a/src/android/org/linphone/LinphoneUtils.java +++ b/src/android/org/linphone/LinphoneUtils.java @@ -609,11 +609,7 @@ public final class LinphoneUtils { if ("com.android.externalstorage.documents".equals(uri.getAuthority())) { final String docId = DocumentsContract.getDocumentId(uri); final String[] split = docId.split(":"); - final String type = split[0]; - - if ("primary".equalsIgnoreCase(type)) { - return Environment.getExternalStorageDirectory() + "/" + split[1]; - } + if (split.length >= 1) return Environment.getExternalStorageDirectory() + "/" + split[1]; // TODO handle non-primary volumes }// Docs storage diff --git a/src/android/org/linphone/firebase/FirebaseMessaging.java b/src/android/org/linphone/firebase/FirebaseMessaging.java index 49cf49271..fd78503c4 100644 --- a/src/android/org/linphone/firebase/FirebaseMessaging.java +++ b/src/android/org/linphone/firebase/FirebaseMessaging.java @@ -39,6 +39,7 @@ public class FirebaseMessaging extends FirebaseMessagingService { android.util.Log.i("FirebaseMessaging","[Push Notification] Received"); if (!LinphoneService.isReady()) { + android.util.Log.i("FirebaseMessaging","[Push Notification] Starting Service"); startService(new Intent(ACTION_MAIN).setClass(this, LinphoneService.class)); } else if (LinphoneManager.isInstanciated() && LinphoneManager.getLc().getCallsNb() == 0) { LinphoneUtils.dispatchOnUIThread(new Runnable(){ diff --git a/submodules/externals/mbedtls b/submodules/externals/mbedtls index d9385339a..83d21d543 160000 --- a/submodules/externals/mbedtls +++ b/submodules/externals/mbedtls @@ -1 +1 @@ -Subproject commit d9385339a5c2979786cfc844c0527593c14662c5 +Subproject commit 83d21d543c26a31943b2bd08c66b029f2ef742be diff --git a/submodules/linphone b/submodules/linphone index b1e084c4c..c448d2e00 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit b1e084c4c842b6dd5722f418184bf6ec228e5058 +Subproject commit c448d2e0018ca9baa45afe216241fc354cc4edef diff --git a/submodules/mediastreamer2 b/submodules/mediastreamer2 index f6e4cc214..9add24c20 160000 --- a/submodules/mediastreamer2 +++ b/submodules/mediastreamer2 @@ -1 +1 @@ -Subproject commit f6e4cc2142821b2c8ac80c644405d9cd42b3216e +Subproject commit 9add24c2041e1bcf7b51ae580575ef56aa408f3e diff --git a/test.patch b/test.patch deleted file mode 100644 index 667714692..000000000 --- a/test.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff --git a/AndroidManifest.xml b/AndroidManifest.xml -index 9ee95b62..bb763a24 100755 ---- a/AndroidManifest.xml -+++ b/AndroidManifest.xml -@@ -287,15 +287,15 @@ - - - -- - -- -+ --> - -