Merge remote-tracking branch 'origin/master' into dev_in_app_purchase
Conflicts: AndroidManifest.xml
This commit is contained in:
commit
d7bb9a7f19
40 changed files with 272 additions and 170 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -37,3 +37,4 @@ submodules/externals/build/openh264/x86
|
||||||
tests/*$py.class
|
tests/*$py.class
|
||||||
tests/build.xml
|
tests/build.xml
|
||||||
tests/project.properties
|
tests/project.properties
|
||||||
|
ant_password.properties
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="org.linphone"
|
package="org.linphone"
|
||||||
android:versionCode="2410" android:installLocation="auto">
|
android:versionCode="2400" android:installLocation="auto">
|
||||||
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="22"/>
|
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="22"/>
|
||||||
|
|
||||||
<!-- Permissions for Push Notification -->
|
<!-- Permissions for Push Notification -->
|
||||||
|
@ -119,6 +119,7 @@
|
||||||
|
|
||||||
<activity android:name="org.linphone.ChatActivity"
|
<activity android:name="org.linphone.ChatActivity"
|
||||||
android:theme="@style/NoTitle"
|
android:theme="@style/NoTitle"
|
||||||
|
android:configChanges="orientation|screenSize|keyboardHidden"
|
||||||
android:windowSoftInputMode="adjustPan|adjustResize"
|
android:windowSoftInputMode="adjustPan|adjustResize"
|
||||||
android:launchMode="singleTask">
|
android:launchMode="singleTask">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
|
|
13
Makefile
13
Makefile
|
@ -99,6 +99,15 @@ ifneq ($(shell ls ./submodules/linphone/mediastreamer2/java/src/org/linphone/med
|
||||||
$(error ./submodules/linphone/mediastreamer2/java/src/org/linphone/mediastream/MediastreamerActivity.java found: please either remove it or move it to MediastreamActivity.java.ignored before continuing.)
|
$(error ./submodules/linphone/mediastreamer2/java/src/org/linphone/mediastream/MediastreamerActivity.java found: please either remove it or move it to MediastreamActivity.java.ignored before continuing.)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(BUILD_NON_FREE_CODECS), 0)
|
||||||
|
BUILD_OPENH264=0
|
||||||
|
ENABLE_OPENH264_DECODER=0
|
||||||
|
BUILD_AMRNB=0
|
||||||
|
BUILD_AMRWB=0
|
||||||
|
BUILD_G729=0
|
||||||
|
BUILD_X264=0
|
||||||
|
endif
|
||||||
|
|
||||||
all: update-project generate-apk
|
all: update-project generate-apk
|
||||||
ifeq ($(ENABLE_GPL_THIRD_PARTIES),1)
|
ifeq ($(ENABLE_GPL_THIRD_PARTIES),1)
|
||||||
@echo "***************************************************************************"
|
@echo "***************************************************************************"
|
||||||
|
@ -462,10 +471,8 @@ install-apk:
|
||||||
|
|
||||||
release: update-project
|
release: update-project
|
||||||
$(ANT) clean
|
$(ANT) clean
|
||||||
echo "What is the version name for the release ?"; \
|
|
||||||
read version; \
|
|
||||||
echo "version.name=$$version" > default.properties
|
|
||||||
patch -p1 < release.patch
|
patch -p1 < release.patch
|
||||||
|
cat ant.properties | grep version.name > default.properties
|
||||||
$(ANT) release
|
$(ANT) release
|
||||||
git checkout HEAD AndroidManifest.xml
|
git checkout HEAD AndroidManifest.xml
|
||||||
|
|
||||||
|
|
8
README
8
README
|
@ -25,9 +25,11 @@ To build liblinphone for Android, you must:
|
||||||
$ make mediastreamer2-sdk
|
$ make mediastreamer2-sdk
|
||||||
7) (Optional) To generate a signed apk to publish on the Google Play, run
|
7) (Optional) To generate a signed apk to publish on the Google Play, run
|
||||||
$ make release
|
$ make release
|
||||||
It will ask you for the version number that will be displayed in the about page of the app.
|
Make sure you filled the ant.properties values for version.name, key.store and key.alias in order to correctly sign the generated apk.
|
||||||
Make sure you filled the ant.properties values for key.store and key.alias in order to correctly
|
You also may want to create a file name ant_password.properties with the following:
|
||||||
sign the generated apk (it will ask you the password during the process)
|
key.store.password=[your_password]
|
||||||
|
key.alias.password=[your_password]
|
||||||
|
If you don't, the passwords will be asked at the signing phase.
|
||||||
|
|
||||||
To run the tutorials:
|
To run the tutorials:
|
||||||
--------------------
|
--------------------
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
source.dir=src:submodules/linphone/mediastreamer2/java/src:submodules/linphone/java/j2se:submodules/linphone/java/common:submodules/linphone/java/impl:submodules/linphone/coreapi/help/java:submodules/externals/axmlrpc/src/main/java
|
source.dir=src:submodules/linphone/mediastreamer2/java/src:submodules/linphone/java/j2se:submodules/linphone/java/common:submodules/linphone/java/impl:submodules/linphone/coreapi/help/java:submodules/externals/axmlrpc/src/main/java
|
||||||
key.store=bc-android.keystore
|
key.store=bc-android.keystore
|
||||||
key.alias=nw8000
|
key.alias=nw8000
|
||||||
|
version.name=2.4.0
|
||||||
|
|
|
@ -26,8 +26,9 @@
|
||||||
application and should be checked into Version Control Systems.
|
application and should be checked into Version Control Systems.
|
||||||
|
|
||||||
-->
|
-->
|
||||||
<property file="ant.properties" />
|
|
||||||
<property file="default.properties" />
|
<property file="default.properties" />
|
||||||
|
<property file="ant.properties" />
|
||||||
|
<property file="ant_password.properties" />
|
||||||
|
|
||||||
<!-- if sdk.dir was not set from one of the property file, then
|
<!-- if sdk.dir was not set from one of the property file, then
|
||||||
get it from the ANDROID_HOME env var.
|
get it from the ANDROID_HOME env var.
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package org.linphone.tester;
|
package org.linphone.tester;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.linphone.core.LinphoneCoreFactory;
|
import org.linphone.core.LinphoneCoreFactory;
|
||||||
import org.linphone.mediastream.Version;
|
import org.linphone.mediastream.Version;
|
||||||
|
|
||||||
|
@ -23,26 +25,36 @@ public class Tester {
|
||||||
}
|
}
|
||||||
|
|
||||||
static {
|
static {
|
||||||
|
List<String> cpuabis=Version.getCpuAbis();
|
||||||
LinphoneCoreFactory.instance();
|
String ffmpegAbi;
|
||||||
|
boolean libLoaded=false;
|
||||||
System.loadLibrary("cunit");
|
Throwable firstException=null;
|
||||||
String eabi = "armeabi";
|
for (String abi : cpuabis){
|
||||||
if (Version.isX86()) {
|
Log.i("LinphoneCoreFactoryImpl","Trying to load liblinphone for " + abi);
|
||||||
eabi = "x86";
|
ffmpegAbi=abi;
|
||||||
} else if (Version.isArmv7()) {
|
// FFMPEG (audio/video)
|
||||||
eabi = "armeabi-v7a";
|
if (abi.startsWith("armeabi")) {
|
||||||
|
ffmpegAbi="arm";
|
||||||
}
|
}
|
||||||
|
loadOptionalLibrary("ffmpeg-linphone-"+ffmpegAbi);
|
||||||
|
//Main library
|
||||||
try {
|
try {
|
||||||
System.loadLibrary("linphone_tester-"+eabi);
|
System.loadLibrary("linphone-" + abi);
|
||||||
|
Log.i("LinphoneCoreFactoryImpl","Loading done with " + abi);
|
||||||
} catch (UnsatisfiedLinkError ule) {
|
libLoaded=true;
|
||||||
Log.w("linphone", "Failed to load liblinphone_tester-"+eabi);
|
break;
|
||||||
System.loadLibrary("linphone_tester");
|
}catch(Throwable e) {
|
||||||
|
if (firstException == null) firstException=e;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!libLoaded){
|
||||||
|
throw new RuntimeException(firstException);
|
||||||
|
|
||||||
|
}else{
|
||||||
Version.dumpCapabilities();
|
Version.dumpCapabilities();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public native int run(String args[]);
|
public native int run(String args[]);
|
||||||
public static native void keepAccounts(boolean keep);
|
public static native void keepAccounts(boolean keep);
|
||||||
|
|
|
@ -79,12 +79,28 @@
|
||||||
android:textColor="@android:color/black"
|
android:textColor="@android:color/black"
|
||||||
android:background="@drawable/setup_field_background" />
|
android:background="@drawable/setup_field_background" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:contentDescription="@string/content_description_setup_ok"
|
||||||
|
android:id="@+id/setup_password_ok"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingRight="5dp"
|
||||||
|
android:layout_alignParentRight="true"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
|
android:src="@drawable/wizard_notok"/>
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
<EditText
|
<EditText
|
||||||
android:textCursorDrawable="@null"
|
android:textCursorDrawable="@null"
|
||||||
android:id="@+id/setup_password_confirm"
|
android:id="@+id/setup_password_confirm"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@id/setup_password"
|
|
||||||
android:hint="@string/setup_password_confirm_hint"
|
android:hint="@string/setup_password_confirm_hint"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:lines="1"
|
android:lines="1"
|
||||||
|
@ -98,7 +114,7 @@
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:contentDescription="@string/content_description_setup_ok"
|
android:contentDescription="@string/content_description_setup_ok"
|
||||||
android:id="@+id/setup_password_ok"
|
android:id="@+id/setup_confirm_password_ok"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingRight="5dp"
|
android:paddingRight="5dp"
|
||||||
|
@ -160,12 +176,6 @@
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
<View
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:paddingLeft="10dp"
|
|
||||||
android:paddingRight="10dp" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="75dp">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
<string name="notification_registered">مُسجَّل في %s</string>
|
<string name="notification_registered">مُسجَّل في %s</string>
|
||||||
<string name="notification_register_failure">فشِل التسجيل في %s</string>
|
<string name="notification_register_failure">فشِل التسجيل في %s</string>
|
||||||
<string name="about_text">لِنْفُونْ %s الهاتف الموافق لـ SIP (rfc 3261) برخصة جْنُو العمومية الإصدار 2</string>
|
<string name="about_text">لِنْفُونْ %s الهاتف الموافق لـ SIP (rfc 3261) برخصة جْنُو العمومية الإصدار 2</string>
|
||||||
<string name="about_link">http://www.linphone.org\n\nInstructions\nhttp://www.linphone.org/m/help\n\n© 2011 Belledonne Communications</string>
|
<string name="about_link">http://www.linphone.org\n\nInstructions\nhttp://www.linphone.org/user-guide.html\n\n© 2015 Belledonne Communications</string>
|
||||||
<string name="setup_welcome">سيمكنك هذا المرشد من إعداد حسابك SIP لإجراء المكالمات.</string>
|
<string name="setup_welcome">سيمكنك هذا المرشد من إعداد حسابك SIP لإجراء المكالمات.</string>
|
||||||
<string name="setup_create_account">إنشاء حساب في linphone.org</string>
|
<string name="setup_create_account">إنشاء حساب في linphone.org</string>
|
||||||
<string name="setup_login_linphone">أتوفر على حساب في linphone.org</string>
|
<string name="setup_login_linphone">أتوفر على حساب في linphone.org</string>
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
<string name="notification_registered">Enregistré sur %s</string>
|
<string name="notification_registered">Enregistré sur %s</string>
|
||||||
<string name="notification_register_failure">Échec d\'enregistrement sur %s</string>
|
<string name="notification_register_failure">Échec d\'enregistrement sur %s</string>
|
||||||
<string name="about_text">Linphone %s SIP (rfc 3261) compatible téléphone, sous licence GNU Public License V2</string>
|
<string name="about_text">Linphone %s SIP (rfc 3261) compatible téléphone, sous licence GNU Public License V2</string>
|
||||||
<string name="about_link">http://www.linphone.org\n\nInstructions\nhttp://www.linphone.org/m/help\n\n© 2011 Belledonne Communications</string>
|
<string name="about_link">http://www.linphone.org\n\nInstructions\nhttp://www.linphone.org/user-guide.html\n\n© 2015 Belledonne Communications</string>
|
||||||
<string name="setup_welcome">Cet assistant va vous guider pour réaliser des appels à l\'aide d\'un compte SIP.</string>
|
<string name="setup_welcome">Cet assistant va vous guider pour réaliser des appels à l\'aide d\'un compte SIP.</string>
|
||||||
<string name="setup_create_account">Créer un compte sur linphone.org</string>
|
<string name="setup_create_account">Créer un compte sur linphone.org</string>
|
||||||
<string name="setup_login_linphone">J\'ai déjà un compte sur linphone.org</string>
|
<string name="setup_login_linphone">J\'ai déjà un compte sur linphone.org</string>
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
<string name="notification_registered">%s に登録しました</string>
|
<string name="notification_registered">%s に登録しました</string>
|
||||||
<string name="notification_register_failure">%s への登録に失敗しました</string>
|
<string name="notification_register_failure">%s への登録に失敗しました</string>
|
||||||
<string name="about_text">Linphone %s SIP (rfc 3261) compatible phone under GNU Public License V2</string>
|
<string name="about_text">Linphone %s SIP (rfc 3261) compatible phone under GNU Public License V2</string>
|
||||||
<string name="about_link">http://www.linphone.org\n\nInstructions\nhttp://www.linphone.org/m/help\n\n© 2011 Belledonne Communications</string>
|
<string name="about_link">http://www.linphone.org\n\nInstructions\nhttp://www.linphone.org/user-guide.html\n\n© 2015 Belledonne Communications</string>
|
||||||
<string name="setup_welcome">アシスタントがSIPアカウントを使ってあなたの通話を助けます。</string>
|
<string name="setup_welcome">アシスタントがSIPアカウントを使ってあなたの通話を助けます。</string>
|
||||||
<string name="setup_create_account">linphone.orgのアカウントを作成する</string>
|
<string name="setup_create_account">linphone.orgのアカウントを作成する</string>
|
||||||
<string name="setup_login_linphone">linphone.orgのアカウントをすでに持っている</string>
|
<string name="setup_login_linphone">linphone.orgのアカウントをすでに持っている</string>
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
<string name="notification_registered">Geregistreerd naar %s</string>
|
<string name="notification_registered">Geregistreerd naar %s</string>
|
||||||
<string name="notification_register_failure">Het registreren naar %s is mislukt</string>
|
<string name="notification_register_failure">Het registreren naar %s is mislukt</string>
|
||||||
<string name="about_text">Linphone %s SIP (rfc 3261)-compatibele telefoonapp onder de licentie van GNU Public License V2</string>
|
<string name="about_text">Linphone %s SIP (rfc 3261)-compatibele telefoonapp onder de licentie van GNU Public License V2</string>
|
||||||
<string name="about_link">http://www.linphone.org\n\nGebruikershandleidingen\nhttp://www.linphone.org/m/help\n\n© 2011 Belledonne Communications</string>
|
<string name="about_link">http://www.linphone.org\n\nGebruikershandleidingen\nhttp://www.linphone.org/user-guide.html\n\n© 2015 Belledonne Communications</string>
|
||||||
<string name="setup_welcome">Deze wizard zal u helpen bij het gebruiken van een SIP-account voor uw oproepen.</string>
|
<string name="setup_welcome">Deze wizard zal u helpen bij het gebruiken van een SIP-account voor uw oproepen.</string>
|
||||||
<string name="setup_create_account">Creëer een account op linphone.org</string>
|
<string name="setup_create_account">Creëer een account op linphone.org</string>
|
||||||
<string name="setup_login_linphone">Ik heb al een linphone.org-account</string>
|
<string name="setup_login_linphone">Ik heb al een linphone.org-account</string>
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
<string name="notification_registered">Зарегистрирован в %s </string>
|
<string name="notification_registered">Зарегистрирован в %s </string>
|
||||||
<string name="notification_register_failure">Ошибка регистрации в %s</string>
|
<string name="notification_register_failure">Ошибка регистрации в %s</string>
|
||||||
<string name="about_text">Linphone %s SIP (rfc 3261) совместимый телефон под GPL V2 лицензией</string>
|
<string name="about_text">Linphone %s SIP (rfc 3261) совместимый телефон под GPL V2 лицензией</string>
|
||||||
<string name="about_link">http://www.linphone.org\n\nИнструкции\nhttp://www.linphone.org/m/help\n\n© 2011 Belledonne Communications</string>
|
<string name="about_link">http://www.linphone.org\n\nИнструкции\nhttp://www.linphone.org/user-guide.html\n\n© 2015 Belledonne Communications</string>
|
||||||
<string name="setup_welcome">Этот помощник поможет Вам настроить учётную запись SIP для звонков.</string>
|
<string name="setup_welcome">Этот помощник поможет Вам настроить учётную запись SIP для звонков.</string>
|
||||||
<string name="setup_create_account">Создать учётную запись на linphone.org</string>
|
<string name="setup_create_account">Создать учётную запись на linphone.org</string>
|
||||||
<string name="setup_login_linphone">Уже есть учётная запись на linphone.org</string>
|
<string name="setup_login_linphone">Уже есть учётная запись на linphone.org</string>
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
<string name="notification_registered">Уписан на „%s“ </string>
|
<string name="notification_registered">Уписан на „%s“ </string>
|
||||||
<string name="notification_register_failure">Нисам успео да се упишем на „%s“</string>
|
<string name="notification_register_failure">Нисам успео да се упишем на „%s“</string>
|
||||||
<string name="about_text">Линфон %s телефон сагласан са СИП-ом (rfc 3261) под Гнуовом Јавном Лиценцом и2</string>
|
<string name="about_text">Линфон %s телефон сагласан са СИП-ом (rfc 3261) под Гнуовом Јавном Лиценцом и2</string>
|
||||||
<string name="about_link">http://www.linphone.org\n\nInstructions\nhttp://www.linphone.org/m/help\n\n© 2011 Belledonne Communications</string>
|
<string name="about_link">http://www.linphone.org\n\nInstructions\nhttp://www.linphone.org/user-guide.html\n\n© 2015 Belledonne Communications</string>
|
||||||
<string name="setup_welcome">Овај помоћник ће вам помоћи да користите СИП налог за ваше позиве.</string>
|
<string name="setup_welcome">Овај помоћник ће вам помоћи да користите СИП налог за ваше позиве.</string>
|
||||||
<string name="setup_create_account">Направи налог на линфон.орг-у</string>
|
<string name="setup_create_account">Направи налог на линфон.орг-у</string>
|
||||||
<string name="setup_login_linphone">Већ имам налог линфон.орг-а</string>
|
<string name="setup_login_linphone">Већ имам налог линфон.орг-а</string>
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
<string name="notification_registered">Registered to %s </string>
|
<string name="notification_registered">Registered to %s </string>
|
||||||
<string name="notification_register_failure">Fails to register to %s</string>
|
<string name="notification_register_failure">Fails to register to %s</string>
|
||||||
<string name="about_text">Linphone %s SIP (rfc 3261) compatible phone under GNU Public License V2</string>
|
<string name="about_text">Linphone %s SIP (rfc 3261) compatible phone under GNU Public License V2</string>
|
||||||
<string name="about_link">http://www.linphone.org\n\nInstructions\nhttp://www.linphone.org/m/help\n\n© 2011 Belledonne Communications</string>
|
<string name="about_link">http://www.linphone.org\n\nInstructions\nhttp://www.linphone.org/user-guide.html\n\n© 2015 Belledonne Communications</string>
|
||||||
|
|
||||||
<string name="setup_welcome">This assistant will help you to use a SIP account for your calls.</string>
|
<string name="setup_welcome">This assistant will help you to use a SIP account for your calls.</string>
|
||||||
<string name="setup_create_account">Create an account on linphone.org</string>
|
<string name="setup_create_account">Create an account on linphone.org</string>
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
<bool name="hide_accounts">false</bool>
|
<bool name="hide_accounts">false</bool>
|
||||||
<bool name="display_account_wizard_at_first_start">true</bool>
|
<bool name="display_account_wizard_at_first_start">true</bool>
|
||||||
<bool name="use_linphone_server_ports">true</bool>
|
<bool name="use_linphone_server_ports">true</bool>
|
||||||
<bool name="allow_only_phone_numbers_in_wizard">true</bool>
|
<bool name="allow_only_phone_numbers_in_wizard">false</bool>
|
||||||
|
|
||||||
<bool name="use_android_native_contact_edit_interface">false</bool>
|
<bool name="use_android_native_contact_edit_interface">false</bool>
|
||||||
<!-- The following settings are only usefull if use_android_native_contact_edit_interface = false -->
|
<!-- The following settings are only usefull if use_android_native_contact_edit_interface = false -->
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
<account-authenticator
|
<account-authenticator
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:accountType="org.linphone"
|
android:accountType="@string/sync_account_type"
|
||||||
android:icon="@drawable/logo_linphone_57x57"
|
android:icon="@drawable/logo_linphone_57x57"
|
||||||
android:smallIcon="@drawable/logo_linphone_57x57"
|
android:smallIcon="@drawable/logo_linphone_57x57"
|
||||||
android:label="@string/app_name"/>
|
android:label="@string/app_name"/>
|
|
@ -20,11 +20,15 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v4.app.FragmentActivity;
|
import android.support.v4.app.FragmentActivity;
|
||||||
|
import android.support.v4.app.FragmentManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Margaux Clerc
|
* @author Margaux Clerc
|
||||||
*/
|
*/
|
||||||
public class ChatActivity extends FragmentActivity {
|
public class ChatActivity extends FragmentActivity {
|
||||||
|
private static final String CHAT_FRAGMENT = "chatFragment";
|
||||||
|
private ChatFragment chatFragment;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
@ -39,6 +43,17 @@ public class ChatActivity extends FragmentActivity {
|
||||||
ChatFragment fragment = new ChatFragment();
|
ChatFragment fragment = new ChatFragment();
|
||||||
fragment.setArguments(extras);
|
fragment.setArguments(extras);
|
||||||
getSupportFragmentManager().beginTransaction().add(R.id.fragmentContainer, fragment, "ChatFragment").commit();
|
getSupportFragmentManager().beginTransaction().add(R.id.fragmentContainer, fragment, "ChatFragment").commit();
|
||||||
|
|
||||||
|
FragmentManager fm = getSupportFragmentManager();
|
||||||
|
chatFragment = (ChatFragment) fm.findFragmentByTag(CHAT_FRAGMENT);
|
||||||
|
|
||||||
|
// If the Fragment is non-null, then it is currently being
|
||||||
|
// retained across a configuration change.
|
||||||
|
if (chatFragment == null) {
|
||||||
|
chatFragment = new ChatFragment();
|
||||||
|
chatFragment.setArguments(extras);
|
||||||
|
fm.beginTransaction().add(R.id.fragmentContainer, chatFragment, CHAT_FRAGMENT).commit();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -125,6 +125,9 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
|
||||||
instance = this;
|
instance = this;
|
||||||
View view = inflater.inflate(R.layout.chat, container, false);
|
View view = inflater.inflate(R.layout.chat, container, false);
|
||||||
|
|
||||||
|
// Retain the fragment across configuration changes
|
||||||
|
setRetainInstance(true);
|
||||||
|
|
||||||
//Retrieve parameter from intent
|
//Retrieve parameter from intent
|
||||||
sipUri = getArguments().getString("SipUri");
|
sipUri = getArguments().getString("SipUri");
|
||||||
displayName = getArguments().getString("DisplayName");
|
displayName = getArguments().getString("DisplayName");
|
||||||
|
@ -438,12 +441,16 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
|
||||||
|
|
||||||
LinphoneService.instance().removeMessageNotification();
|
LinphoneService.instance().removeMessageNotification();
|
||||||
|
|
||||||
|
if (LinphoneActivity.isInstanciated()) {
|
||||||
|
LinphoneActivity.instance().updateChatFragment(null);
|
||||||
|
}
|
||||||
|
|
||||||
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
|
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
|
||||||
if (lc != null) {
|
if (lc != null) {
|
||||||
lc.removeListener(mListener);
|
lc.removeListener(mListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
getActivity().getIntent().putExtra("messageDraft", message.getText().toString());
|
onSaveInstanceState(getArguments());
|
||||||
super.onPause();
|
super.onPause();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -462,6 +469,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
|
||||||
if (getResources().getBoolean(R.bool.show_statusbar_only_on_dialer)) {
|
if (getResources().getBoolean(R.bool.show_statusbar_only_on_dialer)) {
|
||||||
LinphoneActivity.instance().hideStatusBar();
|
LinphoneActivity.instance().hideStatusBar();
|
||||||
}
|
}
|
||||||
|
LinphoneActivity.instance().updateChatFragment(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
String draft = getArguments().getString("messageDraft");
|
String draft = getArguments().getString("messageDraft");
|
||||||
|
@ -557,7 +565,9 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(byte[] result) {
|
protected void onPostExecute(byte[] result) {
|
||||||
|
if (progressDialog != null && progressDialog.isShowing()) {
|
||||||
progressDialog.dismiss();
|
progressDialog.dismiss();
|
||||||
|
}
|
||||||
|
|
||||||
mUploadingImageStream = new ByteArrayInputStream(result);
|
mUploadingImageStream = new ByteArrayInputStream(result);
|
||||||
|
|
||||||
|
|
|
@ -395,10 +395,9 @@ public class ChatStorage {
|
||||||
public int compare(LinphoneChatRoom a, LinphoneChatRoom b) {
|
public int compare(LinphoneChatRoom a, LinphoneChatRoom b) {
|
||||||
LinphoneChatMessage[] messagesA = a.getHistory(1);
|
LinphoneChatMessage[] messagesA = a.getHistory(1);
|
||||||
LinphoneChatMessage[] messagesB = b.getHistory(1);
|
LinphoneChatMessage[] messagesB = b.getHistory(1);
|
||||||
long atime, btime;
|
long atime = messagesA[0].getTime();
|
||||||
// /!\ Warning: Have to take the second element because it returns two even when asking for only one...
|
long btime = messagesB[0].getTime();
|
||||||
atime = messagesA.length > 1 ? messagesA[1].getTime() : messagesA[0].getTime();
|
|
||||||
btime = messagesA.length > 1 ? messagesB[1].getTime() : messagesB[0].getTime();
|
|
||||||
if (atime > btime)
|
if (atime > btime)
|
||||||
return -1;
|
return -1;
|
||||||
else if (btime > atime)
|
else if (btime > atime)
|
||||||
|
|
|
@ -22,6 +22,7 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.linphone.compatibility.Compatibility;
|
import org.linphone.compatibility.Compatibility;
|
||||||
|
import org.linphone.core.LinphoneCore;
|
||||||
import org.linphone.core.LinphoneFriend;
|
import org.linphone.core.LinphoneFriend;
|
||||||
|
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
|
@ -104,12 +105,15 @@ public class Contact implements Serializable {
|
||||||
|
|
||||||
public void refresh(ContentResolver cr) {
|
public void refresh(ContentResolver cr) {
|
||||||
this.numbersOrAddresses = Compatibility.extractContactNumbersAndAddresses(id, cr);
|
this.numbersOrAddresses = Compatibility.extractContactNumbersAndAddresses(id, cr);
|
||||||
for(LinphoneFriend friend : LinphoneManager.getLcIfManagerNotDestroyedOrNull().getFriendList()) {
|
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
|
||||||
|
if(lc != null && lc.getFriendList() != null) {
|
||||||
|
for (LinphoneFriend friend :lc.getFriendList()){
|
||||||
if (friend.getRefKey().equals(id)) {
|
if (friend.getRefKey().equals(id)) {
|
||||||
hasFriends = true;
|
hasFriends = true;
|
||||||
this.numbersOrAddresses.add(friend.getAddress().asStringUriOnly());
|
this.numbersOrAddresses.add(friend.getAddress().asStringUriOnly());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
this.name = Compatibility.refreshContactName(cr, id);
|
this.name = Compatibility.refreshContactName(cr, id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,9 +79,10 @@ public class ContactFragment extends Fragment implements OnClickListener {
|
||||||
private OnClickListener chatListener = new OnClickListener() {
|
private OnClickListener chatListener = new OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
if (LinphoneActivity.isInstanciated())
|
if (LinphoneActivity.isInstanciated()) {
|
||||||
LinphoneActivity.instance().displayChat(v.getTag().toString());
|
LinphoneActivity.instance().displayChat(v.getTag().toString());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||||
|
@ -147,6 +148,7 @@ public class ContactFragment extends Fragment implements OnClickListener {
|
||||||
v.findViewById(R.id.start_chat).setOnClickListener(chatListener);
|
v.findViewById(R.id.start_chat).setOnClickListener(chatListener);
|
||||||
LinphoneProxyConfig lpc = LinphoneManager.getLc().getDefaultProxyConfig();
|
LinphoneProxyConfig lpc = LinphoneManager.getLc().getDefaultProxyConfig();
|
||||||
if (lpc != null) {
|
if (lpc != null) {
|
||||||
|
displayednumberOrAddress = lpc.normalizePhoneNumber(displayednumberOrAddress);
|
||||||
if (!displayednumberOrAddress.startsWith("sip:")) {
|
if (!displayednumberOrAddress.startsWith("sip:")) {
|
||||||
numberOrAddress = "sip:" + displayednumberOrAddress;
|
numberOrAddress = "sip:" + displayednumberOrAddress;
|
||||||
}
|
}
|
||||||
|
|
|
@ -593,9 +593,8 @@ public class ContactsManager {
|
||||||
c.close();
|
c.close();
|
||||||
return address;
|
return address;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
c.close();
|
c.close();
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -199,7 +199,7 @@ public class DialerFragment extends Fragment {
|
||||||
mAddress.setText(intent.getData().getSchemeSpecificPart());
|
mAddress.setText(intent.getData().getSchemeSpecificPart());
|
||||||
} else {
|
} else {
|
||||||
Uri contactUri = intent.getData();
|
Uri contactUri = intent.getData();
|
||||||
String address = ContactsManager.getInstance().queryAddressOrNumber(getActivity().getContentResolver(),contactUri);
|
String address = ContactsManager.getInstance().queryAddressOrNumber(LinphoneService.instance().getContentResolver(),contactUri);
|
||||||
if(address != null) {
|
if(address != null) {
|
||||||
mAddress.setText(address);
|
mAddress.setText(address);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -53,9 +53,12 @@ public class EditContactFragment extends Fragment {
|
||||||
isNewContact = false;
|
isNewContact = false;
|
||||||
contactID = Integer.parseInt(contact.getID());
|
contactID = Integer.parseInt(contact.getID());
|
||||||
contact.refresh(getActivity().getContentResolver());
|
contact.refresh(getActivity().getContentResolver());
|
||||||
}
|
|
||||||
if (getArguments().getString("NewSipAdress") != null) {
|
if (getArguments().getString("NewSipAdress") != null) {
|
||||||
newSipOrNumberToAdd = getArguments().getString("NewSipAdress");
|
newSipOrNumberToAdd = getArguments().getString("NewSipAdress");
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (getArguments().getString("NewSipAdress") != null) {
|
||||||
|
newSipOrNumberToAdd = getArguments().getString("NewSipAdress");
|
||||||
isNewContact = true;
|
isNewContact = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -257,7 +260,7 @@ public class EditContactFragment extends Fragment {
|
||||||
if (forceAddNumber) {
|
if (forceAddNumber) {
|
||||||
tempNounoa = new NewOrUpdatedNumberOrAddress(isSip);
|
tempNounoa = new NewOrUpdatedNumberOrAddress(isSip);
|
||||||
} else {
|
} else {
|
||||||
if(isNewContact) {
|
if(isNewContact || newSipOrNumberToAdd != null) {
|
||||||
tempNounoa = new NewOrUpdatedNumberOrAddress(isSip, numberOrAddress);
|
tempNounoa = new NewOrUpdatedNumberOrAddress(isSip, numberOrAddress);
|
||||||
} else {
|
} else {
|
||||||
tempNounoa = new NewOrUpdatedNumberOrAddress(numberOrAddress, isSip);
|
tempNounoa = new NewOrUpdatedNumberOrAddress(numberOrAddress, isSip);
|
||||||
|
|
|
@ -92,6 +92,7 @@ public class InCallActivity extends FragmentActivity implements OnClickListener
|
||||||
private Animation slideOutLeftToRight, slideInRightToLeft, slideInBottomToTop, slideInTopToBottom, slideOutBottomToTop, slideOutTopToBottom;
|
private Animation slideOutLeftToRight, slideInRightToLeft, slideInBottomToTop, slideInTopToBottom, slideOutBottomToTop, slideOutTopToBottom;
|
||||||
private CountDownTimer timer;
|
private CountDownTimer timer;
|
||||||
private boolean isVideoCallPaused = false;
|
private boolean isVideoCallPaused = false;
|
||||||
|
AcceptCallUpdateDialogFragment callUpdateDialog;
|
||||||
|
|
||||||
private TableLayout callsList;
|
private TableLayout callsList;
|
||||||
private LayoutInflater inflater;
|
private LayoutInflater inflater;
|
||||||
|
@ -192,6 +193,8 @@ public class InCallActivity extends FragmentActivity implements OnClickListener
|
||||||
timer = new CountDownTimer(SECONDS_BEFORE_DENYING_CALL_UPDATE, 1000) {
|
timer = new CountDownTimer(SECONDS_BEFORE_DENYING_CALL_UPDATE, 1000) {
|
||||||
public void onTick(long millisUntilFinished) { }
|
public void onTick(long millisUntilFinished) { }
|
||||||
public void onFinish() {
|
public void onFinish() {
|
||||||
|
if (callUpdateDialog != null)
|
||||||
|
callUpdateDialog.dismiss();
|
||||||
acceptCallUpdate(false);
|
acceptCallUpdate(false);
|
||||||
}
|
}
|
||||||
}.start();
|
}.start();
|
||||||
|
@ -1140,7 +1143,7 @@ public class InCallActivity extends FragmentActivity implements OnClickListener
|
||||||
|
|
||||||
private void showAcceptCallUpdateDialog() {
|
private void showAcceptCallUpdateDialog() {
|
||||||
FragmentManager fm = getSupportFragmentManager();
|
FragmentManager fm = getSupportFragmentManager();
|
||||||
AcceptCallUpdateDialogFragment callUpdateDialog = new AcceptCallUpdateDialogFragment();
|
callUpdateDialog = new AcceptCallUpdateDialogFragment();
|
||||||
callUpdateDialog.show(fm, "Accept Call Update Dialog");
|
callUpdateDialog.show(fm, "Accept Call Update Dialog");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -102,6 +102,7 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene
|
||||||
private FragmentsAvailable currentFragment, nextFragment;
|
private FragmentsAvailable currentFragment, nextFragment;
|
||||||
private List<FragmentsAvailable> fragmentsHistory;
|
private List<FragmentsAvailable> fragmentsHistory;
|
||||||
private Fragment dialerFragment, messageListFragment, friendStatusListenerFragment;
|
private Fragment dialerFragment, messageListFragment, friendStatusListenerFragment;
|
||||||
|
private ChatFragment chatFragment;
|
||||||
private SavedState dialerSavedState;
|
private SavedState dialerSavedState;
|
||||||
private boolean isAnimationDisabled = false, preferLinphoneContacts = false;
|
private boolean isAnimationDisabled = false, preferLinphoneContacts = false;
|
||||||
private OrientationEventListener mOrientationHelper;
|
private OrientationEventListener mOrientationHelper;
|
||||||
|
@ -177,6 +178,9 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene
|
||||||
mListener = new LinphoneCoreListenerBase(){
|
mListener = new LinphoneCoreListenerBase(){
|
||||||
@Override
|
@Override
|
||||||
public void messageReceived(LinphoneCore lc, LinphoneChatRoom cr, LinphoneChatMessage message) {
|
public void messageReceived(LinphoneCore lc, LinphoneChatRoom cr, LinphoneChatMessage message) {
|
||||||
|
if(!displayChatMessageNotification(message.getFrom().asStringUriOnly())) {
|
||||||
|
cr.markAsRead();
|
||||||
|
}
|
||||||
displayMissedChats(getChatStorage().getUnreadMessageCount());
|
displayMissedChats(getChatStorage().getUnreadMessageCount());
|
||||||
if (messageListFragment != null && messageListFragment.isVisible()) {
|
if (messageListFragment != null && messageListFragment.isVisible()) {
|
||||||
((ChatListFragment) messageListFragment).refresh();
|
((ChatListFragment) messageListFragment).refresh();
|
||||||
|
@ -597,6 +601,16 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene
|
||||||
|
|
||||||
public void displayAbout() {
|
public void displayAbout() {
|
||||||
changeCurrentFragment(FragmentsAvailable.ABOUT, null);
|
changeCurrentFragment(FragmentsAvailable.ABOUT, null);
|
||||||
|
settings.setSelected(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean displayChatMessageNotification(String address){
|
||||||
|
if(chatFragment != null) {
|
||||||
|
if(chatFragment.getSipUri().equals(address)){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void displayChat(String sipUri) {
|
public void displayChat(String sipUri) {
|
||||||
|
@ -641,6 +655,9 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene
|
||||||
changeCurrentFragment(FragmentsAvailable.CHATLIST, null);
|
changeCurrentFragment(FragmentsAvailable.CHATLIST, null);
|
||||||
displayChat(sipUri);
|
displayChat(sipUri);
|
||||||
}
|
}
|
||||||
|
if (messageListFragment != null && messageListFragment.isVisible()) {
|
||||||
|
((ChatListFragment) messageListFragment).refresh();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
Intent intent = new Intent(this, ChatActivity.class);
|
Intent intent = new Intent(this, ChatActivity.class);
|
||||||
intent.putExtra("SipUri", sipUri);
|
intent.putExtra("SipUri", sipUri);
|
||||||
|
@ -744,6 +761,10 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene
|
||||||
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN | WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
|
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN | WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void updateChatFragment(ChatFragment fragment) {
|
||||||
|
chatFragment = fragment;
|
||||||
|
}
|
||||||
|
|
||||||
public void updateChatListFragment(ChatListFragment fragment) {
|
public void updateChatListFragment(ChatListFragment fragment) {
|
||||||
messageListFragment = fragment;
|
messageListFragment = fragment;
|
||||||
}
|
}
|
||||||
|
|
|
@ -717,12 +717,14 @@ public class LinphoneManager implements LinphoneCoreListener {
|
||||||
try {
|
try {
|
||||||
Contact contact = ContactsManager.getInstance().findContactWithAddress(mServiceContext.getContentResolver(),from);
|
Contact contact = ContactsManager.getInstance().findContactWithAddress(mServiceContext.getContentResolver(),from);
|
||||||
if (!mServiceContext.getResources().getBoolean(R.bool.disable_chat__message_notification)) {
|
if (!mServiceContext.getResources().getBoolean(R.bool.disable_chat__message_notification)) {
|
||||||
if(contact != null) {
|
if(LinphoneActivity.isInstanciated() && LinphoneActivity.instance().displayChatMessageNotification(from.asStringUriOnly())) {
|
||||||
|
if (contact != null) {
|
||||||
LinphoneService.instance().displayMessageNotification(from.asStringUriOnly(), contact.getName(), textMessage);
|
LinphoneService.instance().displayMessageNotification(from.asStringUriOnly(), contact.getName(), textMessage);
|
||||||
} else {
|
} else {
|
||||||
LinphoneService.instance().displayMessageNotification(from.asStringUriOnly(), from.getUserName(), textMessage);
|
LinphoneService.instance().displayMessageNotification(from.asStringUriOnly(), from.getUserName(), textMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Log.e(e);
|
Log.e(e);
|
||||||
}
|
}
|
||||||
|
|
|
@ -965,8 +965,8 @@ public class LinphonePreferences {
|
||||||
// Advanced settings
|
// Advanced settings
|
||||||
public void setDebugEnabled(boolean enabled) {
|
public void setDebugEnabled(boolean enabled) {
|
||||||
getConfig().setBool("app", "debug", enabled);
|
getConfig().setBool("app", "debug", enabled);
|
||||||
LinphoneCoreFactory.instance().setDebugMode(enabled, getString(R.string.app_name));
|
|
||||||
LinphoneCoreFactory.instance().enableLogCollection(enabled);
|
LinphoneCoreFactory.instance().enableLogCollection(enabled);
|
||||||
|
LinphoneCoreFactory.instance().setDebugMode(enabled, getString(R.string.app_name));
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isDebugEnabled() {
|
public boolean isDebugEnabled() {
|
||||||
|
|
|
@ -494,7 +494,7 @@ public final class LinphoneService extends Service {
|
||||||
//MANUFACTURER doesn't exist in android 1.5.
|
//MANUFACTURER doesn't exist in android 1.5.
|
||||||
//sb.append("MANUFACTURER=").append(Build.MANUFACTURER).append("\n");
|
//sb.append("MANUFACTURER=").append(Build.MANUFACTURER).append("\n");
|
||||||
sb.append("SDK=").append(Build.VERSION.SDK_INT).append("\n");
|
sb.append("SDK=").append(Build.VERSION.SDK_INT).append("\n");
|
||||||
sb.append("EABI=").append(Build.CPU_ABI).append("\n");
|
sb.append("EABI=").append(Version.getCpuAbis().get(0)).append("\n");
|
||||||
Log.i(sb.toString());
|
Log.i(sb.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -50,6 +50,7 @@ public class ApiTwentyOnePlus {
|
||||||
.setSmallIcon(R.drawable.chat_icon_over)
|
.setSmallIcon(R.drawable.chat_icon_over)
|
||||||
.setAutoCancel(true)
|
.setAutoCancel(true)
|
||||||
.setContentIntent(intent)
|
.setContentIntent(intent)
|
||||||
|
.setDefaults(Notification.DEFAULT_ALL)
|
||||||
.setLargeIcon(contactIcon)
|
.setLargeIcon(contactIcon)
|
||||||
.setCategory(Notification.CATEGORY_MESSAGE)
|
.setCategory(Notification.CATEGORY_MESSAGE)
|
||||||
.setVisibility(Notification.VISIBILITY_PRIVATE)
|
.setVisibility(Notification.VISIBILITY_PRIVATE)
|
||||||
|
|
|
@ -381,8 +381,9 @@ public class SetupActivity extends FragmentActivity implements OnClickListener {
|
||||||
back.setVisibility(View.GONE);
|
back.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void isAccountVerified() {
|
public void isAccountVerified(String username) {
|
||||||
Toast.makeText(this, getString(R.string.setup_account_validated), Toast.LENGTH_LONG).show();
|
Toast.makeText(this, getString(R.string.setup_account_validated), Toast.LENGTH_LONG).show();
|
||||||
|
LinphoneManager.getLcIfManagerNotDestroyedOrNull().refreshRegisters();
|
||||||
launchEchoCancellerCalibration(true);
|
launchEchoCancellerCalibration(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -59,7 +59,7 @@ public class WizardConfirmFragment extends Fragment {
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void isAccountVerified(String username) {
|
private void isAccountVerified(final String username) {
|
||||||
final Runnable runNotReachable = new Runnable() {
|
final Runnable runNotReachable = new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
Toast.makeText(getActivity(), getString(R.string.wizard_server_unavailable), Toast.LENGTH_LONG).show();
|
Toast.makeText(getActivity(), getString(R.string.wizard_server_unavailable), Toast.LENGTH_LONG).show();
|
||||||
|
@ -78,7 +78,7 @@ public class WizardConfirmFragment extends Fragment {
|
||||||
|
|
||||||
Runnable runOk = new Runnable() {
|
Runnable runOk = new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
SetupActivity.instance().isAccountVerified();
|
SetupActivity.instance().isAccountVerified(username);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -157,7 +157,8 @@ public class WizardFragment extends Fragment {
|
||||||
|
|
||||||
private boolean isUsernameCorrect(String username) {
|
private boolean isUsernameCorrect(String username) {
|
||||||
if (getResources().getBoolean(R.bool.allow_only_phone_numbers_in_wizard)) {
|
if (getResources().getBoolean(R.bool.allow_only_phone_numbers_in_wizard)) {
|
||||||
return username.matches("^(\\+)?(\\d-)?(\\d{3}-)?(\\d{3}-)?\\d{4,}$");
|
LinphoneProxyConfig lpc = LinphoneManager.getLc().createProxyConfig();
|
||||||
|
return lpc.isPhoneNumber(username);
|
||||||
} else {
|
} else {
|
||||||
return username.matches("^[a-zA-Z]+[a-zA-Z0-9.\\-_]{2,}$");
|
return username.matches("^[a-zA-Z]+[a-zA-Z0-9.\\-_]{2,}$");
|
||||||
}
|
}
|
||||||
|
|
|
@ -155,8 +155,8 @@ public class Digit extends Button implements AddressAware {
|
||||||
if(id == R.id.Digit1 && lc.getCalls().length == 0){
|
if(id == R.id.Digit1 && lc.getCalls().length == 0){
|
||||||
String voiceMail = LinphonePreferences.instance().getVoiceMailUri();
|
String voiceMail = LinphonePreferences.instance().getVoiceMailUri();
|
||||||
mAddress.getEditableText().clear();
|
mAddress.getEditableText().clear();
|
||||||
mAddress.getEditableText().append(voiceMail);
|
|
||||||
if(voiceMail != null){
|
if(voiceMail != null){
|
||||||
|
mAddress.getEditableText().append(voiceMail);
|
||||||
LinphoneManager.getInstance().newOutgoingCall(mAddress);
|
LinphoneManager.getInstance().newOutgoingCall(mAddress);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 7d27eb87c5dbd530e1c0a95cd0da2e233fb4d6b5
|
Subproject commit 6fd479005cf9e9be15449cab34717fe17bda6dc5
|
|
@ -1 +1 @@
|
||||||
Subproject commit ebe07ed33ef00f8ec133374977a5cadf42044fee
|
Subproject commit 4a4f757f66b02cf8834fd8d7a939bf54b245ad7e
|
|
@ -1 +1 @@
|
||||||
Subproject commit 5a0c92bac32d086e176e2b10d13c7fd5bb4c1032
|
Subproject commit 7a5f881221815f2621e876d3a677840053969d54
|
|
@ -4,6 +4,7 @@ import junit.framework.Assert;
|
||||||
|
|
||||||
import org.linphone.ContactsFragment;
|
import org.linphone.ContactsFragment;
|
||||||
import org.linphone.LinphoneActivity;
|
import org.linphone.LinphoneActivity;
|
||||||
|
import org.linphone.R;
|
||||||
|
|
||||||
import android.test.suitebuilder.annotation.LargeTest;
|
import android.test.suitebuilder.annotation.LargeTest;
|
||||||
import android.test.suitebuilder.annotation.MediumTest;
|
import android.test.suitebuilder.annotation.MediumTest;
|
||||||
|
@ -34,6 +35,8 @@ public class Contacts extends SampleTest {
|
||||||
|
|
||||||
solo.clickOnText(iContext.getString(org.linphone.test.R.string.contact_name));
|
solo.clickOnText(iContext.getString(org.linphone.test.R.string.contact_name));
|
||||||
solo.clickOnText(aContext.getString(org.linphone.R.string.delete_contact));
|
solo.clickOnText(aContext.getString(org.linphone.R.string.delete_contact));
|
||||||
|
solo.sleep(1000);
|
||||||
|
solo.clickOnText(aContext.getString(R.string.button_ok));
|
||||||
|
|
||||||
Assert.assertFalse(solo.searchText(iContext.getString(org.linphone.test.R.string.contact_name)));
|
Assert.assertFalse(solo.searchText(iContext.getString(org.linphone.test.R.string.contact_name)));
|
||||||
}
|
}
|
||||||
|
@ -70,6 +73,7 @@ public class Contacts extends SampleTest {
|
||||||
@LargeTest
|
@LargeTest
|
||||||
public void testDEditContactAddSipAddressAndRemoveNumber() {
|
public void testDEditContactAddSipAddressAndRemoveNumber() {
|
||||||
goToContacts();
|
goToContacts();
|
||||||
|
solo.clickOnText(aContext.getString(org.linphone.R.string.button_all_contacts));
|
||||||
|
|
||||||
solo.clickOnText(iContext.getString(org.linphone.test.R.string.contact_name));
|
solo.clickOnText(iContext.getString(org.linphone.test.R.string.contact_name));
|
||||||
solo.clickOnText(aContext.getString(org.linphone.R.string.button_edit));
|
solo.clickOnText(aContext.getString(org.linphone.R.string.button_edit));
|
||||||
|
@ -110,6 +114,8 @@ public class Contacts extends SampleTest {
|
||||||
|
|
||||||
solo.clickOnText(iContext.getString(org.linphone.test.R.string.contact_name));
|
solo.clickOnText(iContext.getString(org.linphone.test.R.string.contact_name));
|
||||||
solo.clickOnText(aContext.getString(org.linphone.R.string.delete_contact));
|
solo.clickOnText(aContext.getString(org.linphone.R.string.delete_contact));
|
||||||
|
solo.sleep(1000);
|
||||||
|
solo.clickOnText(aContext.getString(R.string.button_ok));
|
||||||
Assert.assertFalse(solo.searchText(iContext.getString(org.linphone.test.R.string.contact_name)));
|
Assert.assertFalse(solo.searchText(iContext.getString(org.linphone.test.R.string.contact_name)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue