Merge branch 'release/4.1'

This commit is contained in:
Sylvain Berfini 2019-05-03 11:49:42 +02:00
commit 3b66218d63
21 changed files with 313 additions and 117 deletions

View file

@ -10,7 +10,7 @@ Group changes to describe their impact on the project, as follows:
Fixed for any bug fixes. Fixed for any bug fixes.
Security to invite users to upgrade in case of vulnerabilities. Security to invite users to upgrade in case of vulnerabilities.
## [4.1.0] - 2019-xx-xx ## [4.1.0] - 2019-05-03
### Added ### Added
- End-to-end encryption for instant messaging, for both one-to-one and group conversations. - End-to-end encryption for instant messaging, for both one-to-one and group conversations.

View file

@ -72,7 +72,7 @@ android {
defaultConfig { defaultConfig {
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 28 targetSdkVersion 28
versionCode 4120 versionCode 4124
versionName "4.1" versionName "4.1"
applicationId getPackageName() applicationId getPackageName()
multiDexEnabled true multiDexEnabled true
@ -167,7 +167,7 @@ dependencies {
debugImplementation project(path: ":linphone-sdk-android", configuration: 'debug') debugImplementation project(path: ":linphone-sdk-android", configuration: 'debug')
} }
} else { } else {
implementation "org.linphone:linphone-sdk-android:4.1-366-g1b22291" implementation "org.linphone:linphone-sdk-android:4.2"
} }
} }
if (firebaseEnabled()) { if (firebaseEnabled()) {

View file

@ -412,7 +412,6 @@ public class LinphoneActivity extends LinphoneGenericActivity
if (lc != null) { if (lc != null) {
lc.removeListener(mListener); lc.removeListener(mListener);
} }
mCallTransfer = false;
mIsOnBackground = true; mIsOnBackground = true;
super.onPause(); super.onPause();
@ -534,6 +533,7 @@ public class LinphoneActivity extends LinphoneGenericActivity
}*/ }*/
Bundle extras = intent.getExtras(); Bundle extras = intent.getExtras();
mCallTransfer = false;
if (extras != null) { if (extras != null) {
if (extras.getBoolean("GoToChat", false)) { if (extras.getBoolean("GoToChat", false)) {
String localSipUri = extras.getString("LocalSipUri"); String localSipUri = extras.getString("LocalSipUri");
@ -566,6 +566,12 @@ public class LinphoneActivity extends LinphoneGenericActivity
goToDialerFragment(); goToDialerFragment();
} else if (extras.getBoolean("Transfer", false)) { } else if (extras.getBoolean("Transfer", false)) {
intent.putExtra("DoNotGoToCallActivity", true); intent.putExtra("DoNotGoToCallActivity", true);
mCallTransfer = true;
if (LinphoneManager.getLc().getCallsNb() > 0) {
initInCallMenuLayout();
} else {
resetClassicMenuLayoutAndGoBackToCallIfStillRunning();
}
} else if (extras.getBoolean("AddCall", false)) { } else if (extras.getBoolean("AddCall", false)) {
intent.putExtra("DoNotGoToCallActivity", true); intent.putExtra("DoNotGoToCallActivity", true);
} else if (intent.getStringExtra("msgShared") != null) { } else if (intent.getStringExtra("msgShared") != null) {
@ -1382,7 +1388,12 @@ public class LinphoneActivity extends LinphoneGenericActivity
AddressType address = new AddressText(this, null); AddressType address = new AddressText(this, null);
address.setText(number); address.setText(number);
address.setDisplayedName(name); address.setDisplayedName(name);
if (!mCallTransfer) {
LinphoneManager.getInstance().newOutgoingCall(address); LinphoneManager.getInstance().newOutgoingCall(address);
} else {
addressWaitingToBeCalled = number;
displayDialer();
}
} }
public void startIncallActivity() { public void startIncallActivity() {

View file

@ -193,6 +193,7 @@ public class LinphoneManager implements CoreListener, SensorEventListener, Accou
private MediaPlayer mRingerPlayer; private MediaPlayer mRingerPlayer;
private final Vibrator mVibrator; private final Vibrator mVibrator;
private boolean mIsRinging; private boolean mIsRinging;
private boolean mHasLastCallSasBeenRejected;
private LinphoneManager(Context c) { private LinphoneManager(Context c) {
mUnreadChatsPerRoom = new HashMap(); mUnreadChatsPerRoom = new HashMap();
@ -220,6 +221,7 @@ public class LinphoneManager implements CoreListener, SensorEventListener, Accou
mSensorManager = (SensorManager) c.getSystemService(Context.SENSOR_SERVICE); mSensorManager = (SensorManager) c.getSystemService(Context.SENSOR_SERVICE);
mProximity = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); mProximity = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
mRessources = c.getResources(); mRessources = c.getResources();
mHasLastCallSasBeenRejected = false;
File f = new File(mUserCertsPath); File f = new File(mUserCertsPath);
if (!f.exists()) { if (!f.exists()) {
@ -493,13 +495,42 @@ public class LinphoneManager implements CoreListener, SensorEventListener, Accou
newOutgoingCall(to, address.getDisplayedName()); newOutgoingCall(to, address.getDisplayedName());
} }
public void newOutgoingCall(String to, String displayName) { public void newOutgoingCall(Address to) {
// if (mCore.inCall()) {
// listenerDispatcher.tryingNewOutgoingCallButAlreadyInCall();
// return;
// }
if (to == null) return; if (to == null) return;
ProxyConfig lpc = mCore.getDefaultProxyConfig();
if (mRessources.getBoolean(R.bool.forbid_self_call)
&& lpc != null
&& to.weakEqual(lpc.getIdentityAddress())) {
return;
}
boolean isLowBandwidthConnection =
!LinphoneUtils.isHighBandwidthConnection(
LinphoneService.instance().getApplicationContext());
if (mCore.isNetworkReachable()) {
if (Version.isVideoCapable()) {
boolean prefVideoEnable = mPrefs.isVideoEnabled();
boolean prefInitiateWithVideo = mPrefs.shouldInitiateVideoCall();
CallManager.getInstance()
.inviteAddress(
to,
prefVideoEnable && prefInitiateWithVideo,
isLowBandwidthConnection);
} else {
CallManager.getInstance().inviteAddress(to, false, isLowBandwidthConnection);
}
} else if (LinphoneActivity.isInstanciated()) {
LinphoneActivity.instance()
.displayCustomToast(
getString(R.string.error_network_unreachable), Toast.LENGTH_LONG);
} else {
Log.e("[Manager] Error: " + getString(R.string.error_network_unreachable));
}
}
public void newOutgoingCall(String to, String displayName) {
// If to is only a username, try to find the contact to get an alias if existing // If to is only a username, try to find the contact to get an alias if existing
if (!to.startsWith("sip:") || !to.contains("@")) { if (!to.startsWith("sip:") || !to.contains("@")) {
LinphoneContact contact = ContactsManager.getInstance().findContactFromPhoneNumber(to); LinphoneContact contact = ContactsManager.getInstance().findContactFromPhoneNumber(to);
@ -518,37 +549,9 @@ public class LinphoneManager implements CoreListener, SensorEventListener, Accou
return; return;
} }
ProxyConfig lpc = mCore.getDefaultProxyConfig(); if (displayName != null) lAddress.setDisplayName(displayName);
if (mRessources.getBoolean(R.bool.forbid_self_call)
&& lpc != null
&& lAddress.weakEqual(lpc.getIdentityAddress())) {
return;
}
lAddress.setDisplayName(displayName);
boolean isLowBandwidthConnection = newOutgoingCall(lAddress);
!LinphoneUtils.isHighBandwidthConnection(
LinphoneService.instance().getApplicationContext());
if (mCore.isNetworkReachable()) {
if (Version.isVideoCapable()) {
boolean prefVideoEnable = mPrefs.isVideoEnabled();
boolean prefInitiateWithVideo = mPrefs.shouldInitiateVideoCall();
CallManager.getInstance()
.inviteAddress(
lAddress,
prefVideoEnable && prefInitiateWithVideo,
isLowBandwidthConnection);
} else {
CallManager.getInstance().inviteAddress(lAddress, false, isLowBandwidthConnection);
}
} else if (LinphoneActivity.isInstanciated()) {
LinphoneActivity.instance()
.displayCustomToast(
getString(R.string.error_network_unreachable), Toast.LENGTH_LONG);
} else {
Log.e("[Manager] Error: " + getString(R.string.error_network_unreachable));
}
} }
private void resetCameraFromPreferences() { private void resetCameraFromPreferences() {
@ -1471,27 +1474,14 @@ public class LinphoneManager implements CoreListener, SensorEventListener, Accou
} }
public void isAccountWithAlias() { public void isAccountWithAlias() {
if (LinphoneManager.getLc().getDefaultProxyConfig() != null) {
long now = new Timestamp(new Date().getTime()).getTime();
if (mAccountCreator != null && LinphonePreferences.instance().getLinkPopupTime() == null
|| Long.parseLong(LinphonePreferences.instance().getLinkPopupTime()) < now) {
mAccountCreator.setUsername(
LinphonePreferences.instance()
.getAccountUsername(
LinphonePreferences.instance().getDefaultAccountIndex()));
mAccountCreator.isAccountExist();
}
} else {
LinphonePreferences.instance().setLinkPopupTime(null);
}
}
private void askLinkWithPhoneNumber() {
if (!LinphonePreferences.instance().isLinkPopupEnabled()) return; if (!LinphonePreferences.instance().isLinkPopupEnabled()) return;
if (LinphoneManager.getLc().getDefaultProxyConfig() != null) {
long now = new Timestamp(new Date().getTime()).getTime(); long now = new Timestamp(new Date().getTime()).getTime();
if (LinphonePreferences.instance().getLinkPopupTime() != null if (LinphonePreferences.instance().getLinkPopupTime() != null
&& Long.parseLong(LinphonePreferences.instance().getLinkPopupTime()) >= now) return; && Long.parseLong(LinphonePreferences.instance().getLinkPopupTime()) >= now)
return;
long future = long future =
new Timestamp( new Timestamp(
@ -1501,7 +1491,21 @@ public class LinphoneManager implements CoreListener, SensorEventListener, Accou
.getTime(); .getTime();
long newDate = now + future; long newDate = now + future;
if (mAccountCreator != null) {
mAccountCreator.setUsername(
LinphonePreferences.instance()
.getAccountUsername(
LinphonePreferences.instance().getDefaultAccountIndex()));
mAccountCreator.isAccountExist();
LinphonePreferences.instance().setLinkPopupTime(String.valueOf(newDate)); LinphonePreferences.instance().setLinkPopupTime(String.valueOf(newDate));
}
} else {
LinphonePreferences.instance().setLinkPopupTime(null);
}
}
private void askLinkWithPhoneNumber() {
if (!LinphonePreferences.instance().isLinkPopupEnabled()) return;
final Dialog dialog = final Dialog dialog =
LinphoneActivity.instance() LinphoneActivity.instance()
@ -1866,4 +1870,12 @@ public class LinphoneManager implements CoreListener, SensorEventListener, Accou
void setDisplayedName(String s); void setDisplayedName(String s);
} }
public boolean hasLastCallSasBeenRejected() {
return mHasLastCallSasBeenRejected;
}
public void lastCallSasRejected(boolean rejected) {
mHasLastCallSasBeenRejected = rejected;
}
} }

View file

@ -31,6 +31,7 @@ import org.linphone.LinphoneManager;
import org.linphone.R; import org.linphone.R;
import org.linphone.core.AccountCreator; import org.linphone.core.AccountCreator;
import org.linphone.core.AccountCreatorListener; import org.linphone.core.AccountCreatorListener;
import org.linphone.core.tools.Log;
import org.linphone.settings.LinphonePreferences; import org.linphone.settings.LinphonePreferences;
public class CreateAccountActivationFragment extends Fragment public class CreateAccountActivationFragment extends Fragment
@ -57,6 +58,7 @@ public class CreateAccountActivationFragment extends Fragment
mAccountCreator.setUsername(mUsername); mAccountCreator.setUsername(mUsername);
mAccountCreator.setPassword(mPassword); mAccountCreator.setPassword(mPassword);
mAccountCreator.setDomain(getString(R.string.default_domain));
mEmail = view.findViewById(R.id.send_email); mEmail = view.findViewById(R.id.send_email);
mEmail.setText(getArguments().getString("Email")); mEmail.setText(getArguments().getString("Email"));
@ -71,7 +73,7 @@ public class CreateAccountActivationFragment extends Fragment
int id = v.getId(); int id = v.getId();
if (id == R.id.assistant_check) { if (id == R.id.assistant_check) {
mCheckAccount.setEnabled(false); mCheckAccount.setEnabled(false);
mAccountCreator.isAccountActivated(); AccountCreator.Status status = mAccountCreator.isAccountActivated();
} }
} }
@ -111,6 +113,7 @@ public class CreateAccountActivationFragment extends Fragment
AssistantActivity.instance().linphoneLogIn(accountCreator); AssistantActivity.instance().linphoneLogIn(accountCreator);
AssistantActivity.instance().isAccountVerified(); AssistantActivity.instance().isAccountVerified();
} else { } else {
Log.w("Unexpected error " + status.name());
Toast.makeText( Toast.makeText(
getActivity(), getActivity(),
getString(R.string.wizard_server_unavailable), getString(R.string.wizard_server_unavailable),

View file

@ -135,7 +135,8 @@ public class CreateAccountFragment extends Fragment
mSkip = view.findViewById(R.id.assistant_skip); mSkip = view.findViewById(R.id.assistant_skip);
// Phone number // Phone number
if (getResources().getBoolean(R.bool.use_phone_number_validation)) { if (!getResources().getBoolean(R.bool.isTablet)
&& getResources().getBoolean(R.bool.use_phone_number_validation)) {
getActivity().getApplicationContext(); getActivity().getApplicationContext();
// Automatically get the country code from the phone // Automatically get the country code from the phone
TelephonyManager tm = TelephonyManager tm =
@ -179,12 +180,10 @@ public class CreateAccountFragment extends Fragment
} }
addPhoneNumberHandler(mPhoneNumberEdit); addPhoneNumberHandler(mPhoneNumberEdit);
addPhoneNumberHandler(mDialCode); addPhoneNumberHandler(mDialCode);
} } else {
if (!getResources().getBoolean(R.bool.isTablet)) {
// Password & email address
if (getResources().getBoolean(R.bool.isTablet)
|| !getResources().getBoolean(R.bool.use_phone_number_validation)) {
mUseEmail.setVisibility(View.VISIBLE); mUseEmail.setVisibility(View.VISIBLE);
}
mUseEmail.setOnCheckedChangeListener(this); mUseEmail.setOnCheckedChangeListener(this);
if (getResources().getBoolean(R.bool.pre_fill_email_in_assistant)) { if (getResources().getBoolean(R.bool.pre_fill_email_in_assistant)) {

View file

@ -240,10 +240,11 @@ public class CallActivity extends LinphoneGenericActivity
mStatus.refreshStatusItems(call); mStatus.refreshStatusItems(call);
} }
} else if (state == State.UpdatedByRemote) { } else if (state == State.UpdatedByRemote) {
// If the correspondent proposes mVideo while audio call // If the correspondent proposes video while audio call
boolean videoEnabled = LinphonePreferences.instance().isVideoEnabled(); boolean videoEnabled = LinphonePreferences.instance().isVideoEnabled();
if (!videoEnabled) { if (!videoEnabled) {
acceptCallUpdate(false); acceptCallUpdate(false);
return;
} }
boolean remoteVideo = call.getRemoteParams().videoEnabled(); boolean remoteVideo = call.getRemoteParams().videoEnabled();
@ -1251,7 +1252,7 @@ public class CallActivity extends LinphoneGenericActivity
: "denied")); : "denied"));
if (camera == PackageManager.PERMISSION_GRANTED) { if (camera == PackageManager.PERMISSION_GRANTED) {
CallActivity.instance().acceptCallUpdate(true); acceptCallUpdate(true);
} else { } else {
checkAndRequestPermission( checkAndRequestPermission(
Manifest.permission.CAMERA, PERMISSIONS_REQUEST_CAMERA); Manifest.permission.CAMERA, PERMISSIONS_REQUEST_CAMERA);
@ -1266,9 +1267,7 @@ public class CallActivity extends LinphoneGenericActivity
new OnClickListener() { new OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
if (CallActivity.isInstanciated()) { acceptCallUpdate(false);
CallActivity.instance().acceptCallUpdate(false);
}
mIsVideoAsk = false; mIsVideoAsk = false;
mDialog.dismiss(); mDialog.dismiss();
mDialog = null; mDialog = null;

View file

@ -376,6 +376,11 @@ public class ChatMessagesFragment extends Fragment
displayChatRoomHeader(); displayChatRoomHeader();
displayChatRoomHistory(); displayChatRoomHistory();
LinphoneManager.getInstance().setCurrentChatRoomAddress(mRemoteSipAddress); LinphoneManager.getInstance().setCurrentChatRoomAddress(mRemoteSipAddress);
if (LinphoneManager.getInstance().hasLastCallSasBeenRejected()) {
LinphoneManager.getInstance().lastCallSasRejected(false);
LinphoneUtils.showTrustDeniedDialog(getActivity());
}
} }
public void changeDisplayedChat(String localSipUri, String remoteSipUri) { public void changeDisplayedChat(String localSipUri, String remoteSipUri) {

View file

@ -145,6 +145,11 @@ public class DevicesFragment extends Fragment {
} }
initValues(); initValues();
if (LinphoneManager.getInstance().hasLastCallSasBeenRejected()) {
LinphoneManager.getInstance().lastCallSasRejected(false);
LinphoneUtils.showTrustDeniedDialog(getActivity());
}
} }
private void initChatRoom() { private void initChatRoom() {

View file

@ -20,9 +20,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/ */
import android.app.Fragment; import android.app.Fragment;
import android.content.Intent;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@ -32,11 +30,8 @@ import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import org.linphone.LinphoneActivity; import org.linphone.LinphoneActivity;
import org.linphone.LinphoneManager; import org.linphone.LinphoneManager;
import org.linphone.LinphoneService;
import org.linphone.R; import org.linphone.R;
import org.linphone.contacts.ContactsManager;
import org.linphone.core.Core; import org.linphone.core.Core;
import org.linphone.core.tools.Log;
import org.linphone.views.AddressAware; import org.linphone.views.AddressAware;
import org.linphone.views.AddressText; import org.linphone.views.AddressText;
import org.linphone.views.CallButton; import org.linphone.views.CallButton;
@ -178,7 +173,8 @@ public class DialerFragment extends Fragment {
String addressWaitingToBeCalled = LinphoneActivity.instance().addressWaitingToBeCalled; String addressWaitingToBeCalled = LinphoneActivity.instance().addressWaitingToBeCalled;
if (addressWaitingToBeCalled != null) { if (addressWaitingToBeCalled != null) {
mAddress.setText(addressWaitingToBeCalled); mAddress.setText(addressWaitingToBeCalled);
if (getResources() if (!LinphoneActivity.instance().isCallTransfer()
&& getResources()
.getBoolean(R.bool.automatically_start_intercepted_outgoing_gsm_call)) { .getBoolean(R.bool.automatically_start_intercepted_outgoing_gsm_call)) {
newOutgoingCall(addressWaitingToBeCalled); newOutgoingCall(addressWaitingToBeCalled);
} }
@ -208,6 +204,7 @@ public class DialerFragment extends Fragment {
mAddContact.setImageResource(R.drawable.call_back); mAddContact.setImageResource(R.drawable.call_back);
mAddContact.setOnClickListener(mCancelListener); mAddContact.setOnClickListener(mCancelListener);
} else { } else {
mCall.resetClickListener();
if (LinphoneManager.getLc().getVideoActivationPolicy().getAutomaticallyInitiate()) { if (LinphoneManager.getLc().getVideoActivationPolicy().getAutomaticallyInitiate()) {
mCall.setImageResource(R.drawable.call_video_start); mCall.setImageResource(R.drawable.call_video_start);
} else { } else {
@ -235,33 +232,4 @@ public class DialerFragment extends Fragment {
displayTextInAddressBar(numberOrSipAddress); displayTextInAddressBar(numberOrSipAddress);
LinphoneManager.getInstance().newOutgoingCall(mAddress); LinphoneManager.getInstance().newOutgoingCall(mAddress);
} }
public void newOutgoingCall(Intent intent) {
if (intent != null && intent.getData() != null) {
String scheme = intent.getData().getScheme();
if (scheme.startsWith("imto")) {
mAddress.setText("sip:" + intent.getData().getLastPathSegment());
} else if (scheme.startsWith("call") || scheme.startsWith("sip")) {
mAddress.setText(intent.getData().getSchemeSpecificPart());
} else {
Uri contactUri = intent.getData();
String address =
ContactsManager.getInstance()
.getAddressOrNumberForAndroidContact(
LinphoneService.instance().getContentResolver(),
contactUri);
if (address != null) {
mAddress.setText(address);
} else {
Log.e("Unknown scheme: ", scheme);
mAddress.setText(intent.getData().getSchemeSpecificPart());
}
}
mAddress.clearDisplayedName();
intent.setData(null);
LinphoneManager.getInstance().newOutgoingCall(mAddress);
}
}
} }

View file

@ -483,6 +483,7 @@ public class StatusFragment extends Fragment {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
if (call != null) { if (call != null) {
LinphoneManager.getInstance().lastCallSasRejected(true);
call.setAuthenticationTokenVerified(false); call.setAuthenticationTokenVerified(false);
if (mEncryption != null) { if (mEncryption != null) {
mEncryption.setImageResource(R.drawable.security_ko); mEncryption.setImageResource(R.drawable.security_ko);

View file

@ -203,6 +203,10 @@ public class AccountSettingsFragment extends Fragment {
new SettingListenerBase() { new SettingListenerBase() {
@Override @Override
public void onTextValueChanged(String newValue) { public void onTextValueChanged(String newValue) {
if (newValue.isEmpty()) {
return;
}
if (mAuthInfo != null) { if (mAuthInfo != null) {
mAuthInfo.setUsername(newValue); mAuthInfo.setUsername(newValue);
} else { } else {
@ -229,6 +233,7 @@ public class AccountSettingsFragment extends Fragment {
public void onTextValueChanged(String newValue) { public void onTextValueChanged(String newValue) {
if (mAuthInfo != null) { if (mAuthInfo != null) {
mAuthInfo.setUserid(newValue); mAuthInfo.setUserid(newValue);
Core core = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core core = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (core != null) { if (core != null) {
core.refreshRegisters(); core.refreshRegisters();
@ -244,9 +249,12 @@ public class AccountSettingsFragment extends Fragment {
@Override @Override
public void onTextValueChanged(String newValue) { public void onTextValueChanged(String newValue) {
if (mAuthInfo != null) { if (mAuthInfo != null) {
mAuthInfo.setHa1(null);
mAuthInfo.setPassword(newValue); mAuthInfo.setPassword(newValue);
Core core = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core core = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (core != null) { if (core != null) {
core.addAuthInfo(mAuthInfo);
core.refreshRegisters(); core.refreshRegisters();
} }
} else { } else {
@ -259,6 +267,10 @@ public class AccountSettingsFragment extends Fragment {
new SettingListenerBase() { new SettingListenerBase() {
@Override @Override
public void onTextValueChanged(String newValue) { public void onTextValueChanged(String newValue) {
if (newValue.isEmpty()) {
return;
}
if (mAuthInfo != null) { if (mAuthInfo != null) {
mAuthInfo.setDomain(newValue); mAuthInfo.setDomain(newValue);
} else { } else {
@ -601,6 +613,7 @@ public class AccountSettingsFragment extends Fragment {
if (mProxyConfig != null) { if (mProxyConfig != null) {
Address identityAddress = mProxyConfig.getIdentityAddress(); Address identityAddress = mProxyConfig.getIdentityAddress();
mAuthInfo = mProxyConfig.findAuthInfo(); mAuthInfo = mProxyConfig.findAuthInfo();
NatPolicy natPolicy = mProxyConfig.getNatPolicy(); NatPolicy natPolicy = mProxyConfig.getNatPolicy();
if (natPolicy == null) { if (natPolicy == null) {
natPolicy = core.createNatPolicy(); natPolicy = core.createNatPolicy();

View file

@ -437,12 +437,12 @@ public class LinphonePreferences {
// End of call settings // End of call settings
public boolean isWifiOnlyEnabled() { public boolean isWifiOnlyEnabled() {
return getConfig().getBool("app", "wifi_only", false); return getLc().wifiOnlyEnabled();
} }
// Network settings // Network settings
public void setWifiOnlyEnabled(Boolean enable) { public void setWifiOnlyEnabled(Boolean enable) {
getConfig().setBool("app", "wifi_only", enable); getLc().enableWifiOnly(enable);
} }
public void useRandomPort(boolean enabled) { public void useRandomPort(boolean enabled) {

View file

@ -21,8 +21,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
import android.app.Activity; import android.app.Activity;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.NetworkInfo; import android.net.NetworkInfo;
import android.os.Handler; import android.os.Handler;
@ -32,9 +35,14 @@ import android.text.Html;
import android.text.Spanned; import android.text.Spanned;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.View; import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText; import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import androidx.core.content.ContextCompat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
@ -49,6 +57,7 @@ import org.linphone.core.AccountCreator;
import org.linphone.core.Address; import org.linphone.core.Address;
import org.linphone.core.Call; import org.linphone.core.Call;
import org.linphone.core.Call.State; import org.linphone.core.Call.State;
import org.linphone.core.CallLog;
import org.linphone.core.ChatRoom; import org.linphone.core.ChatRoom;
import org.linphone.core.ChatRoomCapabilities; import org.linphone.core.ChatRoomCapabilities;
import org.linphone.core.Core; import org.linphone.core.Core;
@ -502,4 +511,65 @@ public final class LinphoneUtils {
} }
return newRooms; return newRooms;
} }
public static void showTrustDeniedDialog(Context context) {
final Dialog dialog = new Dialog(context);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Drawable d = new ColorDrawable(ContextCompat.getColor(context, R.color.dark_grey_color));
d.setAlpha(200);
dialog.setContentView(R.layout.dialog);
dialog.getWindow()
.setLayout(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT);
dialog.getWindow().setBackgroundDrawable(d);
TextView title = dialog.findViewById(R.id.dialog_title);
title.setVisibility(View.GONE);
TextView message = dialog.findViewById(R.id.dialog_message);
message.setVisibility(View.VISIBLE);
message.setText(context.getString(R.string.trust_denied));
ImageView icon = dialog.findViewById(R.id.dialog_icon);
icon.setVisibility(View.VISIBLE);
icon.setImageResource(R.drawable.security_alert_indicator);
Button delete = dialog.findViewById(R.id.dialog_delete_button);
delete.setVisibility(View.GONE);
Button cancel = dialog.findViewById(R.id.dialog_cancel_button);
cancel.setVisibility(View.VISIBLE);
Button call = dialog.findViewById(R.id.dialog_ok_button);
call.setVisibility(View.VISIBLE);
call.setText(R.string.call);
cancel.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
call.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View view) {
CallLog[] logs =
LinphoneManager.getLcIfManagerNotDestroyedOrNull().getCallLogs();
CallLog lastLog = logs[0];
Address addressToCall =
lastLog.getDir() == Call.Dir.Incoming
? lastLog.getFromAddress()
: lastLog.getToAddress();
LinphoneManager.getInstance()
.newOutgoingCall(addressToCall.asString(), null);
dialog.dismiss();
}
});
dialog.show();
}
} }

View file

@ -46,7 +46,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:orientation="vertical" android:orientation="vertical"
android:visibility="visible"> android:visibility="gone">
<RelativeLayout <RelativeLayout
android:layout_width="match_parent" android:layout_width="match_parent"
@ -162,7 +162,7 @@
android:layout_column="0" android:layout_column="0"
android:layout_weight="1" android:layout_weight="1"
android:orientation="vertical" android:orientation="vertical"
android:visibility="gone"> android:visibility="visible">
<TextView <TextView
android:id="@+id/username_label" android:id="@+id/username_label"
@ -201,7 +201,7 @@
android:layout_weight="1" android:layout_weight="1"
android:orientation="vertical" android:orientation="vertical"
android:paddingLeft="30dp" android:paddingLeft="30dp"
android:visibility="gone"> android:visibility="visible">
<TextView <TextView
android:id="@+id/password_label" android:id="@+id/password_label"
@ -249,7 +249,7 @@
android:layout_column="0" android:layout_column="0"
android:layout_weight="1" android:layout_weight="1"
android:orientation="vertical" android:orientation="vertical"
android:visibility="gone"> android:visibility="visible">
<TextView <TextView
android:id="@+id/email_label" android:id="@+id/email_label"
@ -291,7 +291,7 @@
android:layout_weight="1" android:layout_weight="1"
android:orientation="vertical" android:orientation="vertical"
android:paddingLeft="30dp" android:paddingLeft="30dp"
android:visibility="gone"> android:visibility="visible">
<TextView <TextView
android:id="@+id/confirm_password_label" android:id="@+id/confirm_password_label"
@ -338,12 +338,12 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_column="1" android:layout_column="1"
android:checked="false" android:checked="true"
android:paddingLeft="5dp" android:paddingLeft="5dp"
android:button="@drawable/checkbox" android:button="@drawable/checkbox"
android:textColor="?attr/primaryTextColor" android:textColor="?attr/primaryTextColor"
android:text="@string/use_username_instead_or_phone_number" android:text="@string/use_username_instead_or_phone_number"
android:visibility="visible" /> android:visibility="gone" />
</TableRow> </TableRow>
<TableRow <TableRow
@ -357,12 +357,12 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_column="1" android:layout_column="1"
android:checked="false" android:checked="true"
android:paddingLeft="5dp" android:paddingLeft="5dp"
android:button="@drawable/checkbox" android:button="@drawable/checkbox"
android:textColor="?attr/primaryTextColor" android:textColor="?attr/primaryTextColor"
android:text="@string/use_email_for_validation" android:text="@string/use_email_for_validation"
android:visibility="visible" /> android:visibility="gone" />
</TableRow> </TableRow>

View file

@ -424,6 +424,7 @@
<string name="pref_service_notification">Dienstbenachrichtigung aktivieren</string> <string name="pref_service_notification">Dienstbenachrichtigung aktivieren</string>
<string name="pref_autostart">Beim Einschalten starten</string> <string name="pref_autostart">Beim Einschalten starten</string>
<string name="pref_incoming_call_timeout_title">Auflegen bei eingehendem Anruf (in Sekunden)</string> <string name="pref_incoming_call_timeout_title">Auflegen bei eingehendem Anruf (in Sekunden)</string>
<string name="pref_device_name">Gerätename</string>
<string name="pref_remote_provisioning_title">Fernbereitstellung</string> <string name="pref_remote_provisioning_title">Fernbereitstellung</string>
<string name="pref_android_app_settings_title">Android-App-Einstellungen</string> <string name="pref_android_app_settings_title">Android-App-Einstellungen</string>
<string name="pref_android_app_notif_settings_title">Android-Benachrichtigungseinstellungen</string> <string name="pref_android_app_notif_settings_title">Android-Benachrichtigungseinstellungen</string>

View file

@ -29,7 +29,7 @@
<string name="display_name">Nom d\'affichage</string> <string name="display_name">Nom d\'affichage</string>
<string name="password">Mot de passe</string> <string name="password">Mot de passe</string>
<string name="confirm_password">Confirmation du mot de passe</string> <string name="confirm_password">Confirmation du mot de passe</string>
<string name="domain">Domain</string> <string name="domain">Domaine</string>
<string name="remote_provisioning_url">URL</string> <string name="remote_provisioning_url">URL</string>
<string name="email">Email</string> <string name="email">Email</string>
<string name="delete_text">Voulez-vous supprimer votre sélection ?</string> <string name="delete_text">Voulez-vous supprimer votre sélection ?</string>
@ -241,6 +241,7 @@ Disponible gratuitement ici : %s</string>
<string name="unexpected_event">Evénement inattendu %i pour %s</string> <string name="unexpected_event">Evénement inattendu %i pour %s</string>
<string name="download_file">Télécharger</string> <string name="download_file">Télécharger</string>
<string name="toast_choose_chat_room_for_sharing">Sélectionnez une conversation ou créez-en une nouvelle</string> <string name="toast_choose_chat_room_for_sharing">Sélectionnez une conversation ou créez-en une nouvelle</string>
<string name="trust_denied">La confiance a été retirée. Faites un appel pour relancer la procédure dauthentification.</string>
<!--Status Bar--> <!--Status Bar-->
<string name="status_connected">Connecté</string> <string name="status_connected">Connecté</string>
<string name="status_not_connected">Déconnecté</string> <string name="status_not_connected">Déconnecté</string>

View file

@ -6,15 +6,26 @@
<string name="addressbook_label">Linphone</string> <string name="addressbook_label">Linphone</string>
<string name="notification_title">Linphone</string> <string name="notification_title">Linphone</string>
<string name="wait_dialog_text">Avvio</string> <string name="wait_dialog_text">Avvio</string>
<string name="notification_registered">%sè connesso</string>
<string name="notification_register_failure">%s non è riuscito a connettersi</string>
<string name="tunnel_host"></string> <string name="tunnel_host"></string>
<string name="about_version">Linphone Android %s</string> <string name="about_version">Linphone Android %s</string>
<string name="about_liblinphone_version">Linphone Core %s</string> <string name="about_liblinphone_version">Linphone Core %s</string>
<string name="about_liblinphone_sdk_version">Linphone SDK %s</string>
<string name="about_privacy_policy">Leggi le nostre regole della privacy</string>
<string name="sync_account_name">contatti linphone</string> <string name="sync_account_name">contatti linphone</string>
<!--Notifications--> <!--Notifications-->
<string name="notification_reply_label">Rispondi</string>
<string name="notification_replied_label">Risposta inviata: %s</string>
<string name="notification_call_hangup_label">Interrompi</string>
<string name="notification_call_answer_label">Rispondi</string>
<string name="notification_mark_as_read_label">Segna come già letto</string>
<!--Common--> <!--Common-->
<string name="username">Nome utente</string> <string name="username">Nome utente</string>
<string name="userid">ID utente (facoltativo)</string> <string name="userid">ID utente (facoltativo)</string>
<string name="phone_number">Numero di telefono</string> <string name="phone_number">Numero di telefono</string>
<string name="confirmation_code">Codice di conferma</string>
<string name="international_prefix">Prefisso internazionale</string>
<string name="display_name">Nome visualizzato</string> <string name="display_name">Nome visualizzato</string>
<string name="password">Password</string> <string name="password">Password</string>
<string name="confirm_password">Conferma password</string> <string name="confirm_password">Conferma password</string>
@ -48,6 +59,9 @@
<string name="yes">Si</string> <string name="yes">Si</string>
<string name="link_account">Collega il tuo account</string> <string name="link_account">Collega il tuo account</string>
<string name="update_available">È disponibile un aggiornamento</string> <string name="update_available">È disponibile un aggiornamento</string>
<string name="do_not_ask_again">Non mostrarlo più</string>
<string name="delete_contacts_text">Sei sicuro di eliminare questi contatti?\nSaranno eliminati anche dal tuo telefono!</string>
<string name="logs_url_copied_to_clipboard">Log indirizzi copiati negli appunti</string>
<!--Launch screen--> <!--Launch screen-->
<string name="app_description">the <i>libre</i> SIP client</string> <string name="app_description">the <i>libre</i> SIP client</string>
<!--Assistant--> <!--Assistant-->
@ -78,6 +92,7 @@
<string name="assistant_generic_account">Usa l\'account SIP</string> <string name="assistant_generic_account">Usa l\'account SIP</string>
<string name="assistant_remote_provisioning_title">Recupera la configurazione remota</string> <string name="assistant_remote_provisioning_title">Recupera la configurazione remota</string>
<string name="assistant_fetch_apply">Recupera ed applica</string> <string name="assistant_fetch_apply">Recupera ed applica</string>
<string name="assistant_launch_qrcode">Codice QR</string>
<string name="assistant_login">Login</string> <string name="assistant_login">Login</string>
<string name="assistant_ec_calibration">Calibrazione del cancellatore dell\'eco in corso</string> <string name="assistant_ec_calibration">Calibrazione del cancellatore dell\'eco in corso</string>
<string name="assistant_remote_provisioning_login">Inserisci il tuo login</string> <string name="assistant_remote_provisioning_login">Inserisci il tuo login</string>
@ -145,6 +160,7 @@
<string name="delete_history_log">Vuoi cancellare il registro delle chiamate selezionato?</string> <string name="delete_history_log">Vuoi cancellare il registro delle chiamate selezionato?</string>
<string name="today">Oggi</string> <string name="today">Oggi</string>
<string name="yesterday">Ieri</string> <string name="yesterday">Ieri</string>
<string name="calls">Chiamate</string>
<!--Contacts--> <!--Contacts-->
<string name="no_contact">Nessun contatto nella tua rubrica.</string> <string name="no_contact">Nessun contatto nella tua rubrica.</string>
<string name="no_sip_contact">Nessun contatto SIP nella tua rubrica.</string> <string name="no_sip_contact">Nessun contatto SIP nella tua rubrica.</string>
@ -154,10 +170,16 @@
<string name="contact_first_name">Nome</string> <string name="contact_first_name">Nome</string>
<string name="contact_last_name">Cognome</string> <string name="contact_last_name">Cognome</string>
<string name="contact_organization">Organizzazione</string> <string name="contact_organization">Organizzazione</string>
<string name="invite_friend">Invito</string>
<string name="invite_friend_text">Ciao, chiamami con Linphone! Puoi scaricarlo gratuitamente a %s</string>
<string name="toast_choose_contact_for_edition">Scegli un contatto o creane uno nuovo</string>
<!--Chat--> <!--Chat-->
<string name="no_chat_history">Nessuna conversazione</string> <string name="no_chat_history">Nessuna conversazione</string>
<string name="delete_conversation">Vuoi eliminare la conversazione selezionata?</string> <string name="delete_conversation">Vuoi eliminare la conversazione selezionata?</string>
<string name="delete_message">Vuoi eliminare il messaggio selezionato?</string> <string name="delete_message">Vuoi eliminare il messaggio selezionato?</string>
<string name="remote_composing"> L\'interlocutore sta scrivendo...</string>
<string name="remote_composing_single">%s sta scrivendo...</string>
<string name="remote_composing_multiple">%s stanno scrivendo...</string>
<string name="share_picture_size_small">Piccolo</string> <string name="share_picture_size_small">Piccolo</string>
<string name="share_picture_size_medium">Medio</string> <string name="share_picture_size_medium">Medio</string>
<string name="share_picture_size_large">Grande</string> <string name="share_picture_size_large">Grande</string>
@ -167,6 +189,7 @@
<string name="image_picker_title">Seleziona la fonte</string> <string name="image_picker_title">Seleziona la fonte</string>
<string name="image_saved">Immagine salvata</string> <string name="image_saved">Immagine salvata</string>
<string name="image_not_saved">Errore, immagine non salvata</string> <string name="image_not_saved">Errore, immagine non salvata</string>
<string name="wait">Attendere prego...</string>
<string name="image_transfert_error">Si è verificato un errore durante il trasferimento del file</string> <string name="image_transfert_error">Si è verificato un errore durante il trasferimento del file</string>
<string name="message_not_encrypted">Questo messaggio non è cifrato</string> <string name="message_not_encrypted">Questo messaggio non è cifrato</string>
<string name="message_cant_be_decrypted">Hai ricevuto un messaggio crittografato che non sei in grado di decodificare da %s\nDevi chiamare il tuo corrispondente per scambiare le tue chiavi ZRTP se vuoi decodificare i messaggi futuri che riceverai.</string> <string name="message_cant_be_decrypted">Hai ricevuto un messaggio crittografato che non sei in grado di decodificare da %s\nDevi chiamare il tuo corrispondente per scambiare le tue chiavi ZRTP se vuoi decodificare i messaggi futuri che riceverai.</string>
@ -200,17 +223,34 @@
<string name="chat_room_you_are_now_admin">Ora sei amministratore</string> <string name="chat_room_you_are_now_admin">Ora sei amministratore</string>
<string name="chat_room_you_are_no_longer_admin">Non sei più amministratore</string> <string name="chat_room_you_are_no_longer_admin">Non sei più amministratore</string>
<string name="chat_room_creation_failed">Creazione della chat room fallita</string> <string name="chat_room_creation_failed">Creazione della chat room fallita</string>
<string name="chat_room_leave_dialog">Vuoi veramente lasciare questa conversazione?</string>
<string name="chat_room_leave_button">Lascia</string> <string name="chat_room_leave_button">Lascia</string>
<string name="chat_room_delete_dialog">Vuoi eliminare e lasciare le conversazioni selezionate?</string>
<string name="separator">: </string> <string name="separator">: </string>
<string name="imdn_info">Stato della consegna</string> <string name="imdn_info">Stato della consegna</string>
<string name="chat_room_devices">Dispositivi di %s</string> <string name="chat_room_devices">Dispositivi di %s</string>
<string name="group_chat_room_devices">Dispositivi di conversazione</string> <string name="group_chat_room_devices">Dispositivi di conversazione</string>
<string name="add_to_contacts">Aggiungi ai contatti</string> <string name="add_to_contacts">Aggiungi ai contatti</string>
<string name="lime_security_popup">I messaggi sono criptati in conversazioni sicure. È possibile aumentare il livello di sicurezza di una conversazione autentificando i partecipanti. Per farlo, chiama il contatto e segui il processo di autenticazione.</string>
<string name="lime_identity_key_changed">Chiave di identità LIME cambiata per %s</string>
<string name="man_in_the_middle_detected">Attacco del tipo man-in-the-middle per %s</string>
<string name="security_level_downgraded">%sha fatto diminuire il livello di sicurezza</string>
<string name="participant_max_count_exceeded">%sha superato il numero max partecipanti</string>
<string name="unexpected_event">Evento inaspettato %iper %s</string>
<string name="download_file">Scarica</string>
<string name="toast_choose_chat_room_for_sharing">Scegli una conversazione o creane una nuova</string>
<string name="trust_denied">Il trust è stato negato. Effettua una chiamata per avviare nuovamente la procedura di autenticazione.</string>
<!--Status Bar--> <!--Status Bar-->
<string name="status_connected">Connesso</string>
<string name="status_not_connected">Non connesso</string>
<string name="status_in_progress">Registrazione in corso</string>
<string name="status_error">Connessione difettosa</string>
<string name="voicemail_unread">messaggi non letti</string> <string name="voicemail_unread">messaggi non letti</string>
<!--Side Menu--> <!--Side Menu-->
<string name="menu_logout">Uscita</string>
<string name="menu_assistant">Assistente</string> <string name="menu_assistant">Assistente</string>
<string name="menu_settings">Impostazioni</string> <string name="menu_settings">Impostazioni</string>
<string name="menu_recordings">Registrazioni</string>
<string name="menu_about">Informazioni</string> <string name="menu_about">Informazioni</string>
<string name="quit">Esci</string> <string name="quit">Esci</string>
<!--Call--> <!--Call-->
@ -220,6 +260,9 @@
<string name="no_current_call">Nessuna chiamata attiva</string> <string name="no_current_call">Nessuna chiamata attiva</string>
<string name="call_paused_by_remote">Il chiamante ha messo in pausa la chiamata</string> <string name="call_paused_by_remote">Il chiamante ha messo in pausa la chiamata</string>
<string name="couldnt_accept_call">Si è verificato un errore durante l\'accettazione della chiamata</string> <string name="couldnt_accept_call">Si è verificato un errore durante l\'accettazione della chiamata</string>
<string name="zrtp_local_sas">Leggi:</string>
<string name="zrtp_remote_sas">Conferma che il tuo interlocutore dice:</string>
<string name="zrtp_dialog_title">Sicurezza della conversazione</string>
<string name="zrtp_notification_title">SAS</string> <string name="zrtp_notification_title">SAS</string>
<string name="zrtp_notification_message">Conferma il precedente codice SAS con il tuo corrispondente</string> <string name="zrtp_notification_message">Conferma il precedente codice SAS con il tuo corrispondente</string>
<string name="unknown_incoming_call_name">Sconosciuto</string> <string name="unknown_incoming_call_name">Sconosciuto</string>
@ -242,7 +285,10 @@
<string name="call_stats_decoder_name">Decoder:</string> <string name="call_stats_decoder_name">Decoder:</string>
<string name="call_stats_display_filter">Filtro di visualizzazione:</string> <string name="call_stats_display_filter">Filtro di visualizzazione:</string>
<string name="call">Chiamata</string> <string name="call">Chiamata</string>
<string name="call_log_delete_dialog">Vuoi cancellare il registro delle chiamate selezionate?</string>
<!--Recordings--> <!--Recordings-->
<string name="no_recordings">Nessuna registrazione</string>
<string name="recordings_delete_dialog">Vuoi eliminare le registrazioni selezionate?</string>
<!--About--> <!--About-->
<string name="menu_send_log">Invia log</string> <string name="menu_send_log">Invia log</string>
<string name="menu_reset_log">Cancella log</string> <string name="menu_reset_log">Cancella log</string>
@ -250,6 +296,8 @@
<string name="incall_notif_active">Chiamata audio in corso</string> <string name="incall_notif_active">Chiamata audio in corso</string>
<string name="incall_notif_paused">Chiamata in pausa</string> <string name="incall_notif_paused">Chiamata in pausa</string>
<string name="incall_notif_video">Chiamata video in corso</string> <string name="incall_notif_video">Chiamata video in corso</string>
<string name="incall_notif_incoming">Chiamata in arrivo</string>
<string name="incall_notif_outgoing">Chiamata effettuata</string>
<string name="notification_started">avviato</string> <string name="notification_started">avviato</string>
<string name="unread_messages">%i messaggi non letti</string> <string name="unread_messages">%i messaggi non letti</string>
<string name="missed_calls_notif_title">Chiamata persa</string> <string name="missed_calls_notif_title">Chiamata persa</string>
@ -270,6 +318,7 @@
<string name="error_unauthorized">Non autorizzato</string> <string name="error_unauthorized">Non autorizzato</string>
<string name="error_io_error">Errore di rete</string> <string name="error_io_error">Errore di rete</string>
<string name="download_image_failed">Scaricamento fallito. Controlla la connessione di rete o riprova più tardi.</string> <string name="download_image_failed">Scaricamento fallito. Controlla la connessione di rete o riprova più tardi.</string>
<string name="remote_provisioning_failure">Impossibile scaricare o applicare il profilo di provisioning remoto...</string>
<string name="remote_provisioning_again_title">Provisioning remoto</string> <string name="remote_provisioning_again_title">Provisioning remoto</string>
<string name="remote_provisioning_again_message">Vuoi cambiare l\'URI di provisioning?</string> <string name="remote_provisioning_again_message">Vuoi cambiare l\'URI di provisioning?</string>
<!--Account Settings--> <!--Account Settings-->
@ -336,6 +385,8 @@
<string name="failed">non riuscito</string> <string name="failed">non riuscito</string>
<string name="pref_adaptive_rate_control">Controllo adattivo della velocità</string> <string name="pref_adaptive_rate_control">Controllo adattivo della velocità</string>
<string name="pref_codec_bitrate_limit">Limite bitrate del codec</string> <string name="pref_codec_bitrate_limit">Limite bitrate del codec</string>
<string name="pref_mic_gain_db">Amplificazione microfono (in db)</string>
<string name="pref_playback_gain_db">Amplificazione ascolto (in db)</string>
<string name="pref_codecs">Codec</string> <string name="pref_codecs">Codec</string>
<!--Video settings--> <!--Video settings-->
<string name="pref_video_title">Video</string> <string name="pref_video_title">Video</string>
@ -354,6 +405,7 @@
<!--Call settings--> <!--Call settings-->
<string name="pref_call_title">Chiamata</string> <string name="pref_call_title">Chiamata</string>
<string name="pref_device_ringtone">Usa la suoneria del dispositivo</string> <string name="pref_device_ringtone">Usa la suoneria del dispositivo</string>
<string name="pref_vibrate_on_incoming_calls">Vibrazione per chiamata in arrivo</string>
<string name="pref_auto_answer">Rispondere automaticamente alle chiamate in arrivo</string> <string name="pref_auto_answer">Rispondere automaticamente alle chiamate in arrivo</string>
<string name="pref_auto_answer_time">Tempo di risposta automatica (in millisecondi)</string> <string name="pref_auto_answer_time">Tempo di risposta automatica (in millisecondi)</string>
<string name="pref_rfc2833_dtmf">Invia DTMF in-band (RFC2833)</string> <string name="pref_rfc2833_dtmf">Invia DTMF in-band (RFC2833)</string>
@ -361,6 +413,7 @@
<string name="pref_call_timeout_title">Timeout della chiamata (in secondi)</string> <string name="pref_call_timeout_title">Timeout della chiamata (in secondi)</string>
<string name="pref_voice_mail">URI della segreteria telefonica</string> <string name="pref_voice_mail">URI della segreteria telefonica</string>
<string name="pref_dialer_call">Utilizza Linphone come app telefono predefinita</string> <string name="pref_dialer_call">Utilizza Linphone come app telefono predefinita</string>
<string name="pref_accept_early_media">Accetta early-media</string>
<!--Chat settings--> <!--Chat settings-->
<string name="pref_chat_title">Chat</string> <string name="pref_chat_title">Chat</string>
<string name="pref_image_sharing_server_title">Server di condivisione</string> <string name="pref_image_sharing_server_title">Server di condivisione</string>
@ -370,6 +423,11 @@
<string name="lime_encryption_entry_mandatory">Obbligatorio</string> <string name="lime_encryption_entry_mandatory">Obbligatorio</string>
<string name="lime_encryption_entry_preferred">Preferito</string> <string name="lime_encryption_entry_preferred">Preferito</string>
<string name="lime_encryption_enable_zrtp">LIME richiede la cifratura ZRTP.\nAttivando LIME si attiva automaticamente la cifratura multimediale ZRTP.</string> <string name="lime_encryption_enable_zrtp">LIME richiede la cifratura ZRTP.\nAttivando LIME si attiva automaticamente la cifratura multimediale ZRTP.</string>
<string name="pref_auto_download_policy_title">Regole per scaricamento di file in arrivo</string>
<string name="pref_auto_download_max_size_title">Grandezza max (in byte)</string>
<string name="pref_auto_download_disabled">Mai</string>
<string name="pref_auto_download_always">Sempre</string>
<string name="pref_auto_download_under_size">Se minore della grandezza massima</string>
<!--Network settings--> <!--Network settings-->
<string name="pref_network_title">Rete</string> <string name="pref_network_title">Rete</string>
<string name="pref_wifi_only">Usa solo Wi-Fi</string> <string name="pref_wifi_only">Usa solo Wi-Fi</string>
@ -389,17 +447,23 @@
<string name="pref_media_encryption">Cifratura multimediale</string> <string name="pref_media_encryption">Cifratura multimediale</string>
<string name="pref_push_notification">Abilita le notifiche push</string> <string name="pref_push_notification">Abilita le notifiche push</string>
<string name="pref_ipv6_title">Consenti IPv6</string> <string name="pref_ipv6_title">Consenti IPv6</string>
<string name="pref_protected_settings_title">Impostazioni per protezione batteria</string>
<string name="pref_protected_settings_desc">La app deve\'essere abilitata per ricevere notifiche push</string>
<!--Advanced settings--> <!--Advanced settings-->
<string name="pref_advanced_title">Avanzate</string> <string name="pref_advanced_title">Avanzate</string>
<string name="pref_dark_mode">Modalità scura</string>
<string name="pref_debug_title">Debug</string> <string name="pref_debug_title">Debug</string>
<string name="pref_debug">Debug</string> <string name="pref_debug">Debug</string>
<string name="pref_java_debug">Utilizza il Java logger</string> <string name="pref_java_debug">Utilizza il Java logger</string>
<string name="pref_friendlist_subscribe">Iscrizione ad una lista di amici</string> <string name="pref_friendlist_subscribe">Iscrizione ad una lista di amici</string>
<string name="pref_background_mode">Modalità Background</string> <string name="pref_background_mode">Modalità Background</string>
<string name="pref_background_mode_desc">Mostra una notifica per tenere la app aperta</string>
<string name="pref_animation_enable_title">Abilita animazioni</string> <string name="pref_animation_enable_title">Abilita animazioni</string>
<string name="pref_service_notification">Abilita notifica di servizio</string> <string name="pref_service_notification">Abilita notifica di servizio</string>
<string name="pref_autostart">Parti dell\'avvio</string> <string name="pref_autostart">Parti dell\'avvio</string>
<string name="pref_incoming_call_timeout_title">Riaggancio delle chiamate in entrata (in secondi)</string> <string name="pref_incoming_call_timeout_title">Riaggancio delle chiamate in entrata (in secondi)</string>
<string name="pref_device_name">Nome dispositivo</string>
<string name="pref_display_name_subtitle">I cambiamenti entrano in vigore alla prossima accensione</string>
<string name="pref_remote_provisioning_title">Provisioning remoto</string> <string name="pref_remote_provisioning_title">Provisioning remoto</string>
<string name="pref_android_app_settings_title">Impostazioni dell\'app Android</string> <string name="pref_android_app_settings_title">Impostazioni dell\'app Android</string>
<string name="pref_android_app_notif_settings_title">Impostazioni di notifica Android</string> <string name="pref_android_app_notif_settings_title">Impostazioni di notifica Android</string>
@ -413,10 +477,15 @@
<string name="pref_audio_hacks_use_routing_api_title">Usa la modifica delle API di instradamento</string> <string name="pref_audio_hacks_use_routing_api_title">Usa la modifica delle API di instradamento</string>
<string name="pref_audio_hacks_use_galaxys_hack_title">Utilizza le modifiche audio per Galaxy S</string> <string name="pref_audio_hacks_use_galaxys_hack_title">Utilizza le modifiche audio per Galaxy S</string>
<!--Device specifics--> <!--Device specifics-->
<string name="device_power_saver_dialog_title">Rilevato risparmio energetico</string>
<string name="device_power_saver_dialog_message">Sembra che il tuo dispositivo abbia il risparmio energetico. Se desideri ricevere chiamate e notifiche push mentre la app è chiusa devi abilitare tale funzione.</string>
<string name="device_power_saver_dialog_button_go_to_settings">Impostazioni</string> <string name="device_power_saver_dialog_button_go_to_settings">Impostazioni</string>
<string name="device_power_saver_dialog_button_later">Dopo</string> <string name="device_power_saver_dialog_button_later">Dopo</string>
<!--Debug popup--> <!--Debug popup-->
<string name="debug_popup_title">Debug</string> <string name="debug_popup_title">Debug</string>
<string name="debug_popup_enable_logs">Abilita registri attività</string>
<string name="debug_popup_disable_logs">Disabilita registri attività</string>
<string name="debug_popup_send_logs">Invia registro attività</string>
<!--Content description--> <!--Content description-->
<string name="content_description_back">Indietro</string> <string name="content_description_back">Indietro</string>
<string name="content_description_dialer">Tastierino</string> <string name="content_description_dialer">Tastierino</string>
@ -493,4 +562,5 @@
<string name="content_title_notification">Notifiche di messaggi istantanei Linphone</string> <string name="content_title_notification">Notifiche di messaggi istantanei Linphone</string>
<string name="content_description_conversation_subject">Oggetto della chat room di gruppo</string> <string name="content_description_conversation_subject">Oggetto della chat room di gruppo</string>
<string name="content_description_conversation_infos">Informazioni sulla chat room di gruppo</string> <string name="content_description_conversation_infos">Informazioni sulla chat room di gruppo</string>
<string name="content_description_record_call">Registra chiamata</string>
</resources> </resources>

View file

@ -239,6 +239,7 @@
<string name="unexpected_event">Неожиданное событие %i для %s</string> <string name="unexpected_event">Неожиданное событие %i для %s</string>
<string name="download_file">Скачать</string> <string name="download_file">Скачать</string>
<string name="toast_choose_chat_room_for_sharing">Выберите беседу или создайте новую</string> <string name="toast_choose_chat_room_for_sharing">Выберите беседу или создайте новую</string>
<string name="trust_denied">В доверии было отказано. Сделайте вызов, чтобы начать процесс аутентификации снова.</string>
<!--Status Bar--> <!--Status Bar-->
<string name="status_connected">Соединено</string> <string name="status_connected">Соединено</string>
<string name="status_not_connected">Не соединено</string> <string name="status_not_connected">Не соединено</string>
@ -461,6 +462,8 @@
<string name="pref_service_notification">Включить сервисное уведомление</string> <string name="pref_service_notification">Включить сервисное уведомление</string>
<string name="pref_autostart">Запуск во время загрузки</string> <string name="pref_autostart">Запуск во время загрузки</string>
<string name="pref_incoming_call_timeout_title">Отклонение входящего вызова (в секундах)</string> <string name="pref_incoming_call_timeout_title">Отклонение входящего вызова (в секундах)</string>
<string name="pref_device_name">Имя устройства</string>
<string name="pref_display_name_subtitle">Изменения применятся при следующем запуске</string>
<string name="pref_remote_provisioning_title">Удалённое конфигурирование</string> <string name="pref_remote_provisioning_title">Удалённое конфигурирование</string>
<string name="pref_android_app_settings_title">Параметры приложения в Android</string> <string name="pref_android_app_settings_title">Параметры приложения в Android</string>
<string name="pref_android_app_notif_settings_title">Параметры уведомлений в Android</string> <string name="pref_android_app_notif_settings_title">Параметры уведомлений в Android</string>

View file

@ -6,10 +6,13 @@
<string name="addressbook_label">Linphone</string> <string name="addressbook_label">Linphone</string>
<string name="notification_title">Linphone</string> <string name="notification_title">Linphone</string>
<string name="wait_dialog_text">Завантажується</string> <string name="wait_dialog_text">Завантажується</string>
<string name="notification_registered">%s з\'єднано</string>
<string name="notification_register_failure">%s з\'єднатися не вийшло</string>
<string name="tunnel_host"></string> <string name="tunnel_host"></string>
<string name="about_version">Linphone Android %s</string> <string name="about_version">Linphone Android %s</string>
<string name="about_liblinphone_version">Linphone ядро %s</string> <string name="about_liblinphone_version">Linphone ядро %s</string>
<string name="about_liblinphone_sdk_version">Linphone SDK %s</string> <string name="about_liblinphone_sdk_version">Linphone SDK %s</string>
<string name="about_privacy_policy">Відвідайте нашу політику конфіденційності</string>
<string name="sync_account_name">контакти linphone</string> <string name="sync_account_name">контакти linphone</string>
<!--Notifications--> <!--Notifications-->
<string name="notification_reply_label">Відповідь</string> <string name="notification_reply_label">Відповідь</string>
@ -21,6 +24,8 @@
<string name="username">Ім\'я користувача</string> <string name="username">Ім\'я користувача</string>
<string name="userid">Ідентифікатор користувача (необов\'язково)</string> <string name="userid">Ідентифікатор користувача (необов\'язково)</string>
<string name="phone_number">Номер телефону</string> <string name="phone_number">Номер телефону</string>
<string name="confirmation_code">Код підтвердження</string>
<string name="international_prefix">Префікс міжнародного номеру телефону</string>
<string name="display_name">Показуване ім\'я</string> <string name="display_name">Показуване ім\'я</string>
<string name="password">Пароль</string> <string name="password">Пароль</string>
<string name="confirm_password">Схвалення паролю</string> <string name="confirm_password">Схвалення паролю</string>
@ -56,6 +61,7 @@
<string name="update_available">Доступне оновлення</string> <string name="update_available">Доступне оновлення</string>
<string name="do_not_ask_again">Не показувати знову</string> <string name="do_not_ask_again">Не показувати знову</string>
<string name="delete_contacts_text">Ви впевнені, що волієте вилучити ці контакти?\nВони також будуть вилучені з вашого телефону!</string> <string name="delete_contacts_text">Ви впевнені, що волієте вилучити ці контакти?\nВони також будуть вилучені з вашого телефону!</string>
<string name="logs_url_copied_to_clipboard">URL-адресу журналів скопійовано до буферу обміну</string>
<!--Launch screen--> <!--Launch screen-->
<string name="app_description">це <i>безкоштовний</i> SIP-клієнт</string> <string name="app_description">це <i>безкоштовний</i> SIP-клієнт</string>
<!--Assistant--> <!--Assistant-->
@ -154,6 +160,7 @@
<string name="delete_history_log">Ви справді бажаєте вилучити обраний журнал викликів?</string> <string name="delete_history_log">Ви справді бажаєте вилучити обраний журнал викликів?</string>
<string name="today">Сьогодні</string> <string name="today">Сьогодні</string>
<string name="yesterday">Вчора</string> <string name="yesterday">Вчора</string>
<string name="calls">Виклики</string>
<!--Contacts--> <!--Contacts-->
<string name="no_contact">В адресній книзі немає контактів.</string> <string name="no_contact">В адресній книзі немає контактів.</string>
<string name="no_sip_contact">В адресній книзі немає SIP контактів.</string> <string name="no_sip_contact">В адресній книзі немає SIP контактів.</string>
@ -164,10 +171,15 @@
<string name="contact_last_name">Прізвище</string> <string name="contact_last_name">Прізвище</string>
<string name="contact_organization">Організація</string> <string name="contact_organization">Організація</string>
<string name="invite_friend">Запросити</string> <string name="invite_friend">Запросити</string>
<string name="invite_friend_text">Вітаю! Приєднуйтеся до мене в Linphone! Ви можете завантажити його безкоштовно звідси: %s</string>
<string name="toast_choose_contact_for_edition">Оберіть контакт або створіть новий</string>
<!--Chat--> <!--Chat-->
<string name="no_chat_history">Немає розмов</string> <string name="no_chat_history">Немає розмов</string>
<string name="delete_conversation">Ви справді бажаєте вилучити обрану розмову?</string> <string name="delete_conversation">Ви справді бажаєте вилучити обрану розмову?</string>
<string name="delete_message">Ви справді бажаєте вилучити обране повідомлення?</string> <string name="delete_message">Ви справді бажаєте вилучити обране повідомлення?</string>
<string name="remote_composing">Співрозмовник пише...</string>
<string name="remote_composing_single">%s пише…</string>
<string name="remote_composing_multiple">%s пишуть…</string>
<string name="share_picture_size_small">Маленький</string> <string name="share_picture_size_small">Маленький</string>
<string name="share_picture_size_medium">Середній</string> <string name="share_picture_size_medium">Середній</string>
<string name="share_picture_size_large">Великий</string> <string name="share_picture_size_large">Великий</string>
@ -177,6 +189,7 @@
<string name="image_picker_title">Вибрати джерело</string> <string name="image_picker_title">Вибрати джерело</string>
<string name="image_saved">Зображення збережено</string> <string name="image_saved">Зображення збережено</string>
<string name="image_not_saved">Помилка, зображення не збережено</string> <string name="image_not_saved">Помилка, зображення не збережено</string>
<string name="wait">Будь ласка зачекайте...</string>
<string name="image_transfert_error">При передачі файлу трапилася помилка</string> <string name="image_transfert_error">При передачі файлу трапилася помилка</string>
<string name="message_not_encrypted">Це повідомлення не зашифровано</string> <string name="message_not_encrypted">Це повідомлення не зашифровано</string>
<string name="message_cant_be_decrypted">Від %sотримано зашифроване повідомлення, яке ви не можете розшифрувати.\nВи маєте зателефонувати своєму співрозмовнику для обміну ключами ZRTP. Це необхідно для розшифрування майбутніх повідомлень, які ви отримаєте.</string> <string name="message_cant_be_decrypted">Від %sотримано зашифроване повідомлення, яке ви не можете розшифрувати.\nВи маєте зателефонувати своєму співрозмовнику для обміну ключами ZRTP. Це необхідно для розшифрування майбутніх повідомлень, які ви отримаєте.</string>
@ -225,9 +238,16 @@
<string name="participant_max_count_exceeded">Щонайбільша кількість учасників перебільшена %s</string> <string name="participant_max_count_exceeded">Щонайбільша кількість учасників перебільшена %s</string>
<string name="unexpected_event">Несподівана подія %i для %s</string> <string name="unexpected_event">Несподівана подія %i для %s</string>
<string name="download_file">Стягнути</string> <string name="download_file">Стягнути</string>
<string name="toast_choose_chat_room_for_sharing">Оберіть бесіду або створіть нову</string>
<string name="trust_denied">У довірі було відмовлено. Зробіть виклик, аби почати процес автентифікації знову.</string>
<!--Status Bar--> <!--Status Bar-->
<string name="status_connected">З\'єднано</string>
<string name="status_not_connected">Не з\'єднано</string>
<string name="status_in_progress">Виконується з\'єднання</string>
<string name="status_error">З\'єднання не відбулося</string>
<string name="voicemail_unread">непрочитаних повідомлень</string> <string name="voicemail_unread">непрочитаних повідомлень</string>
<!--Side Menu--> <!--Side Menu-->
<string name="menu_logout">Вийти</string>
<string name="menu_assistant">Асистент</string> <string name="menu_assistant">Асистент</string>
<string name="menu_settings">Налаштування</string> <string name="menu_settings">Налаштування</string>
<string name="menu_recordings">Записи</string> <string name="menu_recordings">Записи</string>
@ -265,6 +285,7 @@
<string name="call_stats_decoder_name">Декодер</string> <string name="call_stats_decoder_name">Декодер</string>
<string name="call_stats_display_filter">Відображуваний фільтр:</string> <string name="call_stats_display_filter">Відображуваний фільтр:</string>
<string name="call">Виклик</string> <string name="call">Виклик</string>
<string name="call_log_delete_dialog">Ви справді волієте вилучити обрані журнали викликів?</string>
<!--Recordings--> <!--Recordings-->
<string name="no_recordings">Немає записів</string> <string name="no_recordings">Немає записів</string>
<string name="recordings_delete_dialog">Ви бажаєте вилучити обрані записи?</string> <string name="recordings_delete_dialog">Ви бажаєте вилучити обрані записи?</string>
@ -275,6 +296,8 @@
<string name="incall_notif_active">Встановлено авдіоз\'єднання</string> <string name="incall_notif_active">Встановлено авдіоз\'єднання</string>
<string name="incall_notif_paused">Виклик на павзі</string> <string name="incall_notif_paused">Виклик на павзі</string>
<string name="incall_notif_video">Встановлено відеоз\'єднання</string> <string name="incall_notif_video">Встановлено відеоз\'єднання</string>
<string name="incall_notif_incoming">Вхідний виклик</string>
<string name="incall_notif_outgoing">Вихідний виклик</string>
<string name="notification_started">почато</string> <string name="notification_started">почато</string>
<string name="unread_messages">%i непрочитаних повідомлень</string> <string name="unread_messages">%i непрочитаних повідомлень</string>
<string name="missed_calls_notif_title">Пропущений виклик</string> <string name="missed_calls_notif_title">Пропущений виклик</string>
@ -295,6 +318,7 @@
<string name="error_unauthorized">Не авторизований</string> <string name="error_unauthorized">Не авторизований</string>
<string name="error_io_error">Помилка мережі</string> <string name="error_io_error">Помилка мережі</string>
<string name="download_image_failed">Завантаження не вдалося. Перевірте мережеве з\'єднання або повторіть спробу пізніше.</string> <string name="download_image_failed">Завантаження не вдалося. Перевірте мережеве з\'єднання або повторіть спробу пізніше.</string>
<string name="remote_provisioning_failure">Не вдалося завантажити або застосувати профіль віддаленої конфігурації...</string>
<string name="remote_provisioning_again_title">Віддалене конфігурування</string> <string name="remote_provisioning_again_title">Віддалене конфігурування</string>
<string name="remote_provisioning_again_message">Ви бажаєте змінити URI конфігурування?</string> <string name="remote_provisioning_again_message">Ви бажаєте змінити URI конфігурування?</string>
<!--Account Settings--> <!--Account Settings-->
@ -361,6 +385,8 @@
<string name="failed">не вдалося</string> <string name="failed">не вдалося</string>
<string name="pref_adaptive_rate_control">Адаптивний контроль швидкости</string> <string name="pref_adaptive_rate_control">Адаптивний контроль швидкости</string>
<string name="pref_codec_bitrate_limit">Гранична межа кодеку</string> <string name="pref_codec_bitrate_limit">Гранична межа кодеку</string>
<string name="pref_mic_gain_db">Підсилення мікрофону (в дБ)</string>
<string name="pref_playback_gain_db">Підсилення відтворення (в дБ)</string>
<string name="pref_codecs">Кодеки</string> <string name="pref_codecs">Кодеки</string>
<!--Video settings--> <!--Video settings-->
<string name="pref_video_title">Відео</string> <string name="pref_video_title">Відео</string>
@ -387,6 +413,7 @@
<string name="pref_call_timeout_title">Час очікування виклику (у секундах)</string> <string name="pref_call_timeout_title">Час очікування виклику (у секундах)</string>
<string name="pref_voice_mail">URI голосової пошти</string> <string name="pref_voice_mail">URI голосової пошти</string>
<string name="pref_dialer_call">Використовувати Linphone у якости типового застосунку для дзвінків.</string> <string name="pref_dialer_call">Використовувати Linphone у якости типового застосунку для дзвінків.</string>
<string name="pref_accept_early_media">Приймати ранній потік</string>
<!--Chat settings--> <!--Chat settings-->
<string name="pref_chat_title">Чат</string> <string name="pref_chat_title">Чат</string>
<string name="pref_image_sharing_server_title">Сервер обміну</string> <string name="pref_image_sharing_server_title">Сервер обміну</string>
@ -424,15 +451,19 @@
<string name="pref_protected_settings_desc">Цей застосунок має бути увімкнений для отримання push-сповіщень</string> <string name="pref_protected_settings_desc">Цей застосунок має бути увімкнений для отримання push-сповіщень</string>
<!--Advanced settings--> <!--Advanced settings-->
<string name="pref_advanced_title">Додатково</string> <string name="pref_advanced_title">Додатково</string>
<string name="pref_dark_mode">Темний режим</string>
<string name="pref_debug_title">Зневадження</string> <string name="pref_debug_title">Зневадження</string>
<string name="pref_debug">Зневадження</string> <string name="pref_debug">Зневадження</string>
<string name="pref_java_debug">Використовувати Java-реєстратор</string> <string name="pref_java_debug">Використовувати Java-реєстратор</string>
<string name="pref_friendlist_subscribe">Підписка</string> <string name="pref_friendlist_subscribe">Підписка</string>
<string name="pref_background_mode">Тловий режим</string> <string name="pref_background_mode">Тловий режим</string>
<string name="pref_background_mode_desc">Показувати сповіщення, аби зберегти застосунок робочим</string>
<string name="pref_animation_enable_title">Увімкнути анімацію</string> <string name="pref_animation_enable_title">Увімкнути анімацію</string>
<string name="pref_service_notification">Увімкнути сервісне сповіщення</string> <string name="pref_service_notification">Увімкнути сервісне сповіщення</string>
<string name="pref_autostart">Запуск під час завантаження</string> <string name="pref_autostart">Запуск під час завантаження</string>
<string name="pref_incoming_call_timeout_title">Відхилення вхідного виклику (у секундах)</string> <string name="pref_incoming_call_timeout_title">Відхилення вхідного виклику (у секундах)</string>
<string name="pref_device_name">Ім\'я пристрою</string>
<string name="pref_display_name_subtitle">Зміни буде застосовано при наступному запуску</string>
<string name="pref_remote_provisioning_title">Віддалене конфігурування</string> <string name="pref_remote_provisioning_title">Віддалене конфігурування</string>
<string name="pref_android_app_settings_title">Параметри додатку в Android</string> <string name="pref_android_app_settings_title">Параметри додатку в Android</string>
<string name="pref_android_app_notif_settings_title">Параметри сповіщень в Android</string> <string name="pref_android_app_notif_settings_title">Параметри сповіщень в Android</string>
@ -452,6 +483,9 @@
<string name="device_power_saver_dialog_button_later">Пізніше</string> <string name="device_power_saver_dialog_button_later">Пізніше</string>
<!--Debug popup--> <!--Debug popup-->
<string name="debug_popup_title">Зневадження</string> <string name="debug_popup_title">Зневадження</string>
<string name="debug_popup_enable_logs">Увімкнути журнали</string>
<string name="debug_popup_disable_logs">Вимкнути журнали</string>
<string name="debug_popup_send_logs">Відправити журнали</string>
<!--Content description--> <!--Content description-->
<string name="content_description_back">Назад</string> <string name="content_description_back">Назад</string>
<string name="content_description_dialer">Номеронабирач</string> <string name="content_description_dialer">Номеронабирач</string>

View file

@ -250,6 +250,7 @@
<string name="unexpected_event">Unexpected event %i for %s</string> <string name="unexpected_event">Unexpected event %i for %s</string>
<string name="download_file">Download</string> <string name="download_file">Download</string>
<string name="toast_choose_chat_room_for_sharing">Select a conversation or create a new one</string> <string name="toast_choose_chat_room_for_sharing">Select a conversation or create a new one</string>
<string name="trust_denied">Trust has been denied. Make a call to start the authentication process again.</string>
<!-- Status Bar --> <!-- Status Bar -->
<string name="status_connected">Connected</string> <string name="status_connected">Connected</string>