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/build.xml
|
||||
tests/project.properties
|
||||
ant_password.properties
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.linphone"
|
||||
android:versionCode="2410" android:installLocation="auto">
|
||||
android:versionCode="2400" android:installLocation="auto">
|
||||
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="22"/>
|
||||
|
||||
<!-- Permissions for Push Notification -->
|
||||
|
@ -119,6 +119,7 @@
|
|||
|
||||
<activity android:name="org.linphone.ChatActivity"
|
||||
android:theme="@style/NoTitle"
|
||||
android:configChanges="orientation|screenSize|keyboardHidden"
|
||||
android:windowSoftInputMode="adjustPan|adjustResize"
|
||||
android:launchMode="singleTask">
|
||||
<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.)
|
||||
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
|
||||
ifeq ($(ENABLE_GPL_THIRD_PARTIES),1)
|
||||
@echo "***************************************************************************"
|
||||
|
@ -462,10 +471,8 @@ install-apk:
|
|||
|
||||
release: update-project
|
||||
$(ANT) clean
|
||||
echo "What is the version name for the release ?"; \
|
||||
read version; \
|
||||
echo "version.name=$$version" > default.properties
|
||||
patch -p1 < release.patch
|
||||
cat ant.properties | grep version.name > default.properties
|
||||
$(ANT) release
|
||||
git checkout HEAD AndroidManifest.xml
|
||||
|
||||
|
|
8
README
8
README
|
@ -25,9 +25,11 @@ To build liblinphone for Android, you must:
|
|||
$ make mediastreamer2-sdk
|
||||
7) (Optional) To generate a signed apk to publish on the Google Play, run
|
||||
$ 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 key.store and key.alias in order to correctly
|
||||
sign the generated apk (it will ask you the password during the process)
|
||||
Make sure you filled the ant.properties values for version.name, key.store and key.alias in order to correctly sign the generated apk.
|
||||
You also may want to create a file name ant_password.properties with the following:
|
||||
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:
|
||||
--------------------
|
||||
|
|
|
@ -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
|
||||
key.store=bc-android.keystore
|
||||
key.alias=nw8000
|
||||
version.name=2.4.0
|
||||
|
|
|
@ -26,8 +26,9 @@
|
|||
application and should be checked into Version Control Systems.
|
||||
|
||||
-->
|
||||
<property file="ant.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
|
||||
get it from the ANDROID_HOME env var.
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package org.linphone.tester;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.linphone.core.LinphoneCoreFactory;
|
||||
import org.linphone.mediastream.Version;
|
||||
|
||||
|
@ -23,26 +25,36 @@ public class Tester {
|
|||
}
|
||||
|
||||
static {
|
||||
|
||||
LinphoneCoreFactory.instance();
|
||||
|
||||
System.loadLibrary("cunit");
|
||||
String eabi = "armeabi";
|
||||
if (Version.isX86()) {
|
||||
eabi = "x86";
|
||||
} else if (Version.isArmv7()) {
|
||||
eabi = "armeabi-v7a";
|
||||
List<String> cpuabis=Version.getCpuAbis();
|
||||
String ffmpegAbi;
|
||||
boolean libLoaded=false;
|
||||
Throwable firstException=null;
|
||||
for (String abi : cpuabis){
|
||||
Log.i("LinphoneCoreFactoryImpl","Trying to load liblinphone for " + abi);
|
||||
ffmpegAbi=abi;
|
||||
// FFMPEG (audio/video)
|
||||
if (abi.startsWith("armeabi")) {
|
||||
ffmpegAbi="arm";
|
||||
}
|
||||
loadOptionalLibrary("ffmpeg-linphone-"+ffmpegAbi);
|
||||
//Main library
|
||||
try {
|
||||
System.loadLibrary("linphone_tester-"+eabi);
|
||||
|
||||
} catch (UnsatisfiedLinkError ule) {
|
||||
Log.w("linphone", "Failed to load liblinphone_tester-"+eabi);
|
||||
System.loadLibrary("linphone_tester");
|
||||
System.loadLibrary("linphone-" + abi);
|
||||
Log.i("LinphoneCoreFactoryImpl","Loading done with " + abi);
|
||||
libLoaded=true;
|
||||
break;
|
||||
}catch(Throwable e) {
|
||||
if (firstException == null) firstException=e;
|
||||
}
|
||||
}
|
||||
|
||||
if (!libLoaded){
|
||||
throw new RuntimeException(firstException);
|
||||
|
||||
}else{
|
||||
Version.dumpCapabilities();
|
||||
}
|
||||
}
|
||||
|
||||
public native int run(String args[]);
|
||||
public static native void keepAccounts(boolean keep);
|
||||
|
|
|
@ -79,12 +79,28 @@
|
|||
android:textColor="@android:color/black"
|
||||
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
|
||||
android:textCursorDrawable="@null"
|
||||
android:id="@+id/setup_password_confirm"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/setup_password"
|
||||
android:hint="@string/setup_password_confirm_hint"
|
||||
android:singleLine="true"
|
||||
android:lines="1"
|
||||
|
@ -98,7 +114,7 @@
|
|||
|
||||
<ImageView
|
||||
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_height="wrap_content"
|
||||
android:paddingRight="5dp"
|
||||
|
@ -160,12 +176,6 @@
|
|||
|
||||
</RelativeLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingLeft="10dp"
|
||||
android:paddingRight="10dp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
android:layout_height="75dp">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
<string name="notification_registered">مُسجَّل في %s</string>
|
||||
<string name="notification_register_failure">فشِل التسجيل في %s</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_create_account">إنشاء حساب في 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_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_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_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>
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
<string name="notification_registered">%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_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_create_account">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_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_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_create_account">Creëer een account op linphone.org</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_register_failure">Ошибка регистрации в %s</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_create_account">Создать учётную запись на linphone.org</string>
|
||||
<string name="setup_login_linphone">Уже есть учётная запись на linphone.org</string>
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
<string name="notification_registered">Уписан на „%s“ </string>
|
||||
<string name="notification_register_failure">Нисам успео да се упишем на „%s“</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_create_account">Направи налог на линфон.орг-у</string>
|
||||
<string name="setup_login_linphone">Већ имам налог линфон.орг-а</string>
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
<string name="notification_registered">Registered 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_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_create_account">Create an account on linphone.org</string>
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
<bool name="hide_accounts">false</bool>
|
||||
<bool name="display_account_wizard_at_first_start">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>
|
||||
<!-- The following settings are only usefull if use_android_native_contact_edit_interface = false -->
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
<account-authenticator
|
||||
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:smallIcon="@drawable/logo_linphone_57x57"
|
||||
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.support.v4.app.FragmentActivity;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
|
||||
/**
|
||||
* @author Margaux Clerc
|
||||
*/
|
||||
public class ChatActivity extends FragmentActivity {
|
||||
private static final String CHAT_FRAGMENT = "chatFragment";
|
||||
private ChatFragment chatFragment;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
@ -39,6 +43,17 @@ public class ChatActivity extends FragmentActivity {
|
|||
ChatFragment fragment = new ChatFragment();
|
||||
fragment.setArguments(extras);
|
||||
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;
|
||||
View view = inflater.inflate(R.layout.chat, container, false);
|
||||
|
||||
// Retain the fragment across configuration changes
|
||||
setRetainInstance(true);
|
||||
|
||||
//Retrieve parameter from intent
|
||||
sipUri = getArguments().getString("SipUri");
|
||||
displayName = getArguments().getString("DisplayName");
|
||||
|
@ -438,12 +441,16 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
|
|||
|
||||
LinphoneService.instance().removeMessageNotification();
|
||||
|
||||
if (LinphoneActivity.isInstanciated()) {
|
||||
LinphoneActivity.instance().updateChatFragment(null);
|
||||
}
|
||||
|
||||
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
|
||||
if (lc != null) {
|
||||
lc.removeListener(mListener);
|
||||
}
|
||||
|
||||
getActivity().getIntent().putExtra("messageDraft", message.getText().toString());
|
||||
onSaveInstanceState(getArguments());
|
||||
super.onPause();
|
||||
}
|
||||
|
||||
|
@ -462,6 +469,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
|
|||
if (getResources().getBoolean(R.bool.show_statusbar_only_on_dialer)) {
|
||||
LinphoneActivity.instance().hideStatusBar();
|
||||
}
|
||||
LinphoneActivity.instance().updateChatFragment(this);
|
||||
}
|
||||
|
||||
String draft = getArguments().getString("messageDraft");
|
||||
|
@ -557,7 +565,9 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
|
|||
|
||||
@Override
|
||||
protected void onPostExecute(byte[] result) {
|
||||
if (progressDialog != null && progressDialog.isShowing()) {
|
||||
progressDialog.dismiss();
|
||||
}
|
||||
|
||||
mUploadingImageStream = new ByteArrayInputStream(result);
|
||||
|
||||
|
|
|
@ -395,10 +395,9 @@ public class ChatStorage {
|
|||
public int compare(LinphoneChatRoom a, LinphoneChatRoom b) {
|
||||
LinphoneChatMessage[] messagesA = a.getHistory(1);
|
||||
LinphoneChatMessage[] messagesB = b.getHistory(1);
|
||||
long atime, btime;
|
||||
// /!\ Warning: Have to take the second element because it returns two even when asking for only one...
|
||||
atime = messagesA.length > 1 ? messagesA[1].getTime() : messagesA[0].getTime();
|
||||
btime = messagesA.length > 1 ? messagesB[1].getTime() : messagesB[0].getTime();
|
||||
long atime = messagesA[0].getTime();
|
||||
long btime = messagesB[0].getTime();
|
||||
|
||||
if (atime > btime)
|
||||
return -1;
|
||||
else if (btime > atime)
|
||||
|
|
|
@ -22,6 +22,7 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
import org.linphone.compatibility.Compatibility;
|
||||
import org.linphone.core.LinphoneCore;
|
||||
import org.linphone.core.LinphoneFriend;
|
||||
|
||||
import android.content.ContentResolver;
|
||||
|
@ -104,12 +105,15 @@ public class Contact implements Serializable {
|
|||
|
||||
public void refresh(ContentResolver 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)) {
|
||||
hasFriends = true;
|
||||
this.numbersOrAddresses.add(friend.getAddress().asStringUriOnly());
|
||||
}
|
||||
}
|
||||
}
|
||||
this.name = Compatibility.refreshContactName(cr, id);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -79,9 +79,10 @@ public class ContactFragment extends Fragment implements OnClickListener {
|
|||
private OnClickListener chatListener = new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (LinphoneActivity.isInstanciated())
|
||||
if (LinphoneActivity.isInstanciated()) {
|
||||
LinphoneActivity.instance().displayChat(v.getTag().toString());
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
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);
|
||||
LinphoneProxyConfig lpc = LinphoneManager.getLc().getDefaultProxyConfig();
|
||||
if (lpc != null) {
|
||||
displayednumberOrAddress = lpc.normalizePhoneNumber(displayednumberOrAddress);
|
||||
if (!displayednumberOrAddress.startsWith("sip:")) {
|
||||
numberOrAddress = "sip:" + displayednumberOrAddress;
|
||||
}
|
||||
|
|
|
@ -593,9 +593,8 @@ public class ContactsManager {
|
|||
c.close();
|
||||
return address;
|
||||
}
|
||||
}
|
||||
|
||||
c.close();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
@ -199,7 +199,7 @@ public class DialerFragment extends Fragment {
|
|||
mAddress.setText(intent.getData().getSchemeSpecificPart());
|
||||
} else {
|
||||
Uri contactUri = intent.getData();
|
||||
String address = ContactsManager.getInstance().queryAddressOrNumber(getActivity().getContentResolver(),contactUri);
|
||||
String address = ContactsManager.getInstance().queryAddressOrNumber(LinphoneService.instance().getContentResolver(),contactUri);
|
||||
if(address != null) {
|
||||
mAddress.setText(address);
|
||||
} else {
|
||||
|
|
|
@ -53,9 +53,12 @@ public class EditContactFragment extends Fragment {
|
|||
isNewContact = false;
|
||||
contactID = Integer.parseInt(contact.getID());
|
||||
contact.refresh(getActivity().getContentResolver());
|
||||
}
|
||||
if (getArguments().getString("NewSipAdress") != null) {
|
||||
newSipOrNumberToAdd = getArguments().getString("NewSipAdress");
|
||||
}
|
||||
|
||||
} else if (getArguments().getString("NewSipAdress") != null) {
|
||||
newSipOrNumberToAdd = getArguments().getString("NewSipAdress");
|
||||
isNewContact = true;
|
||||
}
|
||||
}
|
||||
|
@ -257,7 +260,7 @@ public class EditContactFragment extends Fragment {
|
|||
if (forceAddNumber) {
|
||||
tempNounoa = new NewOrUpdatedNumberOrAddress(isSip);
|
||||
} else {
|
||||
if(isNewContact) {
|
||||
if(isNewContact || newSipOrNumberToAdd != null) {
|
||||
tempNounoa = new NewOrUpdatedNumberOrAddress(isSip, numberOrAddress);
|
||||
} else {
|
||||
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 CountDownTimer timer;
|
||||
private boolean isVideoCallPaused = false;
|
||||
AcceptCallUpdateDialogFragment callUpdateDialog;
|
||||
|
||||
private TableLayout callsList;
|
||||
private LayoutInflater inflater;
|
||||
|
@ -192,6 +193,8 @@ public class InCallActivity extends FragmentActivity implements OnClickListener
|
|||
timer = new CountDownTimer(SECONDS_BEFORE_DENYING_CALL_UPDATE, 1000) {
|
||||
public void onTick(long millisUntilFinished) { }
|
||||
public void onFinish() {
|
||||
if (callUpdateDialog != null)
|
||||
callUpdateDialog.dismiss();
|
||||
acceptCallUpdate(false);
|
||||
}
|
||||
}.start();
|
||||
|
@ -1140,7 +1143,7 @@ public class InCallActivity extends FragmentActivity implements OnClickListener
|
|||
|
||||
private void showAcceptCallUpdateDialog() {
|
||||
FragmentManager fm = getSupportFragmentManager();
|
||||
AcceptCallUpdateDialogFragment callUpdateDialog = new AcceptCallUpdateDialogFragment();
|
||||
callUpdateDialog = new AcceptCallUpdateDialogFragment();
|
||||
callUpdateDialog.show(fm, "Accept Call Update Dialog");
|
||||
}
|
||||
|
||||
|
|
|
@ -102,6 +102,7 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene
|
|||
private FragmentsAvailable currentFragment, nextFragment;
|
||||
private List<FragmentsAvailable> fragmentsHistory;
|
||||
private Fragment dialerFragment, messageListFragment, friendStatusListenerFragment;
|
||||
private ChatFragment chatFragment;
|
||||
private SavedState dialerSavedState;
|
||||
private boolean isAnimationDisabled = false, preferLinphoneContacts = false;
|
||||
private OrientationEventListener mOrientationHelper;
|
||||
|
@ -177,6 +178,9 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene
|
|||
mListener = new LinphoneCoreListenerBase(){
|
||||
@Override
|
||||
public void messageReceived(LinphoneCore lc, LinphoneChatRoom cr, LinphoneChatMessage message) {
|
||||
if(!displayChatMessageNotification(message.getFrom().asStringUriOnly())) {
|
||||
cr.markAsRead();
|
||||
}
|
||||
displayMissedChats(getChatStorage().getUnreadMessageCount());
|
||||
if (messageListFragment != null && messageListFragment.isVisible()) {
|
||||
((ChatListFragment) messageListFragment).refresh();
|
||||
|
@ -597,6 +601,16 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene
|
|||
|
||||
public void displayAbout() {
|
||||
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) {
|
||||
|
@ -641,6 +655,9 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene
|
|||
changeCurrentFragment(FragmentsAvailable.CHATLIST, null);
|
||||
displayChat(sipUri);
|
||||
}
|
||||
if (messageListFragment != null && messageListFragment.isVisible()) {
|
||||
((ChatListFragment) messageListFragment).refresh();
|
||||
}
|
||||
} else {
|
||||
Intent intent = new Intent(this, ChatActivity.class);
|
||||
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);
|
||||
}
|
||||
|
||||
public void updateChatFragment(ChatFragment fragment) {
|
||||
chatFragment = fragment;
|
||||
}
|
||||
|
||||
public void updateChatListFragment(ChatListFragment fragment) {
|
||||
messageListFragment = fragment;
|
||||
}
|
||||
|
|
|
@ -717,12 +717,14 @@ public class LinphoneManager implements LinphoneCoreListener {
|
|||
try {
|
||||
Contact contact = ContactsManager.getInstance().findContactWithAddress(mServiceContext.getContentResolver(),from);
|
||||
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);
|
||||
} else {
|
||||
LinphoneService.instance().displayMessageNotification(from.asStringUriOnly(), from.getUserName(), textMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e(e);
|
||||
}
|
||||
|
|
|
@ -965,8 +965,8 @@ public class LinphonePreferences {
|
|||
// Advanced settings
|
||||
public void setDebugEnabled(boolean enabled) {
|
||||
getConfig().setBool("app", "debug", enabled);
|
||||
LinphoneCoreFactory.instance().setDebugMode(enabled, getString(R.string.app_name));
|
||||
LinphoneCoreFactory.instance().enableLogCollection(enabled);
|
||||
LinphoneCoreFactory.instance().setDebugMode(enabled, getString(R.string.app_name));
|
||||
}
|
||||
|
||||
public boolean isDebugEnabled() {
|
||||
|
|
|
@ -494,7 +494,7 @@ public final class LinphoneService extends Service {
|
|||
//MANUFACTURER doesn't exist in android 1.5.
|
||||
//sb.append("MANUFACTURER=").append(Build.MANUFACTURER).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());
|
||||
}
|
||||
|
||||
|
|
|
@ -50,6 +50,7 @@ public class ApiTwentyOnePlus {
|
|||
.setSmallIcon(R.drawable.chat_icon_over)
|
||||
.setAutoCancel(true)
|
||||
.setContentIntent(intent)
|
||||
.setDefaults(Notification.DEFAULT_ALL)
|
||||
.setLargeIcon(contactIcon)
|
||||
.setCategory(Notification.CATEGORY_MESSAGE)
|
||||
.setVisibility(Notification.VISIBILITY_PRIVATE)
|
||||
|
|
|
@ -381,8 +381,9 @@ public class SetupActivity extends FragmentActivity implements OnClickListener {
|
|||
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();
|
||||
LinphoneManager.getLcIfManagerNotDestroyedOrNull().refreshRegisters();
|
||||
launchEchoCancellerCalibration(true);
|
||||
}
|
||||
|
||||
|
|
|
@ -59,7 +59,7 @@ public class WizardConfirmFragment extends Fragment {
|
|||
return view;
|
||||
}
|
||||
|
||||
private void isAccountVerified(String username) {
|
||||
private void isAccountVerified(final String username) {
|
||||
final Runnable runNotReachable = new Runnable() {
|
||||
public void run() {
|
||||
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() {
|
||||
public void run() {
|
||||
SetupActivity.instance().isAccountVerified();
|
||||
SetupActivity.instance().isAccountVerified(username);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -157,7 +157,8 @@ public class WizardFragment extends Fragment {
|
|||
|
||||
private boolean isUsernameCorrect(String username) {
|
||||
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 {
|
||||
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){
|
||||
String voiceMail = LinphonePreferences.instance().getVoiceMailUri();
|
||||
mAddress.getEditableText().clear();
|
||||
mAddress.getEditableText().append(voiceMail);
|
||||
if(voiceMail != null){
|
||||
mAddress.getEditableText().append(voiceMail);
|
||||
LinphoneManager.getInstance().newOutgoingCall(mAddress);
|
||||
}
|
||||
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.LinphoneActivity;
|
||||
import org.linphone.R;
|
||||
|
||||
import android.test.suitebuilder.annotation.LargeTest;
|
||||
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(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)));
|
||||
}
|
||||
|
@ -70,6 +73,7 @@ public class Contacts extends SampleTest {
|
|||
@LargeTest
|
||||
public void testDEditContactAddSipAddressAndRemoveNumber() {
|
||||
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(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(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)));
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue