diff --git a/app/build.gradle b/app/build.gradle
index 33e8a737e..5e8ea8d52 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -100,7 +100,7 @@ android {
defaultConfig {
minSdkVersion 23
targetSdkVersion 29
- versionCode 4317
+ versionCode 4318
versionName "${project.version}"
applicationId getPackageName()
multiDexEnabled true
diff --git a/app/src/main/java/org/linphone/call/AndroidAudioManager.java b/app/src/main/java/org/linphone/call/AndroidAudioManager.java
index e6931a2fd..83eadbfe8 100644
--- a/app/src/main/java/org/linphone/call/AndroidAudioManager.java
+++ b/app/src/main/java/org/linphone/call/AndroidAudioManager.java
@@ -189,6 +189,7 @@ public class AndroidAudioManager {
if (currentCall == null) currentCall = LinphoneManager.getCore().getCalls()[0];
if (currentCall == null) return false;
AudioDevice audioDevice = currentCall.getOutputAudioDevice();
+ if (audioDevice == null) return false;
Log.i("[Audio Manager] Currently used audio device: ", audioDevice.getDeviceName());
return audioDevice.getType() == AudioDevice.Type.Bluetooth;
}
diff --git a/app/src/main/java/org/linphone/call/CallActivity.java b/app/src/main/java/org/linphone/call/CallActivity.java
index 952a20ee9..91533aa2f 100644
--- a/app/src/main/java/org/linphone/call/CallActivity.java
+++ b/app/src/main/java/org/linphone/call/CallActivity.java
@@ -409,6 +409,13 @@ public class CallActivity extends LinphoneGenericActivity
setCurrentCallContactInformation();
updateInterfaceDependingOnVideo();
+ } else if (state == Call.State.Updating) {
+ if (call.getCurrentParams().videoEnabled()) {
+ if (!LinphoneManager.getAudioManager()
+ .isUsingBluetoothAudioRoute()) {
+ LinphoneManager.getAudioManager().routeAudioToSpeaker();
+ }
+ }
} else if (state == Call.State.UpdatedByRemote) {
// If the correspondent asks for video while in audio call
boolean videoEnabled = LinphonePreferences.instance().isVideoEnabled();
diff --git a/app/src/main/java/org/linphone/call/CallManager.java b/app/src/main/java/org/linphone/call/CallManager.java
index 26587029f..de54ccd19 100644
--- a/app/src/main/java/org/linphone/call/CallManager.java
+++ b/app/src/main/java/org/linphone/call/CallManager.java
@@ -144,6 +144,10 @@ public class CallManager {
params.enableVideo(true);
core.enableVideoCapture(true);
core.enableVideoDisplay(true);
+
+ if (!LinphoneManager.getAudioManager().isUsingBluetoothAudioRoute()) {
+ LinphoneManager.getAudioManager().routeAudioToSpeaker();
+ }
} else {
params.enableVideo(false);
}
diff --git a/app/src/main/java/org/linphone/chat/ChatMessageViewHolder.java b/app/src/main/java/org/linphone/chat/ChatMessageViewHolder.java
index 203e69d2e..667d741ac 100644
--- a/app/src/main/java/org/linphone/chat/ChatMessageViewHolder.java
+++ b/app/src/main/java/org/linphone/chat/ChatMessageViewHolder.java
@@ -264,7 +264,8 @@ public class ChatMessageViewHolder extends RecyclerView.ViewHolder implements Vi
final TextView fileName = content.findViewById(R.id.file);
fileName.setVisibility(View.GONE);
- if (c.isFile() || (c.isFileTransfer() && !c.getFilePath().isEmpty())) {
+ if (c.isFile()
+ || (c.isFileTransfer() && message.isOutgoing() && !c.getFilePath().isEmpty())) {
// If message is outgoing, even if content
// is file transfer we have the file available
final String filePath = c.getFilePath();
diff --git a/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java b/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java
index 7496bfae5..ee6d2c735 100644
--- a/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java
+++ b/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java
@@ -668,10 +668,15 @@ public class ChatMessagesFragment extends Fragment
}
/** View initialization */
- private void setReadOnly() {
- mMessageTextToSend.setEnabled(false);
- mAttachImageButton.setEnabled(false);
- mSendMessageButton.setEnabled(false);
+ private void setReadOnly(boolean readOnly) {
+ if (readOnly) {
+ mMessageTextToSend.setText("");
+ mFilesUploadLayout.removeAllViews();
+ }
+
+ mMessageTextToSend.setEnabled(!readOnly);
+ mAttachImageButton.setEnabled(!readOnly);
+ mSendMessageButton.setEnabled(!readOnly);
mSendEphemeralIcon.setEnabled(mSendMessageButton.isEnabled());
}
@@ -801,7 +806,7 @@ public class ChatMessagesFragment extends Fragment
mSendEphemeralIcon.setVisibility(mChatRoom.ephemeralEnabled() ? View.VISIBLE : View.GONE);
if (mChatRoom.hasBeenLeft()) {
- setReadOnly();
+ setReadOnly(true);
}
updateSecurityLevelIcon();
@@ -1084,15 +1089,18 @@ public class ChatMessagesFragment extends Fragment
boolean split =
isBasicChatRoom; // Always split contents in basic chat rooms for compatibility
- if (hasText && sendImageAndTextAsDifferentMessages) {
- split = true;
- } else if (mFilesUploadLayout.getChildCount() > 1
- && sendMultipleImagesAsDifferentMessages) {
- split = true;
+ if (!split) {
+ if (hasText && sendImageAndTextAsDifferentMessages) {
+ split = true;
+ } else if (mFilesUploadLayout.getChildCount() > 1
+ && sendMultipleImagesAsDifferentMessages) {
+ split = true;
- // Allow the last image to be sent with text if image and text at the same time OK
- if (hasText && i == filesCount - 1) {
- split = false;
+ // Allow the last image to be sent with text if image and text at the same time
+ // OK
+ if (hasText && i == filesCount - 1) {
+ split = false;
+ }
}
}
@@ -1450,9 +1458,7 @@ public class ChatMessagesFragment extends Fragment
@Override
public void onStateChanged(ChatRoom cr, ChatRoom.State newState) {
- if (mChatRoom.hasBeenLeft()) {
- setReadOnly();
- }
+ setReadOnly(mChatRoom.hasBeenLeft());
}
@Override
diff --git a/app/src/main/java/org/linphone/contacts/ContactEditorFragment.java b/app/src/main/java/org/linphone/contacts/ContactEditorFragment.java
index 238681f51..e8bf17f8a 100644
--- a/app/src/main/java/org/linphone/contacts/ContactEditorFragment.java
+++ b/app/src/main/java/org/linphone/contacts/ContactEditorFragment.java
@@ -500,9 +500,8 @@ public class ContactEditorFragment extends Fragment {
} catch (IOException e) {
Log.e("[Contact Editor] Failed to get Exif rotation, error is ", e);
}
- } else {
-
}
+
if (image == null) {
Log.e(
"[Contact Editor] Couldn't get bitmap from either filePath [",
diff --git a/app/src/main/java/org/linphone/dialer/DialerActivity.java b/app/src/main/java/org/linphone/dialer/DialerActivity.java
index af30679a5..301351344 100644
--- a/app/src/main/java/org/linphone/dialer/DialerActivity.java
+++ b/app/src/main/java/org/linphone/dialer/DialerActivity.java
@@ -106,6 +106,9 @@ public class DialerActivity extends MainActivity implements AddressText.AddressC
@Override
public void onCallStateChanged(
Core core, Call call, Call.State state, String message) {
+ if (state == Call.State.OutgoingInit) {
+ if (mAddress != null) mAddress.setText("");
+ }
updateLayout();
}
@@ -166,10 +169,6 @@ public class DialerActivity extends MainActivity implements AddressText.AddressC
};
mIsTransfer = false;
- if (getIntent() != null) {
- mIsTransfer = getIntent().getBooleanExtra("isTransfer", false);
- }
-
handleIntentParams(getIntent());
}
@@ -178,13 +177,6 @@ public class DialerActivity extends MainActivity implements AddressText.AddressC
super.onNewIntent(intent);
handleIntentParams(intent);
-
- if (intent != null) {
- mIsTransfer = intent.getBooleanExtra("isTransfer", mIsTransfer);
- if (mAddress != null && intent.getStringExtra("SipUri") != null) {
- mAddress.setText(intent.getStringExtra("SipUri"));
- }
- }
}
@Override
@@ -207,7 +199,6 @@ public class DialerActivity extends MainActivity implements AddressText.AddressC
@Override
protected void onPause() {
enableVideoPreviewIfTablet(false);
- if (mAddress != null) mAddress.setText("");
Core core = LinphoneManager.getCore();
if (core != null) {
core.removeListener(mListener);
@@ -219,6 +210,7 @@ public class DialerActivity extends MainActivity implements AddressText.AddressC
@Override
protected void onDestroy() {
if (mInterfaceLoaded) {
+ if (mAddress != null) mAddress.setText("");
mAddress = null;
mStartCall = null;
mAddCall = null;
@@ -280,6 +272,7 @@ public class DialerActivity extends MainActivity implements AddressText.AddressC
intent.putExtra("EditOnClick", true);
intent.putExtra("SipAddress", mAddress.getText().toString());
startActivity(intent);
+ if (mAddress != null) mAddress.setText("");
}
});
@@ -289,6 +282,7 @@ public class DialerActivity extends MainActivity implements AddressText.AddressC
@Override
public void onClick(View v) {
goBackToCall();
+ if (mAddress != null) mAddress.setText("");
}
});
@@ -334,6 +328,7 @@ public class DialerActivity extends MainActivity implements AddressText.AddressC
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
+ outState.putSerializable("address", mAddress.getText().toString());
outState.putSerializable("isTransfer", mIsTransfer);
}
@@ -341,6 +336,7 @@ public class DialerActivity extends MainActivity implements AddressText.AddressC
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
mIsTransfer = savedInstanceState.getBoolean("isTransfer");
+ mAddress.setText(savedInstanceState.getString("address"));
}
@Override
@@ -375,6 +371,8 @@ public class DialerActivity extends MainActivity implements AddressText.AddressC
private void handleIntentParams(Intent intent) {
if (intent == null) return;
+ mIsTransfer = intent.getBooleanExtra("isTransfer", mIsTransfer);
+
String action = intent.getAction();
String addressToCall = null;
if (ACTION_CALL_LINPHONE.equals(action)
@@ -409,7 +407,13 @@ public class DialerActivity extends MainActivity implements AddressText.AddressC
Log.i("[Dialer] " + action + " with number: " + addressToCall);
}
} else {
- Log.w("[Dialer] Intent data is null for action " + action);
+ String sipUri = intent.getStringExtra("SipUri");
+ if (sipUri != null) {
+ Log.i("[Dialer] Found extra SIP URI: " + sipUri);
+ addressToCall = sipUri;
+ } else {
+ Log.w("[Dialer] Intent data is null for action " + action);
+ }
}
}
diff --git a/app/src/main/res/layout/contact_control_cell.xml b/app/src/main/res/layout/contact_control_cell.xml
index 07c27700d..5662958e7 100644
--- a/app/src/main/res/layout/contact_control_cell.xml
+++ b/app/src/main/res/layout/contact_control_cell.xml
@@ -45,11 +45,12 @@
diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml
index 594290fd9..5d1d7f1fb 100644
--- a/app/src/main/res/values-hu/strings.xml
+++ b/app/src/main/res/values-hu/strings.xml
@@ -130,6 +130,9 @@
A telefonszámát csak egy Linphone-fiókkal használhatja.\n\nHa már összekapcsolta telefonszámát egy másik fiókkal, de inkább ezt használja, egyszerűen kapcsolja össze, és a telefonszám önműködően átkerül ebbe a fiókba.
Túl sok SMS-t küldtek erre a számra rövid idő alatt. Kérjük, várjon 24 órát, mielőtt újra megpróbálja.
Fiók nem létezik
+ használati feltételek
+ adatvédelmi szabályzat
+ Elfogadom a Belledonne Communications %1$s és %2$s
Érvénytelen e-mail
Fiók már létezik
@@ -613,6 +616,7 @@
Konferencia elhagyása
Linphone szolgáltatás-értesítés
Linphone csevegőüzenetek értesítések
+ Linphone nem fogadott hívások értesítései
Csoportos csevegőszoba tárgya
Csoportos csevegőszoba tájékoztatás
Hívás felvétele
diff --git a/app/src/main/res/values/non_localizable_custom.xml b/app/src/main/res/values/non_localizable_custom.xml
index 590768902..21e2cfc5a 100644
--- a/app/src/main/res/values/non_localizable_custom.xml
+++ b/app/src/main/res/values/non_localizable_custom.xml
@@ -116,7 +116,7 @@
false
false
true
- true
+ false
true
true