Merge branch 'release/4.1'
This commit is contained in:
commit
3b66218d63
21 changed files with 313 additions and 117 deletions
|
@ -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.
|
||||||
|
|
|
@ -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()) {
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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),
|
||||||
|
|
|
@ -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)) {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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>
|
||||||
|
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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 d’authentification.</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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Reference in a new issue