Started migration of Android app to new JNI/Java wrapper

This commit is contained in:
Sylvain Berfini 2017-10-17 19:57:58 +02:00
parent 312821c6b4
commit 857c0ed130
58 changed files with 2007 additions and 2068 deletions

View file

@ -58,10 +58,7 @@ if (firebaseEnable()) {
//// Submodule Dir ///// //// Submodule Dir /////
def submoduleDir = ['submodules/mediastreamer2/java/src', def submoduleDir = ['submodules/mediastreamer2/java/src',
'submodules/linphone/java/j2se', 'liblinphone-sdk/android-arm64/share/linphonej/java/']
'submodules/linphone/java/common',
'submodules/linphone/java/impl',
'submodules/linphone/coreapi/help/examples/java']
//////////////////////// ////////////////////////
///// Exclude Files ///// ///// Exclude Files /////
@ -75,6 +72,7 @@ if (!firebaseEnable()) {
println '[Push Notification] Firebase enabled' println '[Push Notification] Firebase enabled'
} }
excludeFiles.add('**/mediastream/MediastreamerActivity.java') excludeFiles.add('**/mediastream/MediastreamerActivity.java')
excludeFiles.add('src/android/org/linphone/tutorials/*.java')
def excludePackage = [] def excludePackage = []

View file

@ -18,9 +18,9 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/ */
import org.linphone.core.LinphoneCore; import org.linphone.core.Core;
import org.linphone.core.LinphoneCore.LogCollectionUploadState; import org.linphone.core.Core.LogCollectionUploadState;
import org.linphone.core.LinphoneCoreListenerBase; import org.linphone.core.CoreListenerStub;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
import android.app.Fragment; import android.app.Fragment;
@ -44,7 +44,7 @@ public class AboutFragment extends Fragment implements OnClickListener {
View sendLogButton = null; View sendLogButton = null;
View resetLogButton = null; View resetLogButton = null;
ImageView cancel; ImageView cancel;
LinphoneCoreListenerBase mListener; CoreListenerStub mListener;
private ProgressDialog progress; private ProgressDialog progress;
private boolean uploadInProgress; private boolean uploadInProgress;
@ -72,19 +72,19 @@ public class AboutFragment extends Fragment implements OnClickListener {
resetLogButton.setOnClickListener(this); resetLogButton.setOnClickListener(this);
resetLogButton.setVisibility(LinphonePreferences.instance().isDebugEnabled() ? View.VISIBLE : View.GONE); resetLogButton.setVisibility(LinphonePreferences.instance().isDebugEnabled() ? View.VISIBLE : View.GONE);
mListener = new LinphoneCoreListenerBase() { mListener = new CoreListenerStub() {
@Override @Override
public void uploadProgressIndication(LinphoneCore lc, int offset, int total) { public void onLogCollectionUploadProgressIndication(Core lc, int offset, int total) {
} }
@Override @Override
public void uploadStateChanged(LinphoneCore lc, LogCollectionUploadState state, String info) { public void onLogCollectionUploadStateChanged(Core lc, LogCollectionUploadState state, String info) {
if (state == LogCollectionUploadState.LogCollectionUploadStateInProgress) { if (state == LogCollectionUploadState.InProgress) {
displayUploadLogsInProgress(); displayUploadLogsInProgress();
} else if (state == LogCollectionUploadState.LogCollectionUploadStateDelivered || state == LogCollectionUploadState.LogCollectionUploadStateNotDelivered) { } else if (state == LogCollectionUploadState.Delivered || state == LogCollectionUploadState.NotDelivered) {
uploadInProgress = false; uploadInProgress = false;
if (progress != null) progress.dismiss(); if (progress != null) progress.dismiss();
if (state == LogCollectionUploadState.LogCollectionUploadStateDelivered) { if (state == LogCollectionUploadState.Delivered) {
sendLogs(LinphoneService.instance().getApplicationContext(), info); sendLogs(LinphoneService.instance().getApplicationContext(), info);
} }
} }
@ -127,7 +127,7 @@ public class AboutFragment extends Fragment implements OnClickListener {
@Override @Override
public void onPause() { public void onPause() {
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) { if (lc != null) {
lc.removeListener(mListener); lc.removeListener(mListener);
} }
@ -137,7 +137,7 @@ public class AboutFragment extends Fragment implements OnClickListener {
@Override @Override
public void onResume() { public void onResume() {
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) { if (lc != null) {
lc.addListener(mListener); lc.addListener(mListener);
} }
@ -152,7 +152,7 @@ public class AboutFragment extends Fragment implements OnClickListener {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if (LinphoneActivity.isInstanciated()) { if (LinphoneActivity.isInstanciated()) {
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (v == sendLogButton) { if (v == sendLogButton) {
if (lc != null) { if (lc != null) {
lc.uploadLogCollection(); lc.uploadLogCollection();

View file

@ -23,11 +23,12 @@ import java.util.List;
import org.linphone.LinphonePreferences.AccountBuilder; import org.linphone.LinphonePreferences.AccountBuilder;
import org.linphone.assistant.AssistantActivity; import org.linphone.assistant.AssistantActivity;
import org.linphone.core.LinphoneAccountCreator; import org.linphone.core.AccountCreator;
import org.linphone.core.LinphoneCoreException; import org.linphone.core.AccountCreatorListener;
import org.linphone.core.LinphoneCoreFactory; import org.linphone.core.CoreException;
import org.linphone.core.LinphoneNatPolicy; import org.linphone.core.Factory;
import org.linphone.core.LinphoneProxyConfig; import org.linphone.core.NatPolicy;
import org.linphone.core.ProxyConfig;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
import org.linphone.ui.PreferencesListFragment; import org.linphone.ui.PreferencesListFragment;
@ -53,14 +54,14 @@ import android.view.WindowManager;
import android.widget.CheckBox; import android.widget.CheckBox;
import android.widget.EditText; import android.widget.EditText;
public class AccountPreferencesFragment extends PreferencesListFragment implements LinphoneAccountCreator.LinphoneAccountCreatorListener { public class AccountPreferencesFragment extends PreferencesListFragment implements AccountCreatorListener {
private int n; private int n;
private boolean isNewAccount=false; private boolean isNewAccount=false;
private LinphonePreferences mPrefs; private LinphonePreferences mPrefs;
private EditTextPreference mProxyPreference; private EditTextPreference mProxyPreference;
private ListPreference mTransportPreference; private ListPreference mTransportPreference;
private AccountBuilder builder; private AccountBuilder builder;
private LinphoneAccountCreator accountCreator; private AccountCreator accountCreator;
private ProgressDialog progress; private ProgressDialog progress;
public AccountPreferencesFragment() { public AccountPreferencesFragment() {
@ -104,7 +105,7 @@ public class AccountPreferencesFragment extends PreferencesListFragment implemen
@Override @Override
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {
if (isNewAccount) { if (isNewAccount) {
builder.setUserId(newValue.toString()); builder.setUserid(newValue.toString());
} else { } else {
mPrefs.setAccountUserId(n, newValue.toString()); mPrefs.setAccountUserId(n, newValue.toString());
} }
@ -154,7 +155,7 @@ public class AccountPreferencesFragment extends PreferencesListFragment implemen
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {
String value = newValue.toString(); String value = newValue.toString();
if (isNewAccount) { if (isNewAccount) {
builder.setProxy(newValue.toString()); builder.setServerAddr(newValue.toString());
preference.setSummary(newValue.toString()); preference.setSummary(newValue.toString());
} else { } else {
mPrefs.setAccountProxy(n, value); mPrefs.setAccountProxy(n, value);
@ -211,7 +212,7 @@ public class AccountPreferencesFragment extends PreferencesListFragment implemen
if (isNewAccount) { if (isNewAccount) {
builder.setAvpfEnabled(value); builder.setAvpfEnabled(value);
} else { } else {
mPrefs.enableAvpf(n, value); mPrefs.setAvpfMode(n, value);
} }
return true; return true;
} }
@ -229,7 +230,7 @@ public class AccountPreferencesFragment extends PreferencesListFragment implemen
if (isNewAccount) { if (isNewAccount) {
//TODO //TODO
} else { } else {
mPrefs.setAvpfRRInterval(n, value); mPrefs.setAvpfRrInterval(n, value);
} }
preference.setSummary(value); preference.setSummary(value);
return true; return true;
@ -320,11 +321,11 @@ public class AccountPreferencesFragment extends PreferencesListFragment implemen
private void initAccountPreferencesFields(PreferenceScreen parent) { private void initAccountPreferencesFields(PreferenceScreen parent) {
boolean isDefaultAccount = mPrefs.getDefaultAccountIndex() == n; boolean isDefaultAccount = mPrefs.getDefaultAccountIndex() == n;
LinphoneNatPolicy natPolicy = null; NatPolicy natPolicy = null;
if (LinphoneManager.getLcIfManagerNotDestroyedOrNull() != null && if (LinphoneManager.getLcIfManagerNotDestroyedOrNull() != null &&
LinphoneManager.getLc().getProxyConfigList() != null && LinphoneManager.getLc().getProxyConfigList() != null &&
LinphoneManager.getLc().getProxyConfigList().length > n) { LinphoneManager.getLc().getProxyConfigList().length > n) {
LinphoneProxyConfig proxy = LinphoneManager.getLc().getProxyConfigList()[n]; ProxyConfig proxy = LinphoneManager.getLc().getProxyConfigList()[n];
natPolicy = proxy.getNatPolicy(); natPolicy = proxy.getNatPolicy();
if (natPolicy == null) { if (natPolicy == null) {
natPolicy = LinphoneManager.getLc().createNatPolicy(); natPolicy = LinphoneManager.getLc().createNatPolicy();
@ -334,8 +335,7 @@ public class AccountPreferencesFragment extends PreferencesListFragment implemen
} }
} }
accountCreator = LinphoneCoreFactory.instance().createAccountCreator(LinphoneManager.getLc() accountCreator = LinphoneManager.getLc().createAccountCreator(LinphonePreferences.instance().getXmlrpcUrl());
, LinphonePreferences.instance().getXmlrpcUrl());
accountCreator.setListener(this); accountCreator.setListener(this);
PreferenceCategory account = (PreferenceCategory) getPreferenceScreen().findPreference(getString(R.string.pref_sipaccount_key)); PreferenceCategory account = (PreferenceCategory) getPreferenceScreen().findPreference(getString(R.string.pref_sipaccount_key));
@ -430,8 +430,8 @@ public class AccountPreferencesFragment extends PreferencesListFragment implemen
EditTextPreference avpfRRInterval = (EditTextPreference) advanced.getPreference(8); EditTextPreference avpfRRInterval = (EditTextPreference) advanced.getPreference(8);
avpfRRInterval.setOnPreferenceChangeListener(avpfRRIntervalChangedListener); avpfRRInterval.setOnPreferenceChangeListener(avpfRRIntervalChangedListener);
if (!isNewAccount){ if (!isNewAccount){
avpfRRInterval.setText(mPrefs.getAvpfRRInterval(n)); avpfRRInterval.setText(mPrefs.getAvpfRrInterval(n));
avpfRRInterval.setSummary(mPrefs.getAvpfRRInterval(n)); avpfRRInterval.setSummary(mPrefs.getAvpfRrInterval(n));
} }
CheckBoxPreference escape = (CheckBoxPreference) advanced.getPreference(9); CheckBoxPreference escape = (CheckBoxPreference) advanced.getPreference(9);
@ -483,17 +483,17 @@ public class AccountPreferencesFragment extends PreferencesListFragment implemen
dialog.dismiss(); dialog.dismiss();
} }
}); });
alert.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { /*alert.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
LinphoneAccountCreator.PasswordCheck status = accountCreator.setPassword(pass1.getText().toString()); AccountCreator.PasswordStatus status = accountCreator.setPassword(pass1.getText().toString());
if (status.equals(LinphoneAccountCreator.PasswordCheck.Ok)) { if (status.equals(AccountCreator.PasswordStatus.Ok)) {
if (pass1.getText().toString().compareTo(pass2.getText().toString()) == 0) { if (pass1.getText().toString().compareTo(pass2.getText().toString()) == 0) {
accountCreator.setUsername(mPrefs.getAccountUsername(n)); accountCreator.setUsername(mPrefs.getAccountUsername(n));
accountCreator.setHa1(mPrefs.getAccountHa1(n)); accountCreator.setHa1(mPrefs.getAccountHa1(n));
LinphoneAccountCreator.RequestStatus req_status = accountCreator.updatePassword(pass1.getText().toString()); AccountCreator.Status req_status = accountCreator.updatePassword(pass1.getText().toString());
if (!req_status.equals(LinphoneAccountCreator.RequestStatus.Ok)) { if (!req_status.equals(AccountCreator.Status.RequestOk)) {
LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForRequestStatus(req_status) LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForStatus(req_status)
, LinphoneActivity.instance()); , LinphoneActivity.instance());
} else { } else {
progress = ProgressDialog.show(LinphoneActivity.instance(), null, null); progress = ProgressDialog.show(LinphoneActivity.instance(), null, null);
@ -512,7 +512,7 @@ public class AccountPreferencesFragment extends PreferencesListFragment implemen
} }
LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForPasswordStatus(status), LinphoneActivity.instance()); LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForPasswordStatus(status), LinphoneActivity.instance());
} }
}); });*/ // TODO FIXME
alert.setView(layout); alert.setView(layout);
alert.show(); alert.show();
@ -587,7 +587,7 @@ public class AccountPreferencesFragment extends PreferencesListFragment implemen
if(isNewAccount){ if(isNewAccount){
builder.saveNewAccount(); builder.saveNewAccount();
} }
} catch (LinphoneCoreException e) { } catch (CoreException e) {
Log.e(e); Log.e(e);
} }
LinphoneActivity.instance().isNewProxyConfig(); LinphoneActivity.instance().isNewProxyConfig();
@ -597,58 +597,58 @@ public class AccountPreferencesFragment extends PreferencesListFragment implemen
} }
@Override @Override
public void onAccountCreatorIsAccountUsed(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onIsAccountExist(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorAccountCreated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onCreateAccount(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorAccountActivated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onActivateAccount(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorAccountLinkedWithPhoneNumber(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onLinkAccount(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorPhoneNumberLinkActivated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onActivateAlias(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorIsAccountActivated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onIsAccountActivated(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorPhoneAccountRecovered(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onRecoverAccount(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorIsAccountLinked(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onIsAccountLinked(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorIsPhoneNumberUsed(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onIsAliasUsed(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorPasswordUpdated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onUpdateAccount(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
if (progress != null) progress.dismiss(); if (progress != null) progress.dismiss();
if (status.equals(LinphoneAccountCreator.RequestStatus.Ok)) { if (status.equals(AccountCreator.Status.RequestOk)) {
mPrefs.setAccountPassword(n, accountCreator.getPassword()); mPrefs.setAccountPassword(n, accountCreator.getPassword());
PreferenceCategory account = (PreferenceCategory) getPreferenceScreen().findPreference(getString(R.string.pref_sipaccount_key)); PreferenceCategory account = (PreferenceCategory) getPreferenceScreen().findPreference(getString(R.string.pref_sipaccount_key));
((EditTextPreference) account.getPreference(2)).setText(mPrefs.getAccountPassword(n)); ((EditTextPreference) account.getPreference(2)).setText(mPrefs.getAccountPassword(n));
LinphoneUtils.displayErrorAlert(getString(R.string.pref_password_changed), LinphoneActivity.instance()); LinphoneUtils.displayErrorAlert(getString(R.string.pref_password_changed), LinphoneActivity.instance());
} else { } else {
LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForRequestStatus(status), LinphoneActivity.instance()); LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForStatus(status), LinphoneActivity.instance());
} }
} }
} }

View file

@ -19,8 +19,8 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/ */
import org.linphone.core.LinphoneCallParams; import org.linphone.core.CallParams;
import org.linphone.core.LinphoneCore; import org.linphone.core.Core;
public class BandwidthManager { public class BandwidthManager {
@ -47,15 +47,15 @@ public class BandwidthManager {
} }
public void updateWithProfileSettings(LinphoneCore lc, LinphoneCallParams callParams) { public void updateWithProfileSettings(Core lc, CallParams callParams) {
if (callParams != null) { // in call if (callParams != null) { // in call
// Update video parm if // Update video parm if
if (!isVideoPossible()) { // NO VIDEO if (!isVideoPossible()) { // NO VIDEO
callParams.setVideoEnabled(false); callParams.enableVideo(false);
callParams.setAudioBandwidth(40); callParams.setAudioBandwidthLimit(40);
} else { } else {
callParams.setVideoEnabled(true); callParams.enableVideo(true);
callParams.setAudioBandwidth(0); // disable limitation callParams.setAudioBandwidthLimit(0); // disable limitation
} }
} }
} }

View file

@ -19,8 +19,8 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/ */
import org.linphone.core.LinphoneCoreFactory; import org.linphone.core.Factory;
import org.linphone.core.LpConfig; import org.linphone.core.Config;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
@ -32,12 +32,10 @@ public class BootReceiver extends BroadcastReceiver {
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
if (intent.getAction().equalsIgnoreCase(Intent.ACTION_SHUTDOWN)) { if (intent.getAction().equalsIgnoreCase(Intent.ACTION_SHUTDOWN)) {
android.util.Log.d("LinphoneBootReceiver", "Device is shutting down, destroying LinphoneCore to unregister"); android.util.Log.d("LinphoneBootReceiver", "Device is shutting down, destroying Core to unregister");
LinphoneManager.destroy(); LinphoneManager.destroy();
} else { } else {
String path = context.getFilesDir().getAbsolutePath() + "/.linphonerc"; boolean autostart = LinphonePreferences.instance().isAutoStartEnabled();
LpConfig lpConfig = LinphoneCoreFactory.instance().createLpConfig(path);
boolean autostart = lpConfig.getBool("app", "auto_start", false);
android.util.Log.i("LinphoneBootReceiver", "Device is starting, auto_start is " + autostart); android.util.Log.i("LinphoneBootReceiver", "Device is starting, auto_start is " + autostart);
if (autostart) { if (autostart) {
Intent lLinphoneServiceIntent = new Intent(Intent.ACTION_MAIN); Intent lLinphoneServiceIntent = new Intent(Intent.ACTION_MAIN);

View file

@ -62,19 +62,20 @@ import android.widget.RelativeLayout;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import org.linphone.core.LinphoneAddress; import org.linphone.core.Address;
import org.linphone.core.LinphoneCall; import org.linphone.core.Call;
import org.linphone.core.LinphoneCall.State; import org.linphone.core.Call.State;
import org.linphone.core.LinphoneCallParams; import org.linphone.core.CallParams;
import org.linphone.core.LinphoneCallStats; import org.linphone.core.CallStats;
import org.linphone.core.LinphoneCallStats.LinphoneAddressFamily; import org.linphone.core.CallStats.AddressFamily;
import org.linphone.core.LinphoneChatMessage; import org.linphone.core.ChatMessage;
import org.linphone.core.LinphoneChatRoom; import org.linphone.core.ChatRoom;
import org.linphone.core.LinphoneCore; import org.linphone.core.Core;
import org.linphone.core.LinphoneCoreException; import org.linphone.core.CoreException;
import org.linphone.core.LinphoneCoreListenerBase; import org.linphone.core.CoreListenerStub;
import org.linphone.core.LinphonePlayer; import org.linphone.core.Player;
import org.linphone.core.PayloadType; import org.linphone.core.PayloadType;
import org.linphone.core.StreamType;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
import org.linphone.mediastream.video.capture.hwconf.AndroidCameraConfiguration; import org.linphone.mediastream.video.capture.hwconf.AndroidCameraConfiguration;
import org.linphone.ui.Numpad; import org.linphone.ui.Numpad;
@ -120,7 +121,7 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
private LayoutInflater inflater; private LayoutInflater inflater;
private ViewGroup container; private ViewGroup container;
private boolean isConferenceRunning = false; private boolean isConferenceRunning = false;
private LinphoneCoreListenerBase mListener; private CoreListenerStub mListener;
private DrawerLayout sideMenu; private DrawerLayout sideMenu;
private Handler mHandler = new Handler(); private Handler mHandler = new Handler();
@ -156,14 +157,14 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
mEncoderTexts = new HashMap<String, String>(); mEncoderTexts = new HashMap<String, String>();
mDecoderTexts = new HashMap<String, String>(); mDecoderTexts = new HashMap<String, String>();
mListener = new LinphoneCoreListenerBase() { mListener = new CoreListenerStub() {
@Override @Override
public void messageReceived(LinphoneCore lc, LinphoneChatRoom cr, LinphoneChatMessage message) { public void onMessageReceived(Core lc, ChatRoom cr, ChatMessage message) {
displayMissedChats(); displayMissedChats();
} }
@Override @Override
public void callState(LinphoneCore lc, final LinphoneCall call, LinphoneCall.State state, String message) { public void onCallStateChanged(Core lc, final Call call, Call.State state, String message) {
if (LinphoneManager.getLc().getCallsNb() == 0) { if (LinphoneManager.getLc().getCallsNb() == 0) {
if (status != null) { if (status != null) {
LinphoneService.instance().removeSasNotification(); LinphoneService.instance().removeSasNotification();
@ -186,7 +187,7 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
} else if (state == State.Resuming) { } else if (state == State.Resuming) {
if(LinphonePreferences.instance().isVideoEnabled()){ if(LinphonePreferences.instance().isVideoEnabled()){
status.refreshStatusItems(call, isVideoEnabled(call)); status.refreshStatusItems(call, isVideoEnabled(call));
if(call.getCurrentParams().getVideoEnabled()){ if(call.getCurrentParams().videoEnabled()){
showVideoView(); showVideoView();
} }
} }
@ -201,21 +202,21 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
videoProgress.setVisibility(View.GONE); videoProgress.setVisibility(View.GONE);
status.refreshStatusItems(call, isVideoEnabled(call)); status.refreshStatusItems(call, isVideoEnabled(call));
} }
} else if (state == State.CallUpdatedByRemote) { } else if (state == State.UpdatedByRemote) {
// If the correspondent proposes video 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);
} }
boolean remoteVideo = call.getRemoteParams().getVideoEnabled(); boolean remoteVideo = call.getRemoteParams().videoEnabled();
boolean localVideo = call.getCurrentParams().getVideoEnabled(); boolean localVideo = call.getCurrentParams().videoEnabled();
boolean autoAcceptCameraPolicy = LinphonePreferences.instance().shouldAutomaticallyAcceptVideoRequests(); boolean autoAcceptCameraPolicy = LinphonePreferences.instance().shouldAutomaticallyAcceptVideoRequests();
if (remoteVideo && !localVideo && !autoAcceptCameraPolicy && !LinphoneManager.getLc().isInConference()) { if (remoteVideo && !localVideo && !autoAcceptCameraPolicy && !(LinphoneManager.getLc().getConference() != null)) {
showAcceptCallUpdateDialog(); showAcceptCallUpdateDialog();
createTimerForDialog(SECONDS_BEFORE_DENYING_CALL_UPDATE); createTimerForDialog(SECONDS_BEFORE_DENYING_CALL_UPDATE);
} }
// else if (remoteVideo && !LinphoneManager.getLc().isInConference() && autoAcceptCameraPolicy) { // else if (remoteVideo && !LinphoneManager.getLc().(getConference() != null) && autoAcceptCameraPolicy) {
// mHandler.post(new Runnable() { // mHandler.post(new Runnable() {
// @Override // @Override
// public void run() { // public void run() {
@ -230,12 +231,12 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
} }
@Override @Override
public void callEncryptionChanged(LinphoneCore lc, final LinphoneCall call, boolean encrypted, String authenticationToken) { public void onCallEncryptionChanged(Core lc, final Call call, boolean encrypted, String authenticationToken) {
if (status != null) { if (status != null) {
if(call.getCurrentParams().getMediaEncryption().equals(LinphoneCore.MediaEncryption.ZRTP) && !call.isAuthenticationTokenVerified()){ if(call.getCurrentParams().getMediaEncryption().equals(Core.MediaEncryption.ZRTP) && !call.getAuthenticationTokenVerified()){
status.showZRTPDialog(call); status.showZRTPDialog(call);
} }
status.refreshStatusItems(call, call.getCurrentParams().getVideoEnabled()); status.refreshStatusItems(call, call.getCurrentParams().videoEnabled());
} }
} }
@ -245,7 +246,7 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
initUI(); initUI();
if (LinphoneManager.getLc().getCallsNb() > 0) { if (LinphoneManager.getLc().getCallsNb() > 0) {
LinphoneCall call = LinphoneManager.getLc().getCalls()[0]; Call call = LinphoneManager.getLc().getCalls()[0];
if (LinphoneUtils.isCallEstablished(call)) { if (LinphoneUtils.isCallEstablished(call)) {
enableAndRefreshInCallActions(); enableAndRefreshInCallActions();
@ -267,8 +268,8 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
refreshInCallActions(); refreshInCallActions();
return; return;
} else { } else {
isSpeakerEnabled = LinphoneManager.getLc().isSpeakerEnabled(); isSpeakerEnabled = LinphoneManager.getInstance().isSpeakerEnabled();
isMicMuted = LinphoneManager.getLc().isMicMuted(); isMicMuted = !LinphoneManager.getLc().micEnabled();
} }
Fragment callFragment; Fragment callFragment;
@ -307,17 +308,17 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
}.start(); }.start();
} }
private boolean isVideoEnabled(LinphoneCall call) { private boolean isVideoEnabled(Call call) {
if(call != null){ if(call != null){
return call.getCurrentParams().getVideoEnabled(); return call.getCurrentParams().videoEnabled();
} }
return false; return false;
} }
@Override @Override
protected void onSaveInstanceState(Bundle outState) { protected void onSaveInstanceState(Bundle outState) {
outState.putBoolean("Speaker", LinphoneManager.getLc().isSpeakerEnabled()); outState.putBoolean("Speaker", LinphoneManager.getInstance().isSpeakerEnabled());
outState.putBoolean("Mic", LinphoneManager.getLc().isMicMuted()); outState.putBoolean("Mic", !LinphoneManager.getLc().micEnabled());
outState.putBoolean("VideoCallPaused", isVideoCallPaused); outState.putBoolean("VideoCallPaused", isVideoCallPaused);
outState.putBoolean("AskingVideo", isVideoAsk); outState.putBoolean("AskingVideo", isVideoAsk);
outState.putLong("TimeRemind", TimeRemind); outState.putLong("TimeRemind", TimeRemind);
@ -573,8 +574,8 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
private void enableAndRefreshInCallActions() { private void enableAndRefreshInCallActions() {
int confsize = 0; int confsize = 0;
if(LinphoneManager.getLc().isInConference()) { if( LinphoneManager.getLc().getConference() != null) {
confsize = LinphoneManager.getLc().getConferenceSize() - (LinphoneManager.getLc().isInConference() ? 1 : 0); confsize = LinphoneManager.getLc().getConferenceSize() - (LinphoneManager.getLc().getConference() != null ? 1 : 0);
} }
//Enabled transfer button //Enabled transfer button
@ -706,7 +707,7 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
} }
else if (id == R.id.call_pause) { else if (id == R.id.call_pause) {
LinphoneCall call = (LinphoneCall) v.getTag(); Call call = (Call) v.getTag();
pauseOrResumeCall(call); pauseOrResumeCall(call);
} }
else if (id == R.id.conference_pause) { else if (id == R.id.conference_pause) {
@ -749,18 +750,18 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
} }
private void disableVideo(final boolean videoDisabled) { private void disableVideo(final boolean videoDisabled) {
final LinphoneCall call = LinphoneManager.getLc().getCurrentCall(); final Call call = LinphoneManager.getLc().getCurrentCall();
if (call == null) { if (call == null) {
return; return;
} }
if (videoDisabled) { if (videoDisabled) {
LinphoneCallParams params = LinphoneManager.getLc().createCallParams(call); CallParams params = LinphoneManager.getLc().createCallParams(call);
params.setVideoEnabled(false); params.enableVideo(false);
LinphoneManager.getLc().updateCall(call, params); LinphoneManager.getLc().updateCall(call, params);
} else { } else {
videoProgress.setVisibility(View.VISIBLE); videoProgress.setVisibility(View.VISIBLE);
if (call.getRemoteParams() != null && !call.getRemoteParams().isLowBandwidthEnabled()) { if (call.getRemoteParams() != null && !call.getRemoteParams().lowBandwidthEnabled()) {
LinphoneManager.getInstance().addVideo(); LinphoneManager.getInstance().addVideo();
} else { } else {
displayCustomToast(getString(R.string.error_low_bandwidth), Toast.LENGTH_LONG); displayCustomToast(getString(R.string.error_low_bandwidth), Toast.LENGTH_LONG);
@ -783,18 +784,18 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
} }
private void switchVideo(final boolean displayVideo) { private void switchVideo(final boolean displayVideo) {
final LinphoneCall call = LinphoneManager.getLc().getCurrentCall(); final Call call = LinphoneManager.getLc().getCurrentCall();
if (call == null) { if (call == null) {
return; return;
} }
//Check if the call is not terminated //Check if the call is not terminated
if(call.getState() == State.CallEnd || call.getState() == State.CallReleased) return; if(call.getState() == State.End || call.getState() == State.Released) return;
if (!displayVideo) { if (!displayVideo) {
showAudioView(); showAudioView();
} else { } else {
if (!call.getRemoteParams().isLowBandwidthEnabled()) { if (!call.getRemoteParams().lowBandwidthEnabled()) {
LinphoneManager.getInstance().addVideo(); LinphoneManager.getInstance().addVideo();
if (videoCallFragment == null || !videoCallFragment.isVisible()) if (videoCallFragment == null || !videoCallFragment.isVisible())
showVideoView(); showVideoView();
@ -879,9 +880,9 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
} }
private void toggleMicro() { private void toggleMicro() {
LinphoneCore lc = LinphoneManager.getLc(); Core lc = LinphoneManager.getLc();
isMicMuted = !isMicMuted; isMicMuted = !isMicMuted;
lc.muteMic(isMicMuted); lc.enableMic(!isMicMuted);
if (isMicMuted) { if (isMicMuted) {
micro.setImageResource(R.drawable.micro_selected); micro.setImageResource(R.drawable.micro_selected);
} else { } else {
@ -897,7 +898,7 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
if (isSpeakerEnabled) { if (isSpeakerEnabled) {
LinphoneManager.getInstance().routeAudioToSpeaker(); LinphoneManager.getInstance().routeAudioToSpeaker();
speaker.setImageResource(R.drawable.speaker_selected); speaker.setImageResource(R.drawable.speaker_selected);
LinphoneManager.getLc().enableSpeaker(isSpeakerEnabled); LinphoneManager.getInstance().enableSpeaker(isSpeakerEnabled);
} else { } else {
Log.d("Toggle speaker off, routing back to earpiece"); Log.d("Toggle speaker off, routing back to earpiece");
LinphoneManager.getInstance().routeAudioToReceiver(); LinphoneManager.getInstance().routeAudioToReceiver();
@ -905,8 +906,8 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
} }
} }
public void pauseOrResumeCall(LinphoneCall call) { public void pauseOrResumeCall(Call call) {
LinphoneCore lc = LinphoneManager.getLc(); Core lc = LinphoneManager.getLc();
if (call != null && LinphoneManager.getLc().getCurrentCall() == call) { if (call != null && LinphoneManager.getLc().getCurrentCall() == call) {
lc.pauseCall(call); lc.pauseCall(call);
if (isVideoEnabled(LinphoneManager.getLc().getCurrentCall())) { if (isVideoEnabled(LinphoneManager.getLc().getCurrentCall())) {
@ -925,12 +926,12 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
} }
private void hangUp() { private void hangUp() {
LinphoneCore lc = LinphoneManager.getLc(); Core lc = LinphoneManager.getLc();
LinphoneCall currentCall = lc.getCurrentCall(); Call currentCall = lc.getCurrentCall();
if (currentCall != null) { if (currentCall != null) {
lc.terminateCall(currentCall); lc.terminateCall(currentCall);
} else if (lc.isInConference()) { } else if (lc.getConference() != null) {
lc.terminateConference(); lc.terminateConference();
} else { } else {
lc.terminateAllCalls(); lc.terminateAllCalls();
@ -1076,22 +1077,19 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
timer.cancel(); timer.cancel();
} }
LinphoneCall call = LinphoneManager.getLc().getCurrentCall(); Call call = LinphoneManager.getLc().getCurrentCall();
if (call == null) { if (call == null) {
return; return;
} }
LinphoneCallParams params = LinphoneManager.getLc().createCallParams(call); CallParams params = LinphoneManager.getLc().createCallParams(call);
if (accept) { if (accept) {
params.setVideoEnabled(true); params.enableVideo(true);
LinphoneManager.getLc().enableVideo(true, true); LinphoneManager.getLc().enableVideoCapture(true);
LinphoneManager.getLc().enableVideoDisplay(true);
} }
try { LinphoneManager.getLc().acceptCallUpdate(call, params);
LinphoneManager.getLc().acceptCallUpdate(call, params);
} catch (LinphoneCoreException e) {
Log.e(e);
}
} }
public void startIncomingCallActivity() { public void startIncomingCallActivity() {
@ -1176,11 +1174,11 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
instance = this; instance = this;
super.onResume(); super.onResume();
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) { if (lc != null) {
lc.addListener(mListener); lc.addListener(mListener);
} }
isSpeakerEnabled = LinphoneManager.getLc().isSpeakerEnabled(); isSpeakerEnabled = LinphoneManager.getInstance().isSpeakerEnabled();
refreshIncallUi(); refreshIncallUi();
handleViewIntent(); handleViewIntent();
@ -1200,32 +1198,32 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
private void handleViewIntent() { private void handleViewIntent() {
Intent intent = getIntent(); Intent intent = getIntent();
if(intent != null && intent.getAction() == "android.intent.action.VIEW") { if(intent != null && intent.getAction() == "android.intent.action.VIEW") {
LinphoneCall call = LinphoneManager.getLc().getCurrentCall(); Call call = LinphoneManager.getLc().getCurrentCall();
if(call != null && isVideoEnabled(call)) { if(call != null && isVideoEnabled(call)) {
LinphonePlayer player = call.getPlayer(); Player player = call.getPlayer();
String path = intent.getData().getPath(); String path = intent.getData().getPath();
Log.i("Openning " + path); Log.i("Openning " + path);
int openRes = player.open(path); /*int openRes = */player.open(path);
if(openRes == -1) { /*if(openRes == -1) {
String message = "Could not open " + path; String message = "Could not open " + path;
Log.e(message); Log.e(message);
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show(); Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
return; return;
} }*/
Log.i("Start playing"); Log.i("Start playing");
if(player.start() == -1) { /*if(*/player.start()/* == -1) {*/;
player.close(); /*player.close();
String message = "Could not start playing " + path; String message = "Could not start playing " + path;
Log.e(message); Log.e(message);
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show(); Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
} }*/
} }
} }
} }
@Override @Override
protected void onPause() { protected void onPause() {
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) { if (lc != null) {
lc.removeListener(mListener); lc.removeListener(mListener);
} }
@ -1300,14 +1298,14 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
//CALL INFORMATION //CALL INFORMATION
private void displayCurrentCall(LinphoneCall call){ private void displayCurrentCall(Call call){
LinphoneAddress lAddress = call.getRemoteAddress(); Address lAddress = call.getRemoteAddress();
TextView contactName = (TextView) findViewById(R.id.current_contact_name); TextView contactName = (TextView) findViewById(R.id.current_contact_name);
setContactInformation(contactName, contactPicture, lAddress); setContactInformation(contactName, contactPicture, lAddress);
registerCallDurationTimer(null, call); registerCallDurationTimer(null, call);
} }
private void displayPausedCalls(Resources resources, final LinphoneCall call, int index) { private void displayPausedCalls(Resources resources, final Call call, int index) {
// Control Row // Control Row
LinearLayout callView; LinearLayout callView;
@ -1327,7 +1325,7 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
TextView contactName = (TextView) callView.findViewById(R.id.contact_name); TextView contactName = (TextView) callView.findViewById(R.id.contact_name);
ImageView contactImage = (ImageView) callView.findViewById(R.id.contact_picture); ImageView contactImage = (ImageView) callView.findViewById(R.id.contact_picture);
LinphoneAddress lAddress = call.getRemoteAddress(); Address lAddress = call.getRemoteAddress();
setContactInformation(contactName, contactImage, lAddress); setContactInformation(contactName, contactImage, lAddress);
displayCallStatusIconAndReturnCallPaused(callView, call); displayCallStatusIconAndReturnCallPaused(callView, call);
registerCallDurationTimer(callView, call); registerCallDurationTimer(callView, call);
@ -1335,7 +1333,7 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
callsList.addView(callView); callsList.addView(callView);
} }
private void setContactInformation(TextView contactName, ImageView contactPicture, LinphoneAddress lAddress) { private void setContactInformation(TextView contactName, ImageView contactPicture, Address lAddress) {
LinphoneContact lContact = ContactsManager.getInstance().findContactFromAddress(lAddress); LinphoneContact lContact = ContactsManager.getInstance().findContactFromAddress(lAddress);
if (lContact == null) { if (lContact == null) {
contactName.setText(LinphoneUtils.getAddressDisplayName(lAddress)); contactName.setText(LinphoneUtils.getAddressDisplayName(lAddress));
@ -1346,28 +1344,28 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
} }
} }
private boolean displayCallStatusIconAndReturnCallPaused(LinearLayout callView, LinphoneCall call) { private boolean displayCallStatusIconAndReturnCallPaused(LinearLayout callView, Call call) {
boolean isCallPaused, isInConference; boolean isCallPaused, isInConference;
ImageView callState = (ImageView) callView.findViewById(R.id.call_pause); ImageView onCallStateChanged = (ImageView) callView.findViewById(R.id.call_pause);
callState.setTag(call); onCallStateChanged.setTag(call);
callState.setOnClickListener(this); onCallStateChanged.setOnClickListener(this);
if (call.getState() == State.Paused || call.getState() == State.PausedByRemote || call.getState() == State.Pausing) { if (call.getState() == State.Paused || call.getState() == State.PausedByRemote || call.getState() == State.Pausing) {
callState.setImageResource(R.drawable.pause); onCallStateChanged.setImageResource(R.drawable.pause);
isCallPaused = true; isCallPaused = true;
isInConference = false; isInConference = false;
} else if (call.getState() == State.OutgoingInit || call.getState() == State.OutgoingProgress || call.getState() == State.OutgoingRinging) { } else if (call.getState() == State.OutgoingInit || call.getState() == State.OutgoingProgress || call.getState() == State.OutgoingRinging) {
isCallPaused = false; isCallPaused = false;
isInConference = false; isInConference = false;
} else { } else {
isInConference = isConferenceRunning && call.isInConference(); isInConference = isConferenceRunning && call.getConference() != null;
isCallPaused = false; isCallPaused = false;
} }
return isCallPaused || isInConference; return isCallPaused || isInConference;
} }
private void registerCallDurationTimer(View v, LinphoneCall call) { private void registerCallDurationTimer(View v, Call call) {
int callDuration = call.getDuration(); int callDuration = call.getDuration();
if (callDuration == 0 && call.getState() != State.StreamsRunning) { if (callDuration == 0 && call.getState() != State.StreamsRunning) {
return; return;
@ -1389,8 +1387,8 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
} }
public void refreshCallList(Resources resources) { public void refreshCallList(Resources resources) {
isConferenceRunning = LinphoneManager.getLc().isInConference(); isConferenceRunning = LinphoneManager.getLc().getConference() != null;
List<LinphoneCall> pausedCalls = LinphoneUtils.getCallsInState(LinphoneManager.getLc(), Arrays.asList(State.PausedByRemote)); List<Call> pausedCalls = LinphoneUtils.getCallsInState(LinphoneManager.getLc(), Arrays.asList(State.PausedByRemote));
//MultiCalls //MultiCalls
if(LinphoneManager.getLc().getCallsNb() > 1){ if(LinphoneManager.getLc().getCallsNb() > 1){
@ -1430,12 +1428,12 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
} }
boolean isConfPaused = false; boolean isConfPaused = false;
for (LinphoneCall call : LinphoneManager.getLc().getCalls()) { for (Call call : LinphoneManager.getLc().getCalls()) {
if (call.isInConference() && !isConferenceRunning) { if (call.getConference() != null && !isConferenceRunning) {
isConfPaused = true; isConfPaused = true;
index++; index++;
} else { } else {
if (call != LinphoneManager.getLc().getCurrentCall() && !call.isInConference()) { if (call != LinphoneManager.getLc().getCurrentCall() && !(call.getConference() != null)) {
displayPausedCalls(resources, call, index); displayPausedCalls(resources, call, index);
index++; index++;
} else { } else {
@ -1463,10 +1461,10 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
} }
//Conference //Conference
private void exitConference(final LinphoneCall call){ private void exitConference(final Call call){
LinphoneCore lc = LinphoneManager.getLc(); Core lc = LinphoneManager.getLc();
if (call.isInConference()) { if (call.getConference() != null) {
lc.removeFromConference(call); lc.removeFromConference(call);
if (lc.getConferenceSize() <= 1) { if (lc.getConferenceSize() <= 1) {
lc.leaveConference(); lc.leaveConference();
@ -1480,10 +1478,10 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
} }
public void pauseOrResumeConference() { public void pauseOrResumeConference() {
LinphoneCore lc = LinphoneManager.getLc(); Core lc = LinphoneManager.getLc();
conferenceStatus = (ImageView) findViewById(R.id.conference_pause); conferenceStatus = (ImageView) findViewById(R.id.conference_pause);
if(conferenceStatus != null) { if(conferenceStatus != null) {
if (lc.isInConference()) { if (lc.getConference() != null) {
conferenceStatus.setImageResource(R.drawable.pause_big_over_selected); conferenceStatus.setImageResource(R.drawable.pause_big_over_selected);
lc.leaveConference(); lc.leaveConference();
} else { } else {
@ -1494,14 +1492,14 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
refreshCallList(getResources()); refreshCallList(getResources());
} }
private void displayConferenceParticipant(int index, final LinphoneCall call){ private void displayConferenceParticipant(int index, final Call call){
LinearLayout confView = (LinearLayout) inflater.inflate(R.layout.conf_call_control_row, container, false); LinearLayout confView = (LinearLayout) inflater.inflate(R.layout.conf_call_control_row, container, false);
conferenceList.setId(index + 1); conferenceList.setId(index + 1);
TextView contact = (TextView) confView.findViewById(R.id.contactNameOrNumber); TextView contact = (TextView) confView.findViewById(R.id.contactNameOrNumber);
LinphoneContact lContact = ContactsManager.getInstance().findContactFromAddress(call.getRemoteAddress()); LinphoneContact lContact = ContactsManager.getInstance().findContactFromAddress(call.getRemoteAddress());
if (lContact == null) { if (lContact == null) {
contact.setText(call.getRemoteAddress().getUserName()); contact.setText(call.getRemoteAddress().getUsername());
} else { } else {
contact.setText(lContact.getFullName()); contact.setText(lContact.getFullName());
} }
@ -1540,8 +1538,8 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
//Conference participant //Conference participant
int index = 1; int index = 1;
for (LinphoneCall call : LinphoneManager.getLc().getCalls()) { for (Call call : LinphoneManager.getLc().getCalls()) {
if (call.isInConference()) { if (call.getConference() != null) {
displayConferenceParticipant(index, call); displayConferenceParticipant(index, call);
index++; index++;
} }
@ -1554,8 +1552,8 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
private void displayMissedChats() { private void displayMissedChats() {
int count = 0; int count = 0;
LinphoneChatRoom[] chats = LinphoneManager.getLc().getChatRooms(); ChatRoom[] chats = LinphoneManager.getLc().getChatRooms();
for (LinphoneChatRoom chatroom : chats) { for (ChatRoom chatroom : chats) {
count += chatroom.getUnreadMessagesCount(); count += chatroom.getUnreadMessagesCount();
} }
@ -1576,7 +1574,7 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
private String getEncoderText(String mime){ private String getEncoderText(String mime){
String ret = mEncoderTexts.get(mime); String ret = mEncoderTexts.get(mime);
if (ret == null){ if (ret == null){
org.linphone.mediastream.Factory msfactory = LinphoneManager.getLc().getMSFactory(); org.linphone.mediastream.Factory msfactory = LinphoneManager.getLc().getMediastreamerFactory();
ret = msfactory.getEncoderText(mime); ret = msfactory.getEncoderText(mime);
mEncoderTexts.put(mime, ret); mEncoderTexts.put(mime, ret);
} }
@ -1585,14 +1583,14 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
private String getDecoderText(String mime){ private String getDecoderText(String mime){
String ret = mDecoderTexts.get(mime); String ret = mDecoderTexts.get(mime);
if (ret == null){ if (ret == null){
org.linphone.mediastream.Factory msfactory = LinphoneManager.getLc().getMSFactory(); org.linphone.mediastream.Factory msfactory = LinphoneManager.getLc().getMediastreamerFactory();
ret = msfactory.getDecoderText(mime); ret = msfactory.getDecoderText(mime);
mDecoderTexts.put(mime, ret); mDecoderTexts.put(mime, ret);
} }
return ret; return ret;
} }
private void displayMediaStats(LinphoneCallParams params, LinphoneCallStats stats private void displayMediaStats(CallParams params, CallStats stats
, PayloadType media , View layout, TextView title, TextView codec, TextView dl , PayloadType media , View layout, TextView title, TextView codec, TextView dl
, TextView ul, TextView edl, TextView ice, TextView ip, TextView senderLossRate , TextView ul, TextView edl, TextView ice, TextView ip, TextView senderLossRate
, TextView receiverLossRate, TextView enc, TextView dec, TextView videoResolutionSent , TextView receiverLossRate, TextView enc, TextView dec, TextView videoResolutionSent
@ -1604,9 +1602,9 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
layout.setVisibility(View.VISIBLE); layout.setVisibility(View.VISIBLE);
title.setVisibility(TextView.VISIBLE); title.setVisibility(TextView.VISIBLE);
if (media != null) { if (media != null) {
mime = media.getMime(); mime = media.getMimeType();
formatText(codec, getString(R.string.call_stats_codec), formatText(codec, getString(R.string.call_stats_codec),
mime + " / " + (media.getRate() / 1000) + "kHz"); mime + " / " + (media.getClockRate() / 1000) + "kHz");
} }
if (mime != null ){ if (mime != null ){
formatText(enc, getString(R.string.call_stats_encoder_name), getEncoderText(mime)); formatText(enc, getString(R.string.call_stats_encoder_name), getEncoderText(mime));
@ -1623,8 +1621,8 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
formatText(ice, getString(R.string.call_stats_ice), formatText(ice, getString(R.string.call_stats_ice),
stats.getIceState().toString()); stats.getIceState().toString());
formatText(ip, getString(R.string.call_stats_ip), formatText(ip, getString(R.string.call_stats_ip),
(stats.getIpFamilyOfRemote() == LinphoneAddressFamily.INET_6.getInt()) ? (stats.getIpFamilyOfRemote() == AddressFamily.Inet6) ?
"IpV6" : (stats.getIpFamilyOfRemote() == LinphoneAddressFamily.INET.getInt()) ? "IpV6" : (stats.getIpFamilyOfRemote() == AddressFamily.Inet) ?
"IpV4" : "Unknown"); "IpV4" : "Unknown");
formatText(senderLossRate, getString(R.string.call_stats_sender_loss_rate), formatText(senderLossRate, getString(R.string.call_stats_sender_loss_rate),
new DecimalFormat("##.##").format(stats.getSenderLossRate()) + "%"); new DecimalFormat("##.##").format(stats.getSenderLossRate()) + "%");
@ -1633,10 +1631,10 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
if (isVideo) { if (isVideo) {
formatText(videoResolutionSent, formatText(videoResolutionSent,
getString(R.string.call_stats_video_resolution_sent), getString(R.string.call_stats_video_resolution_sent),
"\u2191 " + params.getSentVideoSize().toDisplayableString()); "\u2191 " + params.getSentVideoDefinition().getName());
formatText(videoResolutionReceived, formatText(videoResolutionReceived,
getString(R.string.call_stats_video_resolution_received), getString(R.string.call_stats_video_resolution_received),
"\u2193 " + params.getReceivedVideoSize().toDisplayableString()); "\u2193 " + params.getReceivedVideoDefinition().getName());
formatText(videoFpsSent, formatText(videoFpsSent,
getString(R.string.call_stats_video_fps_sent), getString(R.string.call_stats_video_fps_sent),
"\u2191 " + params.getSentFramerate()); "\u2191 " + params.getSentFramerate());
@ -1645,7 +1643,7 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
"\u2193 " + params.getReceivedFramerate()); "\u2193 " + params.getReceivedFramerate());
} else { } else {
formatText(jitterBuffer, getString(R.string.call_stats_jitter_buffer), formatText(jitterBuffer, getString(R.string.call_stats_jitter_buffer),
new DecimalFormat("##.##").format(stats.getJitterBufferSize()) + " ms"); new DecimalFormat("##.##").format(stats.getJitterBufferSizeMs()) + " ms");
} }
} else { } else {
layout.setVisibility(View.GONE); layout.setVisibility(View.GONE);
@ -1653,7 +1651,7 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
} }
} }
public void initCallStatsRefresher(final LinphoneCall call, final View view) { public void initCallStatsRefresher(final Call call, final View view) {
if (mTimer != null && mTask != null) { if (mTimer != null && mTask != null) {
return; return;
} }
@ -1712,16 +1710,16 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
if (LinphoneManager.getLcIfManagerNotDestroyedOrNull() == null) return; if (LinphoneManager.getLcIfManagerNotDestroyedOrNull() == null) return;
synchronized(LinphoneManager.getLc()) { synchronized(LinphoneManager.getLc()) {
if (LinphoneActivity.isInstanciated()) { if (LinphoneActivity.isInstanciated()) {
LinphoneCallParams params = call.getCurrentParams(); CallParams params = call.getCurrentParams();
if (params != null) { if (params != null) {
LinphoneCallStats audioStats = call.getAudioStats(); CallStats audioStats = call.getStats(StreamType.Audio);
LinphoneCallStats videoStats = null; CallStats videoStats = null;
if (params.getVideoEnabled()) if (params.videoEnabled())
videoStats = call.getVideoStats(); videoStats = call.getStats(StreamType.Video);
PayloadType payloadAudio = params.getUsedAudioCodec(); PayloadType payloadAudio = params.getUsedAudioPayloadType();
PayloadType payloadVideo = params.getUsedVideoCodec(); PayloadType payloadVideo = params.getUsedVideoPayloadType();
displayMediaStats(params, audioStats, payloadAudio, audioLayout displayMediaStats(params, audioStats, payloadAudio, audioLayout
, titleAudio, codecAudio, dlAudio, ulAudio, null, iceAudio , titleAudio, codecAudio, dlAudio, ulAudio, null, iceAudio

View file

@ -33,12 +33,12 @@ import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import org.linphone.core.LinphoneAddress; import org.linphone.core.Address;
import org.linphone.core.LinphoneCall; import org.linphone.core.Call;
import org.linphone.core.LinphoneCall.State; import org.linphone.core.Call.State;
import org.linphone.core.LinphoneCallParams; import org.linphone.core.CallParams;
import org.linphone.core.LinphoneCore; import org.linphone.core.Core;
import org.linphone.core.LinphoneCoreListenerBase; import org.linphone.core.CoreListenerStub;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
import org.linphone.ui.LinphoneSliders.LinphoneSliderTriggered; import org.linphone.ui.LinphoneSliders.LinphoneSliderTriggered;
@ -50,8 +50,8 @@ public class CallIncomingActivity extends LinphoneGenericActivity implements Lin
private TextView name, number; private TextView name, number;
private ImageView contactPicture, accept, decline, arrow; private ImageView contactPicture, accept, decline, arrow;
private LinphoneCall mCall; private Call mCall;
private LinphoneCoreListenerBase mListener; private CoreListenerStub mListener;
private LinearLayout acceptUnlock; private LinearLayout acceptUnlock;
private LinearLayout declineUnlock; private LinearLayout declineUnlock;
private boolean alreadyAcceptedOrDeniedCall, begin; private boolean alreadyAcceptedOrDeniedCall, begin;
@ -94,7 +94,7 @@ public class CallIncomingActivity extends LinphoneGenericActivity implements Lin
lookupCurrentCall(); lookupCurrentCall();
if (LinphonePreferences.instance() != null && mCall != null && mCall.getRemoteParams() != null && if (LinphonePreferences.instance() != null && mCall != null && mCall.getRemoteParams() != null &&
LinphonePreferences.instance().shouldAutomaticallyAcceptVideoRequests() && LinphonePreferences.instance().shouldAutomaticallyAcceptVideoRequests() &&
mCall.getRemoteParams().getVideoEnabled()) { mCall.getRemoteParams().videoEnabled()) {
accept.setImageResource(R.drawable.call_video_start); accept.setImageResource(R.drawable.call_video_start);
} }
decline = (ImageView) findViewById(R.id.decline); decline = (ImageView) findViewById(R.id.decline);
@ -182,16 +182,16 @@ public class CallIncomingActivity extends LinphoneGenericActivity implements Lin
} }
}); });
mListener = new LinphoneCoreListenerBase(){ mListener = new CoreListenerStub(){
@Override @Override
public void callState(LinphoneCore lc, LinphoneCall call, State state, String message) { public void onCallStateChanged(Core lc, Call call, State state, String message) {
if (call == mCall && State.CallEnd == state) { if (call == mCall && State.End == state) {
finish(); finish();
} }
if (state == State.StreamsRunning) { if (state == State.StreamsRunning) {
Log.e("CallIncommingActivity - onCreate - State.StreamsRunning - speaker = "+LinphoneManager.getLc().isSpeakerEnabled()); Log.e("CallIncommingActivity - onCreate - State.StreamsRunning - speaker = "+LinphoneManager.getInstance().isSpeakerEnabled());
// The following should not be needed except some devices need it (e.g. Galaxy S). // The following should not be needed except some devices need it (e.g. Galaxy S).
LinphoneManager.getLc().enableSpeaker(LinphoneManager.getLc().isSpeakerEnabled()); LinphoneManager.getInstance().enableSpeaker(LinphoneManager.getInstance().isSpeakerEnabled());
} }
} }
}; };
@ -204,7 +204,7 @@ public class CallIncomingActivity extends LinphoneGenericActivity implements Lin
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
instance = this; instance = this;
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) { if (lc != null) {
lc.addListener(mListener); lc.addListener(mListener);
} }
@ -222,7 +222,7 @@ public class CallIncomingActivity extends LinphoneGenericActivity implements Lin
} }
LinphoneAddress address = mCall.getRemoteAddress(); Address address = mCall.getRemoteAddress();
LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(address); LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(address);
if (contact != null) { if (contact != null) {
LinphoneUtils.setImagePictureFromUri(this, contactPicture, contact.getPhotoUri(), contact.getThumbnailUri()); LinphoneUtils.setImagePictureFromUri(this, contactPicture, contact.getPhotoUri(), contact.getThumbnailUri());
@ -241,7 +241,7 @@ public class CallIncomingActivity extends LinphoneGenericActivity implements Lin
@Override @Override
protected void onPause() { protected void onPause() {
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) { if (lc != null) {
lc.removeListener(mListener); lc.removeListener(mListener);
} }
@ -265,8 +265,8 @@ public class CallIncomingActivity extends LinphoneGenericActivity implements Lin
private void lookupCurrentCall() { private void lookupCurrentCall() {
if (LinphoneManager.getLcIfManagerNotDestroyedOrNull() != null) { if (LinphoneManager.getLcIfManagerNotDestroyedOrNull() != null) {
List<LinphoneCall> calls = LinphoneUtils.getLinphoneCalls(LinphoneManager.getLc()); List<Call> calls = LinphoneUtils.getCalls(LinphoneManager.getLc());
for (LinphoneCall call : calls) { for (Call call : calls) {
if (State.IncomingReceived == call.getState()) { if (State.IncomingReceived == call.getState()) {
mCall = call; mCall = call;
break; break;
@ -291,7 +291,7 @@ public class CallIncomingActivity extends LinphoneGenericActivity implements Lin
} }
alreadyAcceptedOrDeniedCall = true; alreadyAcceptedOrDeniedCall = true;
LinphoneCallParams params = LinphoneManager.getLc().createCallParams(mCall); CallParams params = LinphoneManager.getLc().createCallParams(mCall);
boolean isLowBandwidthConnection = !LinphoneUtils.isHighBandwidthConnection(LinphoneService.instance().getApplicationContext()); boolean isLowBandwidthConnection = !LinphoneUtils.isHighBandwidthConnection(LinphoneService.instance().getApplicationContext());

View file

@ -19,11 +19,11 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/ */
import org.linphone.core.LinphoneAddress; import org.linphone.core.Address;
import org.linphone.core.LinphoneCall; import org.linphone.core.Call;
import org.linphone.core.LinphoneCallParams; import org.linphone.core.CallParams;
import org.linphone.core.LinphoneCore; import org.linphone.core.Core;
import org.linphone.core.LinphoneCoreException; import org.linphone.core.CoreException;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
@ -47,16 +47,16 @@ public class CallManager {
public void inviteAddress(LinphoneAddress lAddress, boolean videoEnabled, boolean lowBandwidth) throws LinphoneCoreException { public void inviteAddress(Address lAddress, boolean videoEnabled, boolean lowBandwidth) throws CoreException {
LinphoneCore lc = LinphoneManager.getLc(); Core lc = LinphoneManager.getLc();
LinphoneCallParams params = lc.createCallParams(null); CallParams params = lc.createCallParams(null);
bm().updateWithProfileSettings(lc, params); bm().updateWithProfileSettings(lc, params);
if (videoEnabled && params.getVideoEnabled()) { if (videoEnabled && params.videoEnabled()) {
params.setVideoEnabled(true); params.enableVideo(true);
} else { } else {
params.setVideoEnabled(false); params.enableVideo(false);
} }
if (lowBandwidth) { if (lowBandwidth) {
@ -77,22 +77,22 @@ public class CallManager {
* @return if updateCall called * @return if updateCall called
*/ */
boolean reinviteWithVideo() { boolean reinviteWithVideo() {
LinphoneCore lc = LinphoneManager.getLc(); Core lc = LinphoneManager.getLc();
LinphoneCall lCall = lc.getCurrentCall(); Call lCall = lc.getCurrentCall();
if (lCall == null) { if (lCall == null) {
Log.e("Trying to reinviteWithVideo while not in call: doing nothing"); Log.e("Trying to reinviteWithVideo while not in call: doing nothing");
return false; return false;
} }
LinphoneCallParams params = lc.createCallParams(lCall); CallParams params = lc.createCallParams(lCall);
if (params.getVideoEnabled()) return false; if (params.videoEnabled()) return false;
// Check if video possible regarding bandwidth limitations // Check if video possible regarding bandwidth limitations
bm().updateWithProfileSettings(lc, params); bm().updateWithProfileSettings(lc, params);
// Abort if not enough bandwidth... // Abort if not enough bandwidth...
if (!params.getVideoEnabled()) { if (!params.videoEnabled()) {
return false; return false;
} }
@ -107,13 +107,13 @@ public class CallManager {
* Re-invite with parameters updated from profile. * Re-invite with parameters updated from profile.
*/ */
void reinvite() { void reinvite() {
LinphoneCore lc = LinphoneManager.getLc(); Core lc = LinphoneManager.getLc();
LinphoneCall lCall = lc.getCurrentCall(); Call lCall = lc.getCurrentCall();
if (lCall == null) { if (lCall == null) {
Log.e("Trying to reinvite while not in call: doing nothing"); Log.e("Trying to reinvite while not in call: doing nothing");
return; return;
} }
LinphoneCallParams params = lc.createCallParams(lCall); CallParams params = lc.createCallParams(lCall);
bm().updateWithProfileSettings(lc, params); bm().updateWithProfileSettings(lc, params);
lc.updateCall(lCall, params); lc.updateCall(lCall, params);
} }
@ -124,13 +124,13 @@ public class CallManager {
* The camera will be restarted when mediastreamer chain is recreated and setParameters is called. * The camera will be restarted when mediastreamer chain is recreated and setParameters is called.
*/ */
public void updateCall() { public void updateCall() {
LinphoneCore lc = LinphoneManager.getLc(); Core lc = LinphoneManager.getLc();
LinphoneCall lCall = lc.getCurrentCall(); Call lCall = lc.getCurrentCall();
if (lCall == null) { if (lCall == null) {
Log.e("Trying to updateCall while not in call: doing nothing"); Log.e("Trying to updateCall while not in call: doing nothing");
return; return;
} }
LinphoneCallParams params = lc.createCallParams(lCall); CallParams params = lc.createCallParams(lCall);
bm().updateWithProfileSettings(lc, params); bm().updateWithProfileSettings(lc, params);
lc.updateCall(lCall, null); lc.updateCall(lCall, null);
} }

View file

@ -22,11 +22,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.linphone.core.LinphoneAddress; import org.linphone.core.Address;
import org.linphone.core.LinphoneCall; import org.linphone.core.Call;
import org.linphone.core.LinphoneCall.State; import org.linphone.core.Call.State;
import org.linphone.core.LinphoneCore; import org.linphone.core.Core;
import org.linphone.core.LinphoneCoreListenerBase; import org.linphone.core.CoreListenerStub;
import org.linphone.core.Reason; import org.linphone.core.Reason;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
@ -51,8 +51,8 @@ public class CallOutgoingActivity extends LinphoneGenericActivity implements OnC
private TextView name, number; private TextView name, number;
private ImageView contactPicture, micro, speaker, hangUp; private ImageView contactPicture, micro, speaker, hangUp;
private LinphoneCall mCall; private Call mCall;
private LinphoneCoreListenerBase mListener; private CoreListenerStub mListener;
private boolean isMicMuted, isSpeakerEnabled; private boolean isMicMuted, isSpeakerEnabled;
public static CallOutgoingActivity instance() { public static CallOutgoingActivity instance() {
@ -93,9 +93,9 @@ public class CallOutgoingActivity extends LinphoneGenericActivity implements OnC
hangUp = (ImageView) findViewById(R.id.outgoing_hang_up); hangUp = (ImageView) findViewById(R.id.outgoing_hang_up);
hangUp.setOnClickListener(this); hangUp.setOnClickListener(this);
mListener = new LinphoneCoreListenerBase(){ mListener = new CoreListenerStub(){
@Override @Override
public void callState(LinphoneCore lc, LinphoneCall call, LinphoneCall.State state, String message) { public void onCallStateChanged(Core lc, Call call, Call.State state, String message) {
if (call == mCall && State.Connected == state) { if (call == mCall && State.Connected == state) {
if (!LinphoneActivity.isInstanciated()) { if (!LinphoneActivity.isInstanciated()) {
return; return;
@ -104,14 +104,14 @@ public class CallOutgoingActivity extends LinphoneGenericActivity implements OnC
finish(); finish();
return; return;
} else if (state == State.Error) { } else if (state == State.Error) {
// Convert LinphoneCore message for internalization // Convert Core message for internalization
if (call.getErrorInfo().getReason() == Reason.Declined) { if (call.getErrorInfo().getReason() == Reason.Declined) {
displayCustomToast(getString(R.string.error_call_declined), Toast.LENGTH_SHORT); displayCustomToast(getString(R.string.error_call_declined), Toast.LENGTH_SHORT);
decline(); decline();
} else if (call.getErrorInfo().getReason() == Reason.NotFound) { } else if (call.getErrorInfo().getReason() == Reason.NotFound) {
displayCustomToast(getString(R.string.error_user_not_found), Toast.LENGTH_SHORT); displayCustomToast(getString(R.string.error_user_not_found), Toast.LENGTH_SHORT);
decline(); decline();
} else if (call.getErrorInfo().getReason() == Reason.Media) { } else if (call.getErrorInfo().getReason() == Reason.NotAcceptable) {
displayCustomToast(getString(R.string.error_incompatible_media), Toast.LENGTH_SHORT); displayCustomToast(getString(R.string.error_incompatible_media), Toast.LENGTH_SHORT);
decline(); decline();
} else if (call.getErrorInfo().getReason() == Reason.Busy) { } else if (call.getErrorInfo().getReason() == Reason.Busy) {
@ -121,8 +121,8 @@ public class CallOutgoingActivity extends LinphoneGenericActivity implements OnC
displayCustomToast(getString(R.string.error_unknown) + " - " + message, Toast.LENGTH_SHORT); displayCustomToast(getString(R.string.error_unknown) + " - " + message, Toast.LENGTH_SHORT);
decline(); decline();
} }
}else if (state == State.CallEnd) { }else if (state == State.End) {
// Convert LinphoneCore message for internalization // Convert Core message for internalization
if (call.getErrorInfo().getReason() == Reason.Declined) { if (call.getErrorInfo().getReason() == Reason.Declined) {
displayCustomToast(getString(R.string.error_call_declined), Toast.LENGTH_SHORT); displayCustomToast(getString(R.string.error_call_declined), Toast.LENGTH_SHORT);
decline(); decline();
@ -142,7 +142,7 @@ public class CallOutgoingActivity extends LinphoneGenericActivity implements OnC
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
instance = this; instance = this;
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) { if (lc != null) {
lc.addListener(mListener); lc.addListener(mListener);
} }
@ -151,8 +151,8 @@ public class CallOutgoingActivity extends LinphoneGenericActivity implements OnC
// Only one call ringing at a time is allowed // Only one call ringing at a time is allowed
if (LinphoneManager.getLcIfManagerNotDestroyedOrNull() != null) { if (LinphoneManager.getLcIfManagerNotDestroyedOrNull() != null) {
List<LinphoneCall> calls = LinphoneUtils.getLinphoneCalls(LinphoneManager.getLc()); List<Call> calls = LinphoneUtils.getCalls(LinphoneManager.getLc());
for (LinphoneCall call : calls) { for (Call call : calls) {
State cstate = call.getState(); State cstate = call.getState();
if (State.OutgoingInit == cstate || State.OutgoingProgress == cstate if (State.OutgoingInit == cstate || State.OutgoingProgress == cstate
|| State.OutgoingRinging == cstate || State.OutgoingEarlyMedia == cstate) { || State.OutgoingRinging == cstate || State.OutgoingEarlyMedia == cstate) {
@ -175,7 +175,7 @@ public class CallOutgoingActivity extends LinphoneGenericActivity implements OnC
return; return;
} }
LinphoneAddress address = mCall.getRemoteAddress(); Address address = mCall.getRemoteAddress();
LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(address); LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(address);
if (contact != null) { if (contact != null) {
LinphoneUtils.setImagePictureFromUri(this, contactPicture, contact.getPhotoUri(), contact.getThumbnailUri()); LinphoneUtils.setImagePictureFromUri(this, contactPicture, contact.getPhotoUri(), contact.getThumbnailUri());
@ -194,7 +194,7 @@ public class CallOutgoingActivity extends LinphoneGenericActivity implements OnC
@Override @Override
protected void onPause() { protected void onPause() {
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) { if (lc != null) {
lc.removeListener(mListener); lc.removeListener(mListener);
} }
@ -218,7 +218,7 @@ public class CallOutgoingActivity extends LinphoneGenericActivity implements OnC
} else { } else {
micro.setImageResource(R.drawable.micro_default); micro.setImageResource(R.drawable.micro_default);
} }
LinphoneManager.getLc().muteMic(isMicMuted); LinphoneManager.getLc().enableMic(!isMicMuted);
} }
if (id == R.id.speaker) { if (id == R.id.speaker) {
isSpeakerEnabled = !isSpeakerEnabled; isSpeakerEnabled = !isSpeakerEnabled;
@ -227,7 +227,7 @@ public class CallOutgoingActivity extends LinphoneGenericActivity implements OnC
} else { } else {
speaker.setImageResource(R.drawable.speaker_default); speaker.setImageResource(R.drawable.speaker_default);
} }
LinphoneManager.getLc().enableSpeaker(isSpeakerEnabled); LinphoneManager.getInstance().enableSpeaker(isSpeakerEnabled);
} }
if (id == R.id.outgoing_hang_up) { if (id == R.id.outgoing_hang_up) {
decline(); decline();

View file

@ -22,7 +22,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
import org.linphone.compatibility.Compatibility; import org.linphone.compatibility.Compatibility;
import org.linphone.compatibility.CompatibilityScaleGestureDetector; import org.linphone.compatibility.CompatibilityScaleGestureDetector;
import org.linphone.compatibility.CompatibilityScaleGestureListener; import org.linphone.compatibility.CompatibilityScaleGestureListener;
import org.linphone.core.LinphoneCall; import org.linphone.core.Call;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
import org.linphone.mediastream.video.AndroidVideoWindowImpl; import org.linphone.mediastream.video.AndroidVideoWindowImpl;
import org.linphone.mediastream.video.capture.hwconf.AndroidCameraConfiguration; import org.linphone.mediastream.video.capture.hwconf.AndroidCameraConfiguration;
@ -57,7 +57,7 @@ public class CallVideoFragment extends Fragment implements OnGestureListener, On
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { Bundle savedInstanceState) {
View view; View view;
if (LinphoneManager.getLc().hasCrappyOpenGL()) { if (LinphoneManager.getLc().hasCrappyOpengl()) {
view = inflater.inflate(R.layout.video_no_opengl, container, false); view = inflater.inflate(R.layout.video_no_opengl, container, false);
} else { } else {
view = inflater.inflate(R.layout.video, container, false); view = inflater.inflate(R.layout.video, container, false);
@ -72,7 +72,7 @@ public class CallVideoFragment extends Fragment implements OnGestureListener, On
androidVideoWindowImpl = new AndroidVideoWindowImpl(mVideoView, mCaptureView, new AndroidVideoWindowImpl.VideoWindowListener() { androidVideoWindowImpl = new AndroidVideoWindowImpl(mVideoView, mCaptureView, new AndroidVideoWindowImpl.VideoWindowListener() {
public void onVideoRenderingSurfaceReady(AndroidVideoWindowImpl vw, SurfaceView surface) { public void onVideoRenderingSurfaceReady(AndroidVideoWindowImpl vw, SurfaceView surface) {
mVideoView = surface; mVideoView = surface;
LinphoneManager.getLc().setVideoWindow(vw); LinphoneManager.getLc().setNativeVideoWindowId(vw);
} }
public void onVideoRenderingSurfaceDestroyed(AndroidVideoWindowImpl vw) { public void onVideoRenderingSurfaceDestroyed(AndroidVideoWindowImpl vw) {
@ -81,7 +81,7 @@ public class CallVideoFragment extends Fragment implements OnGestureListener, On
public void onVideoPreviewSurfaceReady(AndroidVideoWindowImpl vw, SurfaceView surface) { public void onVideoPreviewSurfaceReady(AndroidVideoWindowImpl vw, SurfaceView surface) {
mCaptureView = surface; mCaptureView = surface;
LinphoneManager.getLc().setPreviewWindow(mCaptureView); LinphoneManager.getLc().setNativePreviewWindowId(mCaptureView);
} }
public void onVideoPreviewSurfaceDestroyed(AndroidVideoWindowImpl vw) { public void onVideoPreviewSurfaceDestroyed(AndroidVideoWindowImpl vw) {
@ -147,15 +147,17 @@ public class CallVideoFragment extends Fragment implements OnGestureListener, On
public void switchCamera() { public void switchCamera() {
try { try {
int videoDeviceId = LinphoneManager.getLc().getVideoDevice(); /*int videoDeviceId = LinphoneManager.getLc().getVideoDevice();
videoDeviceId = (videoDeviceId + 1) % AndroidCameraConfiguration.retrieveCameras().length; videoDeviceId = (videoDeviceId + 1) % AndroidCameraConfiguration.retrieveCameras().length;
LinphoneManager.getLc().setVideoDevice(videoDeviceId); LinphoneManager.getLc().setVideoDevice(videoDeviceId);*/
Log.e("TODO FIXME switchCamera");
CallManager.getInstance().updateCall(); CallManager.getInstance().updateCall();
// previous call will cause graph reconstruction -> regive preview // previous call will cause graph reconstruction -> regive preview
// window // window
if (mCaptureView != null) { if (mCaptureView != null) {
LinphoneManager.getLc().setPreviewWindow(mCaptureView); LinphoneManager.getLc().setNativePreviewWindowId(mCaptureView);
} }
} catch (ArithmeticException ae) { } catch (ArithmeticException ae) {
Log.e("Cannot swtich camera : no camera"); Log.e("Cannot swtich camera : no camera");
@ -171,7 +173,7 @@ public class CallVideoFragment extends Fragment implements OnGestureListener, On
} }
if (androidVideoWindowImpl != null) { if (androidVideoWindowImpl != null) {
synchronized (androidVideoWindowImpl) { synchronized (androidVideoWindowImpl) {
LinphoneManager.getLc().setVideoWindow(androidVideoWindowImpl); LinphoneManager.getLc().setNativeVideoWindowId(androidVideoWindowImpl);
} }
} }
@ -187,7 +189,7 @@ public class CallVideoFragment extends Fragment implements OnGestureListener, On
* this call will destroy native opengl renderer which is used by * this call will destroy native opengl renderer which is used by
* androidVideoWindowImpl * androidVideoWindowImpl
*/ */
LinphoneManager.getLc().setVideoWindow(null); LinphoneManager.getLc().setNativeVideoWindowId(null);
} }
} }
if (LinphonePreferences.instance().isOverlayEnabled()) { if (LinphonePreferences.instance().isOverlayEnabled()) {
@ -206,9 +208,9 @@ public class CallVideoFragment extends Fragment implements OnGestureListener, On
float landscapeZoomFactor = ((float) mVideoView.getWidth()) / (float) ((3 * mVideoView.getHeight()) / 4); float landscapeZoomFactor = ((float) mVideoView.getWidth()) / (float) ((3 * mVideoView.getHeight()) / 4);
mZoomFactor = Math.max(0.1f, Math.min(mZoomFactor, Math.max(portraitZoomFactor, landscapeZoomFactor))); mZoomFactor = Math.max(0.1f, Math.min(mZoomFactor, Math.max(portraitZoomFactor, landscapeZoomFactor)));
LinphoneCall currentCall = LinphoneManager.getLc().getCurrentCall(); Call currentCall = LinphoneManager.getLc().getCurrentCall();
if (currentCall != null) { if (currentCall != null) {
currentCall.zoomVideo(mZoomFactor, mZoomCenterX, mZoomCenterY); currentCall.zoom(mZoomFactor, mZoomCenterX, mZoomCenterY);
return true; return true;
} }
return false; return false;
@ -239,7 +241,7 @@ public class CallVideoFragment extends Fragment implements OnGestureListener, On
if (mZoomCenterY < 0) if (mZoomCenterY < 0)
mZoomCenterY = 0; mZoomCenterY = 0;
LinphoneManager.getLc().getCurrentCall().zoomVideo(mZoomFactor, mZoomCenterX, mZoomCenterY); LinphoneManager.getLc().getCurrentCall().zoom(mZoomFactor, mZoomCenterX, mZoomCenterY);
return true; return true;
} }
} }
@ -262,7 +264,7 @@ public class CallVideoFragment extends Fragment implements OnGestureListener, On
resetZoom(); resetZoom();
} }
LinphoneManager.getLc().getCurrentCall().zoomVideo(mZoomFactor, mZoomCenterX, mZoomCenterY); LinphoneManager.getLc().getCurrentCall().zoom(mZoomFactor, mZoomCenterX, mZoomCenterY);
return true; return true;
} }

View file

@ -77,16 +77,18 @@ import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import org.linphone.compatibility.Compatibility; import org.linphone.compatibility.Compatibility;
import org.linphone.core.LinphoneAddress; import org.linphone.core.Address;
import org.linphone.core.LinphoneBuffer; import org.linphone.core.Buffer;
import org.linphone.core.LinphoneChatMessage; import org.linphone.core.ChatMessage;
import org.linphone.core.LinphoneChatMessage.State; import org.linphone.core.ChatMessage.State;
import org.linphone.core.LinphoneChatRoom; import org.linphone.core.ChatMessageListener;
import org.linphone.core.LinphoneContent; import org.linphone.core.ChatRoom;
import org.linphone.core.LinphoneCore; import org.linphone.core.Content;
import org.linphone.core.LinphoneCoreFactory; import org.linphone.core.Core;
import org.linphone.core.LinphoneCoreListenerBase; import org.linphone.core.Factory;
import org.linphone.core.LinphoneFriend; import org.linphone.core.CoreListenerStub;
import org.linphone.core.Friend;
import org.linphone.core.FriendList;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
@ -110,7 +112,7 @@ interface ChatUpdatedListener {
void onChatUpdated(); void onChatUpdated();
} }
public class ChatFragment extends Fragment implements OnClickListener, LinphoneChatMessage.LinphoneChatMessageListener, ContactsUpdatedListener{ public class ChatFragment extends Fragment implements OnClickListener, ChatMessageListener, ContactsUpdatedListener{
private static final int ADD_PHOTO = 1337; private static final int ADD_PHOTO = 1337;
private static final int MENU_DELETE_MESSAGE = 0; private static final int MENU_DELETE_MESSAGE = 0;
private static final int MENU_PICTURE_SMALL = 2; private static final int MENU_PICTURE_SMALL = 2;
@ -124,7 +126,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
private static final int SIZE_LARGE = 1500; private static final int SIZE_LARGE = 1500;
private static final int SIZE_MAX = 2048; private static final int SIZE_MAX = 2048;
private LinphoneChatRoom chatRoom; private ChatRoom chatRoom;
private String sipUri; private String sipUri;
private EditText message; private EditText message;
private ImageView edit, selectAll, deselectAll, startCall, delete, sendImage, sendMessage, cancel; private ImageView edit, selectAll, deselectAll, startCall, delete, sendImage, sendMessage, cancel;
@ -145,7 +147,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
private ViewTreeObserver.OnGlobalLayoutListener keyboardListener; private ViewTreeObserver.OnGlobalLayoutListener keyboardListener;
private ChatMessageAdapter adapter; private ChatMessageAdapter adapter;
private LinphoneCoreListenerBase mListener; private CoreListenerStub mListener;
private boolean newChatConversation = false; private boolean newChatConversation = false;
private String fileSharedUri, fileAlreadySharedUri; private String fileSharedUri, fileAlreadySharedUri;
@ -238,8 +240,8 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
sendImage.setOnClickListener(new View.OnClickListener() { sendImage.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if (LinphoneManager.getLc().getLimeEncryption() == LinphoneCore.LinphoneLimeState.Mandatory if (LinphoneManager.getLc().limeEnabled() == Core.LimeState.Mandatory
&& (chatRoom == null || !chatRoom.islimeAvailable())){ && (chatRoom == null || !chatRoom.limeAvailable())){
askingForLimeCall(); askingForLimeCall();
return; return;
} }
@ -259,10 +261,10 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
back.setOnClickListener(this); back.setOnClickListener(this);
} }
mListener = new LinphoneCoreListenerBase(){ mListener = new CoreListenerStub(){
@Override @Override
public void messageReceived(LinphoneCore lc, LinphoneChatRoom cr, LinphoneChatMessage message) { public void onMessageReceived(Core lc, ChatRoom cr, ChatMessage message) {
LinphoneAddress from = cr.getPeerAddress(); Address from = cr.getPeerAddress();
if (from.asStringUriOnly().equals(sipUri)) { if (from.asStringUriOnly().equals(sipUri)) {
//LinphoneService.instance().removeMessageNotification(); //LinphoneService.instance().removeMessageNotification();
cr.markAsRead(); cr.markAsRead();
@ -270,7 +272,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
adapter.addMessage(message); adapter.addMessage(message);
String externalBodyUrl = message.getExternalBodyUrl(); String externalBodyUrl = message.getExternalBodyUrl();
LinphoneContent fileTransferContent = message.getFileTransferInformation(); Content fileTransferContent = message.getFileTransferInformation();
if (externalBodyUrl != null || fileTransferContent != null) { if (externalBodyUrl != null || fileTransferContent != null) {
LinphoneActivity.instance().checkAndRequestExternalStoragePermission(); LinphoneActivity.instance().checkAndRequestExternalStoragePermission();
} }
@ -283,7 +285,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
} }
@Override @Override
public void isComposingReceived(LinphoneCore lc, LinphoneChatRoom room) { public void onIsComposingReceived(Core lc, ChatRoom room) {
if (chatRoom != null && room != null && chatRoom.getPeerAddress().asStringUriOnly().equals(room.getPeerAddress().asStringUriOnly())) { if (chatRoom != null && room != null && chatRoom.getPeerAddress().asStringUriOnly().equals(room.getPeerAddress().asStringUriOnly())) {
remoteComposing.setVisibility(chatRoom.isRemoteComposing() ? View.VISIBLE : View.GONE); remoteComposing.setVisibility(chatRoom.isRemoteComposing() ? View.VISIBLE : View.GONE);
} }
@ -390,8 +392,8 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
} }
public void initChatRoom(String sipUri) { public void initChatRoom(String sipUri) {
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
LinphoneAddress lAddress = null; Address lAddress = null;
if (sipUri == null) { if (sipUri == null) {
contact = null; // Tablet rotation issue contact = null; // Tablet rotation issue
initNewChatConversation(); initNewChatConversation();
@ -412,7 +414,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
searchContactField.setVisibility(View.GONE); searchContactField.setVisibility(View.GONE);
resultContactsSearch.setVisibility(View.GONE); resultContactsSearch.setVisibility(View.GONE);
displayChatHeader(lAddress); displayChatHeader(lAddress);
displayMessageList(); removedList();
remoteComposing.setVisibility(chatRoom.isRemoteComposing() ? View.VISIBLE : View.GONE); remoteComposing.setVisibility(chatRoom.isRemoteComposing() ? View.VISIBLE : View.GONE);
} }
} }
@ -426,7 +428,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
//messagesList.invalidateViews(); //messagesList.invalidateViews();
} }
private void displayMessageList() { private void removedList() {
if (chatRoom != null) { if (chatRoom != null) {
if (adapter != null) { if (adapter != null) {
adapter.refreshHistory(); adapter.refreshHistory();
@ -438,7 +440,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
messagesList.setVisibility(ListView.VISIBLE); messagesList.setVisibility(ListView.VISIBLE);
} }
private void displayChatHeader(LinphoneAddress address) { private void displayChatHeader(Address address) {
if (contact != null || address != null) { if (contact != null || address != null) {
if (contact != null) { if (contact != null) {
contactName.setText(contact.getFullName()); contactName.setText(contact.getFullName());
@ -473,8 +475,8 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
menu.add(v.getId(), MENU_COPY_TEXT, 0, getString(R.string.copy_text)); menu.add(v.getId(), MENU_COPY_TEXT, 0, getString(R.string.copy_text));
} }
/* LinphoneChatMessage msg = getMessageForId(v.getId()); /* ChatMessage msg = getMessageForId(v.getId());
if (msg != null && msg.getStatus() == LinphoneChatMessage.State.NotDelivered) { if (msg != null && msg.getStatus() == ChatMessage.State.NotDelivered) {
menu.add(v.getId(), MENU_RESEND_MESSAGE, 0, getString(R.string.retry)); menu.add(v.getId(), MENU_RESEND_MESSAGE, 0, getString(R.string.retry));
} }
*/ */
@ -485,7 +487,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
switch (item.getItemId()) { switch (item.getItemId()) {
case MENU_DELETE_MESSAGE: case MENU_DELETE_MESSAGE:
if (chatRoom != null) { if (chatRoom != null) {
LinphoneChatMessage message = getMessageForId(item.getGroupId()); ChatMessage message = getMessageForId(item.getGroupId());
if (message != null) { if (message != null) {
chatRoom.deleteMessage(message); chatRoom.deleteMessage(message);
if (getResources().getBoolean(R.bool.isTablet) && chatRoom.getHistorySize() <= 0) { if (getResources().getBoolean(R.bool.isTablet) && chatRoom.getHistorySize() <= 0) {
@ -529,7 +531,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
LinphoneService.instance().removeMessageNotification(); LinphoneService.instance().removeMessageNotification();
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) { if (lc != null) {
lc.removeListener(mListener); lc.removeListener(mListener);
} }
@ -564,7 +566,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
message.addTextChangedListener(textWatcher); message.addTextChangedListener(textWatcher);
addVirtualKeyboardVisiblityListener(); addVirtualKeyboardVisiblityListener();
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) { if (lc != null) {
lc.addListener(mListener); lc.addListener(mListener);
} }
@ -596,7 +598,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
newChatConversation = true; newChatConversation = true;
} }
if(LinphoneManager.getLc().isIncall()){ if(LinphoneManager.getLc().inCall()){
backToCall.setVisibility(View.VISIBLE); backToCall.setVisibility(View.VISIBLE);
startCall.setVisibility(View.GONE); startCall.setVisibility(View.GONE);
} else { } else {
@ -632,7 +634,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
int size = messagesList.getAdapter().getCount(); int size = messagesList.getAdapter().getCount();
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
if (messagesList.isItemChecked(i)) { if (messagesList.isItemChecked(i)) {
LinphoneChatMessage message = (LinphoneChatMessage) messagesList.getAdapter().getItem(i); ChatMessage message = (ChatMessage) messagesList.getAdapter().getItem(i);
chatRoom.deleteMessage(message); chatRoom.deleteMessage(message);
} }
} }
@ -731,12 +733,12 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
(searchContactField.getVisibility() == View.VISIBLE (searchContactField.getVisibility() == View.VISIBLE
&& searchContactField.getText().toString().length() < 1)) && searchContactField.getText().toString().length() < 1))
return; return;
LinphoneCore.LinphoneLimeState state = LinphoneManager.getLc().getLimeEncryption(); Core.LimeState state = LinphoneManager.getLc().limeEnabled();
if ((state == LinphoneCore.LinphoneLimeState.Disabled if ((state == Core.LimeState.Disabled
|| state == LinphoneCore.LinphoneLimeState.Preferred) || state == Core.LimeState.Preferred)
|| (state == LinphoneCore.LinphoneLimeState.Mandatory || (state == Core.LimeState.Mandatory
&& chatRoom != null && chatRoom.islimeAvailable())){ && chatRoom != null && chatRoom.limeAvailable())){
sendTextMessage(message.getText().toString()); sendTextMessage(message.getText().toString());
message.setText(""); message.setText("");
invalidate(); invalidate();
@ -747,9 +749,9 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
} }
private void sendTextMessage(String messageToSend) { private void sendTextMessage(String messageToSend) {
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
boolean isNetworkReachable = lc == null ? false : lc.isNetworkReachable(); boolean isNetworkReachable = lc == null ? false : lc.isNetworkReachable();
LinphoneAddress lAddress = null; Address lAddress = null;
//Start new conversation in fast chat //Start new conversation in fast chat
if(newChatConversation && chatRoom == null) { if(newChatConversation && chatRoom == null) {
@ -759,7 +761,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
} }
} }
if (chatRoom != null && messageToSend != null && messageToSend.length() > 0 && isNetworkReachable) { if (chatRoom != null && messageToSend != null && messageToSend.length() > 0 && isNetworkReachable) {
LinphoneChatMessage message = chatRoom.createLinphoneChatMessage(messageToSend); ChatMessage message = chatRoom.createMessage(messageToSend);
chatRoom.sendChatMessage(message); chatRoom.sendChatMessage(message);
lAddress = chatRoom.getPeerAddress(); lAddress = chatRoom.getPeerAddress();
@ -774,7 +776,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
adapter.addMessage(message); adapter.addMessage(message);
} }
Log.i("Sent message current status: " + message.getStatus()); Log.i("Sent message current status: " + message.getState());
} else if (!isNetworkReachable && LinphoneActivity.isInstanciated()) { } else if (!isNetworkReachable && LinphoneActivity.isInstanciated()) {
LinphoneActivity.instance().displayCustomToast(getString(R.string.error_network_unreachable), Toast.LENGTH_LONG); LinphoneActivity.instance().displayCustomToast(getString(R.string.error_network_unreachable), Toast.LENGTH_LONG);
} }
@ -787,7 +789,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
if(path.contains("%20")) { if(path.contains("%20")) {
path = path.replace("%20", "-"); path = path.replace("%20", "-");
} }
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
boolean isNetworkReachable = lc == null ? false : lc.isNetworkReachable(); boolean isNetworkReachable = lc == null ? false : lc.isNetworkReachable();
if(newChatConversation && chatRoom == null) { if(newChatConversation && chatRoom == null) {
String address = searchContactField.getText().toString(); String address = searchContactField.getText().toString();
@ -826,7 +828,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
if(path.contains("%20")) { if(path.contains("%20")) {
path = path.replace("%20", "-"); path = path.replace("%20", "-");
} }
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
boolean isNetworkReachable = lc == null ? false : lc.isNetworkReachable(); boolean isNetworkReachable = lc == null ? false : lc.isNetworkReachable();
if (newChatConversation && chatRoom == null) { if (newChatConversation && chatRoom == null) {
String address = searchContactField.getText().toString(); String address = searchContactField.getText().toString();
@ -882,14 +884,14 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
dialog.dismiss(); dialog.dismiss();
} }
}); });
if(LinphoneManager.getLc().getLimeEncryption() == LinphoneCore.LinphoneLimeState.Mandatory) if(LinphoneManager.getLc().limeEnabled() == Core.LimeState.Mandatory)
dialog.show(); dialog.show();
} }
private LinphoneChatMessage getMessageForId(int id) { private ChatMessage getMessageForId(int id) {
if (adapter == null) return null; if (adapter == null) return null;
for (int i = 0; i < adapter.getCount(); i++) { for (int i = 0; i < adapter.getCount(); i++) {
LinphoneChatMessage message = adapter.getItem(i); ChatMessage message = adapter.getItem(i);
if (message.getStorageId() == id) { if (message.getStorageId() == id) {
return message; return message;
} }
@ -907,29 +909,29 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
} }
} }
private void resendMessage(LinphoneChatMessage message) { private void resendMessage(ChatMessage message) {
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (message == null || message.getStatus() != State.NotDelivered || !lc.isNetworkReachable()) if (message == null || message.getState() != State.NotDelivered || !lc.isNetworkReachable())
return; return;
message.reSend(); message.resend();
invalidate(); invalidate();
} }
private void resendMessage(int id) { private void resendMessage(int id) {
LinphoneChatMessage message = getMessageForId(id); ChatMessage message = getMessageForId(id);
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (message == null || message.getStatus() != State.NotDelivered || !lc.isNetworkReachable()){ if (message == null || message.getState() != State.NotDelivered || !lc.isNetworkReachable()){
return; return;
} }
message.reSend(); message.resend();
invalidate(); invalidate();
} }
private void copyTextMessageToClipboard(int id) { private void copyTextMessageToClipboard(int id) {
LinphoneChatMessage message = null; ChatMessage message = null;
for (int i = 0; i < adapter.getCount(); i++) { for (int i = 0; i < adapter.getCount(); i++) {
LinphoneChatMessage msg = adapter.getItem(i); ChatMessage msg = adapter.getItem(i);
if (msg.getStorageId() == id) { if (msg.getStorageId() == id) {
message = msg; message = msg;
break; break;
@ -987,12 +989,14 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
public Uri getCVSPathFromLookupUri(String content) { public Uri getCVSPathFromLookupUri(String content) {
String contactId = LinphoneUtils.getNameFromFilePath(content); String contactId = LinphoneUtils.getNameFromFilePath(content);
LinphoneFriend[] friendList = LinphoneManager.getLc().getFriendList(); FriendList[] friendList = LinphoneManager.getLc().getFriendsLists();
for(LinphoneFriend friend : friendList){ for (FriendList list : friendList) {
if(friend.getRefKey().toString().equals(contactId)) { for (Friend friend : list.getFriends()) {
String contactVcard = friend.getVcardToString(); if (friend.getRefKey().toString().equals(contactId)) {
Uri path = LinphoneUtils.createCvsFromString(contactVcard); String contactVcard = friend.getVcard().asVcard4String();
return path; Uri path = LinphoneUtils.createCvsFromString(contactVcard);
return path;
}
} }
} }
return null; return null;
@ -1097,11 +1101,14 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
} }
String fileName = path.substring(path.lastIndexOf("/") + 1); String fileName = path.substring(path.lastIndexOf("/") + 1);
String extension = LinphoneUtils.getExtensionFromFileName(fileName); String extension = LinphoneUtils.getExtensionFromFileName(fileName);
LinphoneContent content = LinphoneCoreFactory.instance().createLinphoneContent("image", extension, result, null); Content content = chatRoom.getCore().createContent(); // "image", extension, result, null
content.setType("image");
content.setSubtype(extension);
content.setBuffer(result, result.length);
content.setName(fileName); content.setName(fileName);
LinphoneChatMessage message = chatRoom.createFileTransferMessage(content); ChatMessage message = chatRoom.createFileTransferMessage(content);
message.setListener(LinphoneManager.getInstance()); message.setListener(LinphoneManager.getInstance());
message.setAppData(path); message.setAppdata(path);
LinphoneManager.getInstance().setUploadPendingFileMessage(message); LinphoneManager.getInstance().setUploadPendingFileMessage(message);
LinphoneManager.getInstance().setUploadingImage(result); LinphoneManager.getInstance().setUploadingImage(result);
@ -1151,12 +1158,16 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
String fileName = path.substring(path.lastIndexOf("/") + 1); String fileName = path.substring(path.lastIndexOf("/") + 1);
String extension = LinphoneUtils.getExtensionFromFileName(fileName); String extension = LinphoneUtils.getExtensionFromFileName(fileName);
LinphoneContent content = LinphoneCoreFactory.instance().createLinphoneContent("file", extension, result, null); Content content = chatRoom.getCore().createContent();//"file", extension, result, null
content.setType("file");
content.setSubtype(extension);
content.setBuffer(result, result.length);
content.setName(fileName);
content.setName(fileName); content.setName(fileName);
LinphoneChatMessage message = chatRoom.createFileTransferMessage(content); ChatMessage message = chatRoom.createFileTransferMessage(content);
message.setListener(LinphoneManager.getInstance()); message.setListener(LinphoneManager.getInstance());
message.setAppData(path); message.setAppdata(path);
LinphoneManager.getInstance().setUploadPendingFileMessage(message); LinphoneManager.getInstance().setUploadPendingFileMessage(message);
LinphoneManager.getInstance().setUploadingImage(result); LinphoneManager.getInstance().setUploadingImage(result);
@ -1293,7 +1304,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
} }
class ChatMessageAdapter extends BaseAdapter { class ChatMessageAdapter extends BaseAdapter {
private class ViewHolder implements LinphoneChatMessage.LinphoneChatMessageListener { private class ViewHolder implements ChatMessageListener {
public int id; public int id;
public RelativeLayout bubbleLayout; public RelativeLayout bubbleLayout;
public CheckBox delete; public CheckBox delete;
@ -1337,32 +1348,32 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
} }
@Override @Override
public void onLinphoneChatMessageStateChanged(LinphoneChatMessage msg, State state) { public void onMsgStateChanged(ChatMessage msg, State state) {
} }
@Override @Override
public void onLinphoneChatMessageFileTransferReceived(LinphoneChatMessage msg, LinphoneContent content, LinphoneBuffer buffer) { public void onFileTransferRecv(ChatMessage msg, Content content, Buffer buffer) {
} }
@Override @Override
public void onLinphoneChatMessageFileTransferSent(LinphoneChatMessage msg, LinphoneContent content, int offset, int size, LinphoneBuffer bufferToFill) { public Buffer onFileTransferSend(ChatMessage message, Content content, int offset, int size) {
return null;
} }
@Override @Override
public void onLinphoneChatMessageFileTransferProgressChanged(LinphoneChatMessage msg, LinphoneContent content, int offset, int total) { public void onFileTransferProgressIndication(ChatMessage msg, Content content, int offset, int total) {
if (msg.getStorageId() == id) fileTransferProgressBar.setProgress(offset * 100 / total); if (msg.getStorageId() == id) fileTransferProgressBar.setProgress(offset * 100 / total);
} }
} }
ArrayList<LinphoneChatMessage> history; ArrayList<ChatMessage> history;
Context context; Context context;
public ChatMessageAdapter(Context c) { public ChatMessageAdapter(Context c) {
context = c; context = c;
history = new ArrayList<LinphoneChatMessage>(); history = new ArrayList<ChatMessage>();
refreshHistory(); refreshHistory();
} }
@ -1375,18 +1386,18 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
public void refreshHistory() { public void refreshHistory() {
if (history == null || chatRoom == null) return; if (history == null || chatRoom == null) return;
history.clear(); history.clear();
LinphoneChatMessage[] messages = chatRoom.getHistory(); ChatMessage[] messages = chatRoom.getHistory(0);
history.addAll(Arrays.asList(messages)); history.addAll(Arrays.asList(messages));
notifyDataSetChanged(); notifyDataSetChanged();
} }
public void addMessage(LinphoneChatMessage message) { public void addMessage(ChatMessage message) {
history.add(message); history.add(message);
notifyDataSetChanged(); notifyDataSetChanged();
messagesList.setSelection(getCount() - 1); messagesList.setSelection(getCount() - 1);
} }
public void refreshMessageCell(LinphoneChatMessage msg){ public void refreshMessageCell(ChatMessage msg){
} }
@ -1396,7 +1407,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
} }
@Override @Override
public LinphoneChatMessage getItem(int position) { public ChatMessage getItem(int position) {
return history.get(position); return history.get(position);
} }
@ -1407,7 +1418,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
@Override @Override
public View getView(final int position, View convertView, ViewGroup parent) { public View getView(final int position, View convertView, ViewGroup parent) {
final LinphoneChatMessage message = history.get(position); final ChatMessage message = history.get(position);
View view = null; View view = null;
final ViewHolder holder; final ViewHolder holder;
boolean sameMessage = false; boolean sameMessage = false;
@ -1426,8 +1437,8 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
if (holder.id == message.getStorageId()) { if (holder.id == message.getStorageId()) {
// Horrible workaround to not reload image on edit chat list // Horrible workaround to not reload image on edit chat list
if (holder.messageImage.getTag() != null if (holder.messageImage.getTag() != null
&& (holder.messageImage.getTag().equals(message.getAppData()) && (holder.messageImage.getTag().equals(message.getAppdata())
|| ((String) holder.messageImage.getTag()).substring(7).equals(message.getAppData())) || ((String) holder.messageImage.getTag()).substring(7).equals(message.getAppdata()))
){ ){
sameMessage = true; sameMessage = true;
} }
@ -1440,19 +1451,19 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if (!message.isSecured() && !message.isOutgoing() && if (!message.isSecured() && !message.isOutgoing() &&
LinphoneManager.getLc().getLimeEncryption() == LinphoneCore.LinphoneLimeState.Mandatory) { LinphoneManager.getLc().limeEnabled() == Core.LimeState.Mandatory) {
LinphoneUtils.displayErrorAlert(getString(R.string.message_not_encrypted), LinphoneActivity.instance()); LinphoneUtils.displayErrorAlert(getString(R.string.message_not_encrypted), LinphoneActivity.instance());
} }
if(message.getStatus() == State.NotDelivered) { if(message.getState() == State.NotDelivered) {
resendMessage(message); resendMessage(message);
//resendMessage(holder.id); //resendMessage(holder.id);
} }
} }
}); });
LinphoneChatMessage.State status = message.getStatus(); ChatMessage.State status = message.getState();
String externalBodyUrl = message.getExternalBodyUrl(); String externalBodyUrl = message.getExternalBodyUrl();
LinphoneContent fileTransferContent = message.getFileTransferInformation(); Content fileTransferContent = message.getFileTransferInformation();
holder.delete.setVisibility(View.GONE); holder.delete.setVisibility(View.GONE);
holder.messageText.setVisibility(View.GONE); holder.messageText.setVisibility(View.GONE);
@ -1465,9 +1476,9 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
holder.messageStatus.setVisibility(View.INVISIBLE); holder.messageStatus.setVisibility(View.INVISIBLE);
holder.messageSendingInProgress.setVisibility(View.GONE); holder.messageSendingInProgress.setVisibility(View.GONE);
String displayName = message.getFrom().getDisplayName(); String displayName = message.getFromAddress().getDisplayName();
if (displayName == null) { if (displayName == null) {
displayName = message.getFrom().getUserName(); displayName = message.getFromAddress().getUsername();
} }
if (!message.isOutgoing()) { if (!message.isOutgoing()) {
if (contact != null) { if (contact != null) {
@ -1487,11 +1498,11 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
} }
holder.contactName.setText(timestampToHumanDate(context, message.getTime()) + " - " + displayName); holder.contactName.setText(timestampToHumanDate(context, message.getTime()) + " - " + displayName);
if (status == LinphoneChatMessage.State.InProgress) { if (status == ChatMessage.State.InProgress) {
holder.messageSendingInProgress.setVisibility(View.VISIBLE); holder.messageSendingInProgress.setVisibility(View.VISIBLE);
} }
if (!message.isSecured() && !message.isOutgoing() && if (!message.isSecured() && !message.isOutgoing() &&
LinphoneManager.getLc().getLimeEncryption() == LinphoneCore.LinphoneLimeState.Mandatory && status != LinphoneChatMessage.State.InProgress) { LinphoneManager.getLc().limeEnabled() == Core.LimeState.Mandatory && status != ChatMessage.State.InProgress) {
holder.messageStatus.setVisibility(View.VISIBLE); holder.messageStatus.setVisibility(View.VISIBLE);
holder.messageStatus.setImageResource(R.drawable.chat_unsecure); holder.messageStatus.setImageResource(R.drawable.chat_unsecure);
} }
@ -1520,14 +1531,14 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
if (externalBodyUrl != null || fileTransferContent != null) { if (externalBodyUrl != null || fileTransferContent != null) {
String appData = message.getAppData(); String appData = message.getAppdata();
if (message.isOutgoing() && appData != null) { if (message.isOutgoing() && appData != null) {
holder.messageImage.setVisibility(View.VISIBLE); holder.messageImage.setVisibility(View.VISIBLE);
if (!sameMessage) { if (!sameMessage) {
loadBitmap(message.getAppData(), holder.messageImage); loadBitmap(message.getAppdata(), holder.messageImage);
holder.messageImage.setTag(message.getAppData()); holder.messageImage.setTag(message.getAppdata());
} }
if (LinphoneManager.getInstance().getMessageUploadPending() != null && LinphoneManager.getInstance().getMessageUploadPending().getStorageId() == message.getStorageId()) { if (LinphoneManager.getInstance().getMessageUploadPending() != null && LinphoneManager.getInstance().getMessageUploadPending().getStorageId() == message.getStorageId()) {
@ -1560,9 +1571,9 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
holder.messageImage.setVisibility(View.VISIBLE); holder.messageImage.setVisibility(View.VISIBLE);
if (!sameMessage) { if (!sameMessage) {
loadBitmap(appData, holder.messageImage); loadBitmap(appData, holder.messageImage);
holder.messageImage.setTag(message.getAppData()); holder.messageImage.setTag(message.getAppdata());
} }
//displayMessageList(); //removedList();
} }
} }
} }
@ -1603,7 +1614,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
String filename = message.getFileTransferInformation().getName(); String filename = message.getFileTransferInformation().getName();
String filename2 = context.getString(R.string.temp_photo_name_with_date).replace("%s", String.valueOf(System.currentTimeMillis())) ; //+ "." + extension; String filename2 = context.getString(R.string.temp_photo_name_with_date).replace("%s", String.valueOf(System.currentTimeMillis())) ; //+ "." + extension;
File file = new File(Environment.getExternalStorageDirectory(), filename); File file = new File(Environment.getExternalStorageDirectory(), filename);
message.setAppData(file.getPath()); message.setAppdata(file.getPath());
LinphoneManager.getInstance().addDownloadMessagePending(message); LinphoneManager.getInstance().addDownloadMessagePending(message);
message.setListener(LinphoneManager.getInstance()); message.setListener(LinphoneManager.getInstance());
message.setFileTransferFilepath(file.getPath()); message.setFileTransferFilepath(file.getPath());
@ -1643,12 +1654,12 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
} }
holder.bubbleLayout.setLayoutParams(layoutParams); holder.bubbleLayout.setLayoutParams(layoutParams);
if(message.getAppData() != null && holder.fileTransferLayout.getVisibility() != View.VISIBLE){ if(message.getAppdata() != null && holder.fileTransferLayout.getVisibility() != View.VISIBLE){
if(LinphoneUtils.isExtensionImage(message.getAppData())){ if(LinphoneUtils.isExtensionImage(message.getAppdata())){
holder.fileExtensionLabel.setVisibility(View.GONE); holder.fileExtensionLabel.setVisibility(View.GONE);
holder.fileNameLabel.setVisibility(View.GONE); holder.fileNameLabel.setVisibility(View.GONE);
}else { }else {
String extension = (LinphoneUtils.getExtensionFromFileName(message.getAppData())); String extension = (LinphoneUtils.getExtensionFromFileName(message.getAppdata()));
if(extension != null) if(extension != null)
extension = extension.toUpperCase(); extension = extension.toUpperCase();
else else
@ -1659,7 +1670,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
holder.fileExtensionLabel.setText(extension); holder.fileExtensionLabel.setText(extension);
holder.fileExtensionLabel.setVisibility(View.VISIBLE); holder.fileExtensionLabel.setVisibility(View.VISIBLE);
holder.fileNameLabel.setText(LinphoneUtils.getNameFromFilePath(message.getAppData())); holder.fileNameLabel.setText(LinphoneUtils.getNameFromFilePath(message.getAppdata()));
holder.fileNameLabel.setVisibility(View.VISIBLE); holder.fileNameLabel.setVisibility(View.VISIBLE);
holder.fileExtensionLabel.setOnClickListener(new OnClickListener() { holder.fileExtensionLabel.setOnClickListener(new OnClickListener() {
@Override @Override
@ -2058,18 +2069,20 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
} }
} }
//LinphoneChatMessage Listener //ChatMessage Listener
@Override @Override
public void onLinphoneChatMessageStateChanged(LinphoneChatMessage msg, State state) { public void onMsgStateChanged(ChatMessage msg, State state) {
redrawMessageList(); redrawMessageList();
} }
@Override @Override
public void onLinphoneChatMessageFileTransferReceived(LinphoneChatMessage msg, LinphoneContent content, LinphoneBuffer buffer) {} public void onFileTransferRecv(ChatMessage msg, Content content, Buffer buffer) {}
@Override @Override
public void onLinphoneChatMessageFileTransferSent(LinphoneChatMessage msg, LinphoneContent content, int offset, int size, LinphoneBuffer bufferToFill) {} public Buffer onFileTransferSend(ChatMessage msg, Content content, int offset, int size) {
return null;
}
@Override @Override
public void onLinphoneChatMessageFileTransferProgressChanged(LinphoneChatMessage msg, LinphoneContent content, int offset, int total) {} public void onFileTransferProgressIndication(ChatMessage msg, Content content, int offset, int total) {}
} }

View file

@ -43,13 +43,13 @@ import android.widget.LinearLayout;
import android.widget.ListView; import android.widget.ListView;
import android.widget.TextView; import android.widget.TextView;
import org.linphone.core.LinphoneAddress; import org.linphone.core.Address;
import org.linphone.core.LinphoneChatMessage; import org.linphone.core.ChatMessage;
import org.linphone.core.LinphoneChatRoom; import org.linphone.core.ChatRoom;
import org.linphone.core.LinphoneCore; import org.linphone.core.Core;
import org.linphone.core.LinphoneCoreException; import org.linphone.core.CoreException;
import org.linphone.core.LinphoneCoreFactory; import org.linphone.core.Factory;
import org.linphone.core.LinphoneCoreListenerBase; import org.linphone.core.CoreListenerStub;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
import java.util.List; import java.util.List;
@ -64,7 +64,7 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
private ImageView edit, selectAll, deselectAll, delete, newDiscussion, cancel, backInCall; private ImageView edit, selectAll, deselectAll, delete, newDiscussion, cancel, backInCall;
private LinearLayout editList, topbar; private LinearLayout editList, topbar;
private boolean isEditMode = false; private boolean isEditMode = false;
private LinphoneCoreListenerBase mListener; private CoreListenerStub mListener;
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
@ -102,9 +102,9 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
delete = (ImageView) view.findViewById(R.id.delete); delete = (ImageView) view.findViewById(R.id.delete);
delete.setOnClickListener(this); delete.setOnClickListener(this);
mListener = new LinphoneCoreListenerBase() { mListener = new CoreListenerStub() {
@Override @Override
public void messageReceived(LinphoneCore lc, LinphoneChatRoom cr, LinphoneChatMessage message) { public void onMessageReceived(Core lc, ChatRoom cr, ChatMessage message) {
refresh(); refresh();
} }
}; };
@ -127,7 +127,7 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
if (chatList.isItemChecked(i)) { if (chatList.isItemChecked(i)) {
String sipUri = chatList.getAdapter().getItem(i).toString(); String sipUri = chatList.getAdapter().getItem(i).toString();
if (sipUri != null) { if (sipUri != null) {
LinphoneChatRoom chatroom = LinphoneManager.getLc().getOrCreateChatRoom(sipUri); ChatRoom chatroom = LinphoneManager.getLc().getChatRoomFromUri(sipUri);
if (chatroom != null) { if (chatroom != null) {
chatroom.deleteHistory(); chatroom.deleteHistory();
} }
@ -212,7 +212,7 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
LinphoneActivity.instance().hideTabBar(false); LinphoneActivity.instance().hideTabBar(false);
} }
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) { if (lc != null) {
lc.addListener(mListener); lc.addListener(mListener);
} }
@ -222,7 +222,7 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
@Override @Override
public void onPause() { public void onPause() {
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) { if (lc != null) {
lc.removeListener(mListener); lc.removeListener(mListener);
} }
@ -405,24 +405,19 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
view.setTag(holder); view.setTag(holder);
} }
LinphoneAddress address; Address address;
try { address = Factory.instance().createAddress(sipUri);
address = LinphoneCoreFactory.instance().createLinphoneAddress(sipUri);
} catch (LinphoneCoreException e) {
Log.e("Chat view cannot parse address", e);
return view;
}
LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(address); LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(address);
String message = ""; String message = "";
Long time; Long time;
LinphoneChatRoom chatRoom = LinphoneManager.getLc().getChatRoom(address); ChatRoom chatRoom = LinphoneManager.getLc().getChatRoom(address);
int unreadMessagesCount = chatRoom.getUnreadMessagesCount(); int unreadMessagesCount = chatRoom.getUnreadMessagesCount();
LinphoneChatMessage[] history = chatRoom.getHistory(1); ChatMessage[] history = chatRoom.getHistory(1);
LinphoneChatMessage msg = history[0]; ChatMessage msg = history[0];
if(msg.getFileTransferInformation() != null || msg.getExternalBodyUrl() != null || msg.getAppData() != null ){ if(msg.getFileTransferInformation() != null || msg.getExternalBodyUrl() != null || msg.getAppdata() != null ){
holder.lastMessageView.setBackgroundResource(R.drawable.chat_file_message); holder.lastMessageView.setBackgroundResource(R.drawable.chat_file_message);
time = msg.getTime(); time = msg.getTime();
holder.date.setText(LinphoneUtils.timestampToHumanDate(getActivity(),time,getString(R.string.messages_list_date_format))); holder.date.setText(LinphoneUtils.timestampToHumanDate(getActivity(),time,getString(R.string.messages_list_date_format)));

View file

@ -19,7 +19,7 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/ */
import org.linphone.core.LinphoneProxyConfig; import org.linphone.core.ProxyConfig;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Dialog; import android.app.Dialog;
@ -136,13 +136,13 @@ public class ContactDetailsFragment extends Fragment implements OnClickListener
tv.setSelected(true); tv.setSelected(true);
LinphoneProxyConfig lpc = LinphoneManager.getLc().getDefaultProxyConfig(); ProxyConfig lpc = LinphoneManager.getLc().getDefaultProxyConfig();
if (lpc != null) { if (lpc != null) {
String username = lpc.normalizePhoneNumber(displayednumberOrAddress); String username = lpc.normalizePhoneNumber(displayednumberOrAddress);
value = LinphoneUtils.getFullAddressFromUsername(username); value = LinphoneUtils.getFullAddressFromUsername(username);
} }
String contactAddress = contact.getPresenceModelForUri(noa.getValue()); String contactAddress = contact.getPresenceModelForUriOrTel(noa.getValue());
if (contactAddress != null) { if (contactAddress != null) {
v.findViewById(R.id.friendLinphone).setVisibility(View.VISIBLE); v.findViewById(R.id.friendLinphone).setVisibility(View.VISIBLE);
} }

View file

@ -542,7 +542,7 @@ public class ContactsListFragment extends Fragment implements OnClickListener, O
holder.separator.setVisibility(View.GONE); holder.separator.setVisibility(View.GONE);
} }
if (contact.isInLinphoneFriendList()) { if (contact.isInFriendList()) {
holder.linphoneFriend.setVisibility(View.VISIBLE); holder.linphoneFriend.setVisibility(View.VISIBLE);
} else { } else {
holder.linphoneFriend.setVisibility(View.GONE); holder.linphoneFriend.setVisibility(View.GONE);
@ -595,7 +595,7 @@ public class ContactsListFragment extends Fragment implements OnClickListener, O
holder.delete.setVisibility(View.INVISIBLE); holder.delete.setVisibility(View.INVISIBLE);
} }
/*LinphoneFriend[] friends = LinphoneManager.getLc().getFriendList(); /*Friend[] friends = LinphoneManager.getLc().getFriendsLists();
if (!ContactsManager.getInstance().isContactPresenceDisabled() && friends != null) { if (!ContactsManager.getInstance().isContactPresenceDisabled() && friends != null) {
holder.friendStatus.setVisibility(View.VISIBLE); holder.friendStatus.setVisibility(View.VISIBLE);
PresenceActivityType presenceActivity = friends[0].getPresenceModel().getActivity().getType(); PresenceActivityType presenceActivity = friends[0].getPresenceModel().getActivity().getType();

View file

@ -36,11 +36,11 @@ import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds; import android.provider.ContactsContract.CommonDataKinds;
import android.provider.ContactsContract.Data; import android.provider.ContactsContract.Data;
import org.linphone.core.LinphoneAddress; import org.linphone.core.Address;
import org.linphone.core.LinphoneCore; import org.linphone.core.Core;
import org.linphone.core.LinphoneFriend; import org.linphone.core.Friend;
import org.linphone.core.LinphoneFriendImpl; import org.linphone.core.FriendList;
import org.linphone.core.LinphoneProxyConfig; import org.linphone.core.ProxyConfig;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
import java.util.ArrayList; import java.util.ArrayList;
@ -211,30 +211,31 @@ public class ContactsManager extends ContentObserver {
initializeContactManager(context, contentResolver); initializeContactManager(context, contentResolver);
} }
public synchronized LinphoneContact findContactFromAddress(LinphoneAddress address) { public synchronized LinphoneContact findContactFromAddress(Address address) {
String sipUri = address.asStringUriOnly(); String sipUri = address.asStringUriOnly();
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
LinphoneFriend lf = lc.findFriendByAddress(sipUri); Friend lf = lc.findFriend(address);
if (lf != null) { if (lf != null) {
LinphoneContact contact = (LinphoneContact)((LinphoneFriendImpl)lf).getUserData(); LinphoneContact contact = (LinphoneContact)lf.getUserData();
return contact; return contact;
} }
return null; return null;
} }
public synchronized LinphoneContact findContactFromPhoneNumber(String phoneNumber) { public synchronized LinphoneContact findContactFromPhoneNumber(String phoneNumber) {
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
LinphoneProxyConfig lpc = null; ProxyConfig lpc = null;
if (lc != null) { if (lc != null) {
lpc = lc.getDefaultProxyConfig(); lpc = lc.getDefaultProxyConfig();
} }
if (lpc == null) return null; if (lpc == null) return null;
String normalized = lpc.normalizePhoneNumber(phoneNumber); String normalized = lpc.normalizePhoneNumber(phoneNumber);
LinphoneAddress addr = lpc.normalizeSipUri(normalized); Address addr = lpc.normalizeSipUri(normalized);
LinphoneFriend lf = lc.findFriendByAddress(addr.asStringUriOnly() + ";user=phone"); // Without this, the hashmap inside liblinphone won't find it... addr.setMethodParam(";user=phone");
Friend lf = lc.findFriend(addr); // Without this, the hashmap inside liblinphone won't find it...
if (lf != null) { if (lf != null) {
LinphoneContact contact = (LinphoneContact)((LinphoneFriendImpl)lf).getUserData(); LinphoneContact contact = (LinphoneContact)lf.getUserData();
return contact; return contact;
} }
return null; return null;
@ -248,8 +249,8 @@ public class ContactsManager extends ContentObserver {
sipContacts = c; sipContacts = c;
} }
public synchronized void refreshSipContact(LinphoneFriend lf) { public synchronized void refreshSipContact(Friend lf) {
LinphoneContact contact = (LinphoneContact)((LinphoneFriendImpl)lf).getUserData(); LinphoneContact contact = (LinphoneContact)lf.getUserData();
if (contact != null && !sipContacts.contains(contact)) { if (contact != null && !sipContacts.contains(contact)) {
sipContacts.add(contact); sipContacts.add(contact);
Collections.sort(sipContacts); Collections.sort(sipContacts);
@ -274,29 +275,31 @@ public class ContactsManager extends ContentObserver {
Date contactsTime = new Date(); Date contactsTime = new Date();
androidContactsCache.clear(); androidContactsCache.clear();
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) { if (lc != null) {
for (LinphoneFriend friend : lc.getFriendList()) { for (FriendList list : lc.getFriendsLists()) {
LinphoneContact contact = (LinphoneContact)((LinphoneFriendImpl)friend).getUserData(); for (Friend friend : list.getFriends()) {
if (contact != null) { LinphoneContact contact = (LinphoneContact) friend.getUserData();
contact.clearAddresses(); if (contact != null) {
contacts.add(contact); contact.clearAddresses();
if (contact.getAndroidId() != null) {
androidContactsCache.put(contact.getAndroidId(), contact);
}
} else {
if (friend.getRefKey() != null) {
// Friend has a refkey and but no LinphoneContact => represents a native contact stored in db from a previous version of Linphone, remove it
lc.removeFriend(friend);
} else {
// No refkey so it's a standalone contact
contact = new LinphoneContact();
contact.setFriend(friend);
contact.refresh();
if (contact.hasAddress()) {
sipContacts.add(contact);
}
contacts.add(contact); contacts.add(contact);
if (contact.getAndroidId() != null) {
androidContactsCache.put(contact.getAndroidId(), contact);
}
} else {
if (friend.getRefKey() != null) {
// Friend has a refkey and but no LinphoneContact => represents a native contact stored in db from a previous version of Linphone, remove it
//lc.removeFriend(friend); //TODO FIXME
} else {
// No refkey so it's a standalone contact
contact = new LinphoneContact();
contact.setFriend(friend);
contact.refresh();
if (contact.hasAddress()) {
sipContacts.add(contact);
}
contacts.add(contact);
}
} }
} }
} }
@ -356,7 +359,7 @@ public class ContactsManager extends ContentObserver {
String id = contact.getAndroidId(); String id = contact.getAndroidId();
if (id != null && !nativeIds.contains(id)) { if (id != null && !nativeIds.contains(id)) {
// Has been removed since last fetch // Has been removed since last fetch
lc.removeFriend(contact.getLinphoneFriend()); //lc.removeFriend(contact.getFriend()); //TODO FIXME
contacts.remove(contact); contacts.remove(contact);
} }
} }
@ -405,8 +408,8 @@ public class ContactsManager extends ContentObserver {
Log.i("[ContactsManager] Step 2 for " + contacts.size() + " contacts: " + time + " elapsed since starting"); Log.i("[ContactsManager] Step 2 for " + contacts.size() + " contacts: " + time + " elapsed since starting");
for (LinphoneContact contact : contacts) { for (LinphoneContact contact : contacts) {
// Create the LinphoneFriends matching the native contacts // Create the Friends matching the native contacts
contact.createOrUpdateLinphoneFriendFromNativeContact(); contact.createOrUpdateFriendFromNativeContact();
} }
timeElapsed = (new Date()).getTime() - contactsTime.getTime(); timeElapsed = (new Date()).getTime() - contactsTime.getTime();
time = String.format("%02d:%02d", time = String.format("%02d:%02d",
@ -417,7 +420,7 @@ public class ContactsManager extends ContentObserver {
androidContactsCache.clear(); androidContactsCache.clear();
} else { } else {
Log.w("[Permission] Read contacts permission wasn't granted, only fetch LinphoneFriends"); Log.w("[Permission] Read contacts permission wasn't granted, only fetch Friends");
} }
Collections.sort(contacts); Collections.sort(contacts);
@ -427,9 +430,9 @@ public class ContactsManager extends ContentObserver {
if (LinphonePreferences.instance() != null && LinphonePreferences.instance().isFriendlistsubscriptionEnabled()) { if (LinphonePreferences.instance() != null && LinphonePreferences.instance().isFriendlistsubscriptionEnabled()) {
if (getString(R.string.rls_uri) != null) { if (getString(R.string.rls_uri) != null) {
LinphoneManager.getLc().getFriendLists()[0].setRLSUri(getString(R.string.rls_uri)); LinphoneManager.getLc().getFriendsLists()[0].setRlsUri(getString(R.string.rls_uri));
} }
LinphoneManager.getLc().getFriendLists()[0].updateSubscriptions(); LinphoneManager.getLc().getFriendsLists()[0].updateSubscriptions();
} }
for (ContactsUpdatedListener listener : contactsUpdatedListeners) { for (ContactsUpdatedListener listener : contactsUpdatedListeners) {
listener.onContactsUpdated(); listener.onContactsUpdated();

View file

@ -31,7 +31,7 @@ import android.view.ViewGroup;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import org.linphone.core.LinphoneCore; import org.linphone.core.Core;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
import org.linphone.ui.AddressAware; import org.linphone.ui.AddressAware;
import org.linphone.ui.AddressText; import org.linphone.ui.AddressText;
@ -69,7 +69,7 @@ public class DialerFragment extends Fragment {
mCall.setImageResource(R.drawable.call_add); mCall.setImageResource(R.drawable.call_add);
} }
} else { } else {
if (LinphoneManager.getLcIfManagerNotDestroyedOrNull() != null && LinphoneManager.getLcIfManagerNotDestroyedOrNull().getVideoAutoInitiatePolicy()) { if (LinphoneManager.getLcIfManagerNotDestroyedOrNull() != null && LinphoneManager.getLcIfManagerNotDestroyedOrNull().getVideoActivationPolicy().getAutomaticallyInitiate()) {
mCall.setImageResource(R.drawable.call_video_start); mCall.setImageResource(R.drawable.call_video_start);
} else { } else {
mCall.setImageResource(R.drawable.call_audio_start); mCall.setImageResource(R.drawable.call_audio_start);
@ -99,7 +99,7 @@ public class DialerFragment extends Fragment {
transferListener = new OnClickListener() { transferListener = new OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
LinphoneCore lc = LinphoneManager.getLc(); Core lc = LinphoneManager.getLc();
if (lc.getCurrentCall() == null) { if (lc.getCurrentCall() == null) {
return; return;
} }
@ -184,7 +184,7 @@ public class DialerFragment extends Fragment {
return; return;
} }
isCallTransferOngoing = LinphoneActivity.instance().isCallTransfer(); isCallTransferOngoing = LinphoneActivity.instance().isCallTransfer();
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc == null) { if (lc == null) {
return; return;
} }
@ -201,7 +201,7 @@ public class DialerFragment extends Fragment {
mAddContact.setImageResource(R.drawable.call_alt_back); mAddContact.setImageResource(R.drawable.call_alt_back);
mAddContact.setOnClickListener(cancelListener); mAddContact.setOnClickListener(cancelListener);
} else { } else {
if (LinphoneManager.getLc().getVideoAutoInitiatePolicy()) { if (LinphoneManager.getLc().getVideoActivationPolicy().getAutomaticallyInitiate()) {
mCall.setImageResource(R.drawable.call_video_start); mCall.setImageResource(R.drawable.call_video_start);
} else { } else {
mCall.setImageResource(R.drawable.call_audio_start); mCall.setImageResource(R.drawable.call_audio_start);

View file

@ -19,8 +19,8 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/ */
import org.linphone.core.LinphoneCore; import org.linphone.core.Core;
import org.linphone.core.LinphoneCoreFactory; import org.linphone.core.Factory;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
import android.content.Context; import android.content.Context;
@ -38,9 +38,9 @@ public class DozeReceiver extends android.content.BroadcastReceiver {
if (!LinphoneService.isReady()) return; if (!LinphoneService.isReady()) return;
boolean isDebugEnabled = LinphonePreferences.instance().isDebugEnabled(); boolean isDebugEnabled = LinphonePreferences.instance().isDebugEnabled();
LinphoneCoreFactory.instance().enableLogCollection(isDebugEnabled); Factory.instance().enableLogCollection(isDebugEnabled);
LinphoneCoreFactory.instance().setDebugMode(isDebugEnabled, context.getString(R.string.app_name)); Factory.instance().setDebugMode(isDebugEnabled, context.getString(R.string.app_name));
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc == null) return; if (lc == null) return;
pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);

View file

@ -29,9 +29,9 @@ import android.view.ViewGroup;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import org.linphone.core.LinphoneAddress; import org.linphone.core.Address;
import org.linphone.core.LinphoneCoreException; import org.linphone.core.CoreException;
import org.linphone.core.LinphoneCoreFactory; import org.linphone.core.Factory;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
public class HistoryDetailFragment extends Fragment implements OnClickListener { public class HistoryDetailFragment extends Fragment implements OnClickListener {
@ -103,12 +103,8 @@ public class HistoryDetailFragment extends Fragment implements OnClickListener {
Long longDate = Long.parseLong(callDate); Long longDate = Long.parseLong(callDate);
date.setText(LinphoneUtils.timestampToHumanDate(getActivity(),longDate,getString(R.string.history_detail_date_format))); date.setText(LinphoneUtils.timestampToHumanDate(getActivity(),longDate,getString(R.string.history_detail_date_format)));
LinphoneAddress lAddress = null; Address lAddress = null;
try { lAddress = Factory.instance().createAddress(sipUri);
lAddress = LinphoneCoreFactory.instance().createLinphoneAddress(sipUri);
} catch (LinphoneCoreException e) {
Log.e(e);
}
if (lAddress != null) { if (lAddress != null) {
contactAddress.setText(lAddress.asStringUriOnly()); contactAddress.setText(lAddress.asStringUriOnly());
@ -163,13 +159,9 @@ public class HistoryDetailFragment extends Fragment implements OnClickListener {
LinphoneActivity.instance().displayChat(sipUri, null, null); LinphoneActivity.instance().displayChat(sipUri, null, null);
} else if (id == R.id.add_contact) { } else if (id == R.id.add_contact) {
String uri = sipUri; String uri = sipUri;
LinphoneAddress addr = null; Address addr = null;
try { addr = Factory.instance().createAddress(sipUri);
addr = LinphoneCoreFactory.instance().createLinphoneAddress(sipUri); uri = addr.asStringUriOnly();
uri = addr.asStringUriOnly();
} catch (LinphoneCoreException e) {
Log.e(e);
}
if (addr != null && addr.getDisplayName() != null) if (addr != null && addr.getDisplayName() != null)
LinphoneActivity.instance().displayContactsForEdition(addr.asStringUriOnly(), addr.getDisplayName()); LinphoneActivity.instance().displayContactsForEdition(addr.asStringUriOnly(), addr.getDisplayName());
else else

View file

@ -25,10 +25,11 @@ import java.util.Arrays;
import java.util.Calendar; import java.util.Calendar;
import java.util.List; import java.util.List;
import org.linphone.core.CallDirection; import org.linphone.core.Call;
import org.linphone.core.LinphoneAddress; import org.linphone.core.Call.Dir;
import org.linphone.core.LinphoneCallLog; import org.linphone.core.Address;
import org.linphone.core.LinphoneCallLog.CallStatus; import org.linphone.core.CallLog;
import org.linphone.core.CallLog.CallStatus;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Dialog; import android.app.Dialog;
@ -62,7 +63,7 @@ public class HistoryListFragment extends Fragment implements OnClickListener, On
private View allCallsSelected, missedCallsSelected; private View allCallsSelected, missedCallsSelected;
private LinearLayout editList, topBar; private LinearLayout editList, topBar;
private boolean onlyDisplayMissedCalls, isEditMode; private boolean onlyDisplayMissedCalls, isEditMode;
private List<LinphoneCallLog> mLogs; private List<CallLog> mLogs;
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
@ -123,11 +124,11 @@ public class HistoryListFragment extends Fragment implements OnClickListener, On
public void displayFirstLog(){ public void displayFirstLog(){
if (mLogs != null && mLogs.size() > 0) { if (mLogs != null && mLogs.size() > 0) {
LinphoneCallLog log = mLogs.get(0); CallLog log = mLogs.get(0);
if (log.getDirection() == CallDirection.Incoming) { if (log.getDir() == Call.Dir.Incoming) {
LinphoneActivity.instance().displayHistoryDetail(mLogs.get(0).getFrom().toString(), mLogs.get(0)); LinphoneActivity.instance().displayHistoryDetail(mLogs.get(0).getFromAddress().toString(), mLogs.get(0));
} else { } else {
LinphoneActivity.instance().displayHistoryDetail(mLogs.get(0).getTo().toString(), mLogs.get(0)); LinphoneActivity.instance().displayHistoryDetail(mLogs.get(0).getToAddress().toString(), mLogs.get(0));
} }
} else { } else {
LinphoneActivity.instance().displayEmptyFragment(); LinphoneActivity.instance().displayEmptyFragment();
@ -138,7 +139,7 @@ public class HistoryListFragment extends Fragment implements OnClickListener, On
int size = historyList.getAdapter().getCount(); int size = historyList.getAdapter().getCount();
for(int i=0; i<size; i++) { for(int i=0; i<size; i++) {
if(historyList.isItemChecked(i)){ if(historyList.isItemChecked(i)){
LinphoneCallLog log = mLogs.get(i); CallLog log = mLogs.get(i);
LinphoneManager.getLc().removeCallLog(log); LinphoneManager.getLc().removeCallLog(log);
} }
} }
@ -167,8 +168,8 @@ public class HistoryListFragment extends Fragment implements OnClickListener, On
private void removeNotMissedCallsFromLogs() { private void removeNotMissedCallsFromLogs() {
if (onlyDisplayMissedCalls) { if (onlyDisplayMissedCalls) {
List<LinphoneCallLog> missedCalls = new ArrayList<LinphoneCallLog>(); List<CallLog> missedCalls = new ArrayList<CallLog>();
for (LinphoneCallLog log : mLogs) { for (CallLog log : mLogs) {
if (log.getStatus() == CallStatus.Missed) { if (log.getStatus() == CallStatus.Missed) {
missedCalls.add(log); missedCalls.add(log);
} }
@ -323,7 +324,7 @@ public class HistoryListFragment extends Fragment implements OnClickListener, On
@Override @Override
public void onItemClick(AdapterView<?> adapter, View view, int position, long id) { public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {
if (isEditMode) { if (isEditMode) {
LinphoneCallLog log = mLogs.get(position); CallLog log = mLogs.get(position);
LinphoneManager.getLc().removeCallLog(log); LinphoneManager.getLc().removeCallLog(log);
mLogs = Arrays.asList(LinphoneManager.getLc().getCallLogs()); mLogs = Arrays.asList(LinphoneManager.getLc().getCallLogs());
} }
@ -428,9 +429,9 @@ public class HistoryListFragment extends Fragment implements OnClickListener, On
if (mLogs == null || mLogs.size() < position) return view; if (mLogs == null || mLogs.size() < position) return view;
final LinphoneCallLog log = mLogs.get(position); final CallLog log = mLogs.get(position);
long timestamp = log.getTimestamp(); long timestamp = log.getStartDate();
LinphoneAddress address; Address address;
holder.contact.setSelected(true); // For automated horizontal scrolling of long texts holder.contact.setSelected(true); // For automated horizontal scrolling of long texts
@ -441,8 +442,8 @@ public class HistoryListFragment extends Fragment implements OnClickListener, On
separatorText.setText(timestampToHumanDate(logTime)); separatorText.setText(timestampToHumanDate(logTime));
if (position > 0) { if (position > 0) {
LinphoneCallLog previousLog = mLogs.get(position-1); CallLog previousLog = mLogs.get(position-1);
long previousTimestamp = previousLog.getTimestamp(); long previousTimestamp = previousLog.getStartDate();
Calendar previousLogTime = Calendar.getInstance(); Calendar previousLogTime = Calendar.getInstance();
previousLogTime.setTimeInMillis(previousTimestamp); previousLogTime.setTimeInMillis(previousTimestamp);
@ -455,15 +456,15 @@ public class HistoryListFragment extends Fragment implements OnClickListener, On
separator.setVisibility(View.VISIBLE); separator.setVisibility(View.VISIBLE);
} }
if (log.getDirection() == CallDirection.Incoming) { if (log.getDir() == Call.Dir.Incoming) {
address = log.getFrom(); address = log.getFromAddress();
if (log.getStatus() == CallStatus.Missed) { if (log.getStatus() == CallStatus.Missed) {
holder.callDirection.setImageResource(R.drawable.call_status_missed); holder.callDirection.setImageResource(R.drawable.call_status_missed);
} else { } else {
holder.callDirection.setImageResource(R.drawable.call_status_incoming); holder.callDirection.setImageResource(R.drawable.call_status_incoming);
} }
} else { } else {
address = log.getTo(); address = log.getToAddress();
holder.callDirection.setImageResource(R.drawable.call_status_outgoing); holder.callDirection.setImageResource(R.drawable.call_status_outgoing);
} }
@ -528,12 +529,12 @@ public class HistoryListFragment extends Fragment implements OnClickListener, On
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if (LinphoneActivity.isInstanciated()) { if (LinphoneActivity.isInstanciated()) {
LinphoneCallLog log = mLogs.get(position); CallLog log = mLogs.get(position);
LinphoneAddress address; Address address;
if (log.getDirection() == CallDirection.Incoming) { if (log.getDir() == Call.Dir.Incoming) {
address = log.getFrom(); address = log.getFromAddress();
} else { } else {
address = log.getTo(); address = log.getToAddress();
} }
LinphoneActivity.instance().setAddresGoToDialerAndCall(address.asStringUriOnly(), address.getDisplayName(), null); LinphoneActivity.instance().setAddresGoToDialerAndCall(address.asStringUriOnly(), address.getDisplayName(), null);
} }

View file

@ -36,7 +36,7 @@ public class HookReceiver extends BroadcastReceiver {
if(b){ if(b){
//handset on //handset on
Log.i(" ======>>>>>> HookReceiver - handset ON"); Log.i(" ======>>>>>> HookReceiver - handset ON");
LinphoneManager.getLc().enableSpeaker(false); LinphoneManager.getInstance().enableSpeaker(false);
if(!LinphoneManager.getInstance().isHansetModeOn()) if(!LinphoneManager.getInstance().isHansetModeOn())
LinphoneManager.getInstance().setHandsetMode(true); LinphoneManager.getInstance().setHandsetMode(true);
@ -44,7 +44,7 @@ public class HookReceiver extends BroadcastReceiver {
}else{ }else{
//handset off //handset off
Log.i(" ======>>>>>> HookReceiver - handset OFF"); Log.i(" ======>>>>>> HookReceiver - handset OFF");
LinphoneManager.getLc().enableSpeaker(true); LinphoneManager.getInstance().enableSpeaker(true);
LinphoneManager.getInstance().setHandsetMode(false); LinphoneManager.getInstance().setHandsetMode(false);
} }
} }

View file

@ -20,8 +20,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/ */
import org.linphone.compatibility.Compatibility; import org.linphone.compatibility.Compatibility;
import org.linphone.core.LinphoneCore; import org.linphone.core.Core;
import org.linphone.core.LinphoneCoreFactory; import org.linphone.core.Factory;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
import android.app.AlarmManager; import android.app.AlarmManager;
@ -41,9 +41,9 @@ public class KeepAliveReceiver extends BroadcastReceiver {
return; return;
} else { } else {
boolean isDebugEnabled = LinphonePreferences.instance().isDebugEnabled(); boolean isDebugEnabled = LinphonePreferences.instance().isDebugEnabled();
LinphoneCoreFactory.instance().enableLogCollection(isDebugEnabled); Factory.instance().enableLogCollection(isDebugEnabled);
LinphoneCoreFactory.instance().setDebugMode(isDebugEnabled, context.getString(R.string.app_name)); Factory.instance().setDebugMode(isDebugEnabled, context.getString(R.string.app_name));
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc == null) return; if (lc == null) return;
String action = intent.getAction(); String action = intent.getAction();

View file

@ -66,21 +66,21 @@ import org.linphone.LinphoneManager.AddressType;
import org.linphone.assistant.AssistantActivity; import org.linphone.assistant.AssistantActivity;
import org.linphone.assistant.RemoteProvisioningLoginActivity; import org.linphone.assistant.RemoteProvisioningLoginActivity;
import org.linphone.compatibility.Compatibility; import org.linphone.compatibility.Compatibility;
import org.linphone.core.CallDirection; import org.linphone.core.Call.Dir;
import org.linphone.core.LinphoneAddress; import org.linphone.core.Address;
import org.linphone.core.LinphoneAuthInfo; import org.linphone.core.AuthInfo;
import org.linphone.core.LinphoneCall; import org.linphone.core.Call;
import org.linphone.core.LinphoneCall.State; import org.linphone.core.Call.State;
import org.linphone.core.LinphoneCallLog; import org.linphone.core.CallLog;
import org.linphone.core.LinphoneCallLog.CallStatus; import org.linphone.core.CallLog.CallStatus;
import org.linphone.core.LinphoneChatMessage; import org.linphone.core.ChatMessage;
import org.linphone.core.LinphoneChatRoom; import org.linphone.core.ChatRoom;
import org.linphone.core.LinphoneCore; import org.linphone.core.Core;
import org.linphone.core.LinphoneCore.RegistrationState; import org.linphone.core.Core.RegistrationState;
import org.linphone.core.LinphoneCoreException; import org.linphone.core.CoreException;
import org.linphone.core.LinphoneCoreFactory; import org.linphone.core.Factory;
import org.linphone.core.LinphoneCoreListenerBase; import org.linphone.core.CoreListenerStub;
import org.linphone.core.LinphoneProxyConfig; import org.linphone.core.ProxyConfig;
import org.linphone.core.Reason; import org.linphone.core.Reason;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
import org.linphone.purchase.InAppPurchaseActivity; import org.linphone.purchase.InAppPurchaseActivity;
@ -130,7 +130,7 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
private boolean emptyFragment = false; private boolean emptyFragment = false;
private boolean isTrialAccount = false; private boolean isTrialAccount = false;
private OrientationEventListener mOrientationHelper; private OrientationEventListener mOrientationHelper;
private LinphoneCoreListenerBase mListener; private CoreListenerStub mListener;
private LinearLayout mTabBar; private LinearLayout mTabBar;
private DrawerLayout sideMenu; private DrawerLayout sideMenu;
@ -212,16 +212,16 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
currentFragment = (FragmentsAvailable) savedInstanceState.getSerializable("currentFragment"); currentFragment = (FragmentsAvailable) savedInstanceState.getSerializable("currentFragment");
} }
mListener = new LinphoneCoreListenerBase(){ mListener = new CoreListenerStub(){
@Override @Override
public void messageReceived(LinphoneCore lc, LinphoneChatRoom cr, LinphoneChatMessage message) { public void onMessageReceived(Core lc, ChatRoom cr, ChatMessage message) {
displayMissedChats(getUnreadMessageCount()); displayMissedChats(getUnreadMessageCount());
} }
@Override @Override
public void registrationState(LinphoneCore lc, LinphoneProxyConfig proxy, LinphoneCore.RegistrationState state, String smessage) { public void onRegistrationStateChanged(Core lc, ProxyConfig proxy, Core.RegistrationState state, String smessage) {
LinphoneAuthInfo authInfo = lc.findAuthInfo(proxy.getIdentity(), proxy.getRealm(), proxy.getDomain()); AuthInfo authInfo = lc.findAuthInfo(proxy.getRealm(), proxy.getIdentityAddress().getUsername(), proxy.getDomain());
if (state.equals(RegistrationState.RegistrationCleared)) { if (state.equals(RegistrationState.Cleared)) {
if (lc != null) { if (lc != null) {
if (authInfo != null) if (authInfo != null)
lc.removeAuthInfo(authInfo); lc.removeAuthInfo(authInfo);
@ -232,14 +232,14 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
if(getResources().getBoolean(R.bool.use_phone_number_validation) if(getResources().getBoolean(R.bool.use_phone_number_validation)
&& authInfo != null && authInfo.getDomain().equals(getString(R.string.default_domain))) { && authInfo != null && authInfo.getDomain().equals(getString(R.string.default_domain))) {
if (state.equals(RegistrationState.RegistrationOk)) { if (state.equals(RegistrationState.Ok)) {
LinphoneManager.getInstance().isAccountWithAlias(); LinphoneManager.getInstance().isAccountWithAlias();
} }
} }
if(state.equals(RegistrationState.RegistrationFailed) && newProxyConfig) { if(state.equals(RegistrationState.Failed) && newProxyConfig) {
newProxyConfig = false; newProxyConfig = false;
if (proxy.getError() == Reason.BadCredentials) { if (proxy.getError() == Reason.Forbidden) {
//displayCustomToast(getString(R.string.error_bad_credentials), Toast.LENGTH_LONG); //displayCustomToast(getString(R.string.error_bad_credentials), Toast.LENGTH_LONG);
} }
if (proxy.getError() == Reason.Unauthorized) { if (proxy.getError() == Reason.Unauthorized) {
@ -252,12 +252,12 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
} }
@Override @Override
public void callState(LinphoneCore lc, LinphoneCall call, LinphoneCall.State state, String message) { public void onCallStateChanged(Core lc, Call call, Call.State state, String message) {
if (state == State.IncomingReceived) { if (state == State.IncomingReceived) {
startActivity(new Intent(LinphoneActivity.instance(), CallIncomingActivity.class)); startActivity(new Intent(LinphoneActivity.instance(), CallIncomingActivity.class));
} else if (state == State.OutgoingInit || state == State.OutgoingProgress) { } else if (state == State.OutgoingInit || state == State.OutgoingProgress) {
startActivity(new Intent(LinphoneActivity.instance(), CallOutgoingActivity.class)); startActivity(new Intent(LinphoneActivity.instance(), CallOutgoingActivity.class));
} else if (state == State.CallEnd || state == State.Error || state == State.CallReleased) { } else if (state == State.End || state == State.Error || state == State.Released) {
resetClassicMenuLayoutAndGoBackToCallIfStillRunning(); resetClassicMenuLayoutAndGoBackToCallIfStillRunning();
} }
@ -536,22 +536,16 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
} }
} }
public void displayHistoryDetail(String sipUri, LinphoneCallLog log) { public void displayHistoryDetail(String sipUri, CallLog log) {
LinphoneAddress lAddress; Address lAddress;
try { lAddress = Factory.instance().createAddress(sipUri);
lAddress = LinphoneCoreFactory.instance().createLinphoneAddress(sipUri);
} catch (LinphoneCoreException e) {
Log.e("Cannot display history details",e);
//TODO display error message
return;
}
LinphoneContact c = ContactsManager.getInstance().findContactFromAddress(lAddress); LinphoneContact c = ContactsManager.getInstance().findContactFromAddress(lAddress);
String displayName = c != null ? c.getFullName() : LinphoneUtils.getAddressDisplayName(sipUri); String displayName = c != null ? c.getFullName() : LinphoneUtils.getAddressDisplayName(sipUri);
String pictureUri = c != null && c.getPhotoUri() != null ? c.getPhotoUri().toString() : null; String pictureUri = c != null && c.getPhotoUri() != null ? c.getPhotoUri().toString() : null;
String status; String status;
if (log.getDirection() == CallDirection.Outgoing) { if (log.getDir() == Call.Dir.Outgoing) {
status = getString(R.string.outgoing); status = getString(R.string.outgoing);
} else { } else {
if (log.getStatus() == CallStatus.Missed) { if (log.getStatus() == CallStatus.Missed) {
@ -561,8 +555,8 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
} }
} }
String callTime = secondsToDisplayableString(log.getCallDuration()); String callTime = secondsToDisplayableString(log.getDuration());
String callDate = String.valueOf(log.getTimestamp()); String callDate = String.valueOf(log.getStartDate());
Fragment fragment2 = getFragmentManager().findFragmentById(R.id.fragmentContainer2); Fragment fragment2 = getFragmentManager().findFragmentById(R.id.fragmentContainer2);
if (fragment2 != null && fragment2.isVisible() && currentFragment == FragmentsAvailable.HISTORY_DETAIL) { if (fragment2 != null && fragment2.isVisible() && currentFragment == FragmentsAvailable.HISTORY_DETAIL) {
@ -645,8 +639,8 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
public int getUnreadMessageCount() { public int getUnreadMessageCount() {
int count = 0; int count = 0;
LinphoneChatRoom[] chats = LinphoneManager.getLc().getChatRooms(); ChatRoom[] chats = LinphoneManager.getLc().getChatRooms();
for (LinphoneChatRoom chatroom : chats) { for (ChatRoom chatroom : chats) {
count += chatroom.getUnreadMessagesCount(); count += chatroom.getUnreadMessagesCount();
} }
return count; return count;
@ -661,15 +655,9 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
String thumbnailUri = null; String thumbnailUri = null;
String displayName = null; String displayName = null;
LinphoneAddress lAddress = null; Address lAddress = null;
if(sipUri != null) { if(sipUri != null) {
try { lAddress = LinphoneManager.getLc().interpretUrl(sipUri);
lAddress = LinphoneManager.getLc().interpretUrl(sipUri);
} catch (LinphoneCoreException e) {
//TODO display error message
Log.e("Cannot display chat", e);
return;
}
LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(lAddress); LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(lAddress);
displayName = contact != null ? contact.getFullName() : null; displayName = contact != null ? contact.getFullName() : null;
@ -842,20 +830,20 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
} }
static class ChatRoomContainer{ static class ChatRoomContainer{
private LinphoneChatRoom mCr; private ChatRoom mCr;
long mTime; long mTime;
static public ChatRoomContainer createChatroomContainer(LinphoneChatRoom chatRoom) { static public ChatRoomContainer createChatroomContainer(ChatRoom chatRoom) {
if (chatRoom.getHistorySize() <= 0) return null; if (chatRoom.getHistorySize() <= 0) return null;
return new ChatRoomContainer(chatRoom); return new ChatRoomContainer(chatRoom);
} }
public ChatRoomContainer(LinphoneChatRoom chatroom){ public ChatRoomContainer(ChatRoom chatroom){
mCr = chatroom; mCr = chatroom;
LinphoneChatMessage[] lastMsg = chatroom.getHistory(1); ChatMessage[] lastMsg = chatroom.getHistory(1);
if (lastMsg != null && lastMsg.length > 0 && lastMsg[0] != null) { if (lastMsg != null && lastMsg.length > 0 && lastMsg[0] != null) {
mTime = lastMsg[0].getTime(); mTime = lastMsg[0].getTime();
}else mTime = 0; }else mTime = 0;
} }
LinphoneChatRoom getChatRoom(){ ChatRoom getChatRoom(){
return mCr; return mCr;
} }
long getTime(){ long getTime(){
@ -865,10 +853,10 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
public List<String> getChatList() { public List<String> getChatList() {
ArrayList<String> chatList = new ArrayList<String>(); ArrayList<String> chatList = new ArrayList<String>();
LinphoneChatRoom[] chats = LinphoneManager.getLc().getChatRooms(); ChatRoom[] chats = LinphoneManager.getLc().getChatRooms();
List<ChatRoomContainer> rooms = new ArrayList<ChatRoomContainer>(); List<ChatRoomContainer> rooms = new ArrayList<ChatRoomContainer>();
for (LinphoneChatRoom chatroom : chats) { for (ChatRoom chatroom : chats) {
ChatRoomContainer crc = createChatroomContainer(chatroom); ChatRoomContainer crc = createChatroomContainer(chatroom);
if (crc != null) rooms.add(crc); if (crc != null) rooms.add(crc);
} }
@ -898,7 +886,7 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
} }
public void removeFromChatList(String sipUri) { public void removeFromChatList(String sipUri) {
LinphoneChatRoom chatroom = LinphoneManager.getLc().getOrCreateChatRoom(sipUri); ChatRoom chatroom = LinphoneManager.getLc().getChatRoomFromUri(sipUri);
chatroom.deleteHistory(); chatroom.deleteHistory();
} }
@ -974,7 +962,7 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
@Override @Override
public void onClick(View view) { public void onClick(View view) {
String newPassword = ((EditText) dialog.findViewById(R.id.password)).getText().toString(); String newPassword = ((EditText) dialog.findViewById(R.id.password)).getText().toString();
LinphoneAuthInfo authInfo = LinphoneCoreFactory.instance().createAuthInfo(username, null, newPassword, null, realm, domain); AuthInfo authInfo = Factory.instance().createAuthInfo(username, null, newPassword, null, realm, domain);
LinphoneManager.getLc().addAuthInfo(authInfo); LinphoneManager.getLc().addAuthInfo(authInfo);
LinphoneManager.getLc().refreshRegisters(); LinphoneManager.getLc().refreshRegisters();
dialog.dismiss(); dialog.dismiss();
@ -1005,7 +993,7 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
LinphoneManager.getInstance().newOutgoingCall(address); LinphoneManager.getInstance().newOutgoingCall(address);
} }
public void startIncallActivity(LinphoneCall currentCall) { public void startIncallActivity(Call currentCall) {
Intent intent = new Intent(this, CallActivity.class); Intent intent = new Intent(this, CallActivity.class);
startOrientationSensor(); startOrientationSensor();
startActivityForResult(intent, CALL_ACTIVITY); startActivityForResult(intent, CALL_ACTIVITY);
@ -1049,11 +1037,11 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
Log.d("Phone orientation changed to ", degrees); Log.d("Phone orientation changed to ", degrees);
int rotation = (360 - degrees) % 360; int rotation = (360 - degrees) % 360;
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) { if (lc != null) {
lc.setDeviceRotation(rotation); lc.setDeviceRotation(rotation);
LinphoneCall currentCall = lc.getCurrentCall(); Call currentCall = lc.getCurrentCall();
if (currentCall != null && currentCall.cameraEnabled() && currentCall.getCurrentParams().getVideoEnabled()) { if (currentCall != null && currentCall.cameraEnabled() && currentCall.getCurrentParams().videoEnabled()) {
lc.updateCall(currentCall, null); lc.updateCall(currentCall, null);
} }
} }
@ -1079,8 +1067,8 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
} }
if (LinphoneManager.isInstanciated() && LinphoneManager.getLc().getCallsNb() > 0) { if (LinphoneManager.isInstanciated() && LinphoneManager.getLc().getCallsNb() > 0) {
LinphoneCall call = LinphoneManager.getLc().getCalls()[0]; Call call = LinphoneManager.getLc().getCalls()[0];
if (call.getState() == LinphoneCall.State.IncomingReceived) { if (call.getState() == Call.State.IncomingReceived) {
startActivity(new Intent(LinphoneActivity.this, CallIncomingActivity.class)); startActivity(new Intent(LinphoneActivity.this, CallIncomingActivity.class));
} else { } else {
startIncallActivity(call); startIncallActivity(call);
@ -1166,7 +1154,7 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
protected void onPause() { protected void onPause() {
getIntent().putExtra("PreviousActivity", 0); getIntent().putExtra("PreviousActivity", 0);
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) { if (lc != null) {
lc.removeListener(mListener); lc.removeListener(mListener);
} }
@ -1378,7 +1366,7 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
startService(new Intent(Intent.ACTION_MAIN).setClass(this, LinphoneService.class)); startService(new Intent(Intent.ACTION_MAIN).setClass(this, LinphoneService.class));
} }
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) { if (lc != null) {
lc.addListener(mListener); lc.addListener(mListener);
if (!LinphoneService.instance().displayServiceNotification()) { if (!LinphoneService.instance().displayServiceNotification()) {
@ -1411,12 +1399,12 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
if (getIntent().getIntExtra("PreviousActivity", 0) != CALL_ACTIVITY && !doNotGoToCallActivity) { if (getIntent().getIntExtra("PreviousActivity", 0) != CALL_ACTIVITY && !doNotGoToCallActivity) {
if (LinphoneManager.getLc().getCalls().length > 0) { if (LinphoneManager.getLc().getCalls().length > 0) {
LinphoneCall call = LinphoneManager.getLc().getCalls()[0]; Call call = LinphoneManager.getLc().getCalls()[0];
LinphoneCall.State callState = call.getState(); Call.State onCallStateChanged = call.getState();
if (callState == State.IncomingReceived) { if (onCallStateChanged == State.IncomingReceived) {
startActivity(new Intent(this, CallIncomingActivity.class)); startActivity(new Intent(this, CallIncomingActivity.class));
} else if (callState == State.OutgoingInit || callState == State.OutgoingProgress || callState == State.OutgoingRinging) { } else if (onCallStateChanged == State.OutgoingInit || onCallStateChanged == State.OutgoingProgress || onCallStateChanged == State.OutgoingRinging) {
startActivity(new Intent(this, CallOutgoingActivity.class)); startActivity(new Intent(this, CallOutgoingActivity.class));
} else { } else {
startIncallActivity(call); startIncallActivity(call);
@ -1496,7 +1484,7 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
displayInapp(); displayInapp();
} else if (extras != null && extras.getBoolean("Notification", false)) { } else if (extras != null && extras.getBoolean("Notification", false)) {
if (LinphoneManager.getLc().getCallsNb() > 0) { if (LinphoneManager.getLc().getCallsNb() > 0) {
LinphoneCall call = LinphoneManager.getLc().getCalls()[0]; Call call = LinphoneManager.getLc().getCalls()[0];
startIncallActivity(call); startIncallActivity(call);
} }
}else if (extras != null && extras.getBoolean("StartCall", false)) { }else if (extras != null && extras.getBoolean("StartCall", false)) {
@ -1528,8 +1516,8 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
} }
if (LinphoneManager.getLc().getCalls().length > 0) { if (LinphoneManager.getLc().getCalls().length > 0) {
// If a call is ringing, start incomingcallactivity // If a call is ringing, start incomingcallactivity
Collection<LinphoneCall.State> incoming = new ArrayList<LinphoneCall.State>(); Collection<Call.State> incoming = new ArrayList<Call.State>();
incoming.add(LinphoneCall.State.IncomingReceived); incoming.add(Call.State.IncomingReceived);
if (LinphoneUtils.getCallsInState(LinphoneManager.getLc(), incoming).size() > 0) { if (LinphoneUtils.getCallsInState(LinphoneManager.getLc(), incoming).size() > 0) {
if (CallActivity.isInstanciated()) { if (CallActivity.isInstanciated()) {
CallActivity.instance().startIncomingCallActivity(); CallActivity.instance().startIncomingCallActivity();
@ -1629,13 +1617,13 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
}); });
} }
private int getStatusIconResource(LinphoneCore.RegistrationState state) { private int getStatusIconResource(Core.RegistrationState state) {
try { try {
if (state == RegistrationState.RegistrationOk) { if (state == RegistrationState.Ok) {
return R.drawable.led_connected; return R.drawable.led_connected;
} else if (state == RegistrationState.RegistrationProgress) { } else if (state == RegistrationState.Progress) {
return R.drawable.led_inprogress; return R.drawable.led_inprogress;
} else if (state == RegistrationState.RegistrationFailed) { } else if (state == RegistrationState.Failed) {
return R.drawable.led_error; return R.drawable.led_error;
} else { } else {
return R.drawable.led_disconnected; return R.drawable.led_disconnected;
@ -1654,7 +1642,7 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
TextView displayName = (TextView) defaultAccount.findViewById(R.id.main_account_display_name); TextView displayName = (TextView) defaultAccount.findViewById(R.id.main_account_display_name);
LinphoneProxyConfig proxy = LinphoneManager.getLc().getDefaultProxyConfig(); ProxyConfig proxy = LinphoneManager.getLc().getDefaultProxyConfig();
if(proxy == null) { if(proxy == null) {
displayName.setText(getString(R.string.no_account)); displayName.setText(getString(R.string.no_account));
status.setVisibility(View.GONE); status.setVisibility(View.GONE);
@ -1664,8 +1652,8 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
defaultAccount.setOnClickListener(null); defaultAccount.setOnClickListener(null);
} else { } else {
address.setText(proxy.getAddress().asStringUriOnly()); address.setText(proxy.getIdentityAddress().asStringUriOnly());
displayName.setText(LinphoneUtils.getAddressDisplayName(proxy.getAddress())); displayName.setText(LinphoneUtils.getAddressDisplayName(proxy.getIdentityAddress()));
status.setImageResource(getStatusIconResource(proxy.getState())); status.setImageResource(getStatusIconResource(proxy.getState()));
status.setVisibility(View.VISIBLE); status.setVisibility(View.VISIBLE);
@ -1706,16 +1694,16 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
} }
class AccountsListAdapter extends BaseAdapter { class AccountsListAdapter extends BaseAdapter {
List<LinphoneProxyConfig> proxy_list; List<ProxyConfig> proxy_list;
AccountsListAdapter() { AccountsListAdapter() {
proxy_list = new ArrayList<LinphoneProxyConfig>(); proxy_list = new ArrayList<ProxyConfig>();
refresh(); refresh();
} }
public void refresh(){ public void refresh(){
proxy_list = new ArrayList<LinphoneProxyConfig>(); proxy_list = new ArrayList<ProxyConfig>();
for(LinphoneProxyConfig proxyConfig : LinphoneManager.getLc().getProxyConfigList()){ for(ProxyConfig proxyConfig : LinphoneManager.getLc().getProxyConfigList()){
if(proxyConfig != LinphoneManager.getLc().getDefaultProxyConfig()){ if(proxyConfig != LinphoneManager.getLc().getDefaultProxyConfig()){
proxy_list.add(proxyConfig); proxy_list.add(proxyConfig);
} }
@ -1740,7 +1728,7 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
public View getView(final int position, View convertView, ViewGroup parent) { public View getView(final int position, View convertView, ViewGroup parent) {
View view = null; View view = null;
LinphoneProxyConfig lpc = (LinphoneProxyConfig) getItem(position); ProxyConfig lpc = (ProxyConfig) getItem(position);
if (convertView != null) { if (convertView != null) {
view = convertView; view = convertView;
} else { } else {
@ -1749,7 +1737,7 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
ImageView status = (ImageView) view.findViewById(R.id.account_status); ImageView status = (ImageView) view.findViewById(R.id.account_status);
TextView address = (TextView) view.findViewById(R.id.account_address); TextView address = (TextView) view.findViewById(R.id.account_address);
String sipAddress = lpc.getAddress().asStringUriOnly(); String sipAddress = lpc.getIdentityAddress().asStringUriOnly();
address.setText(sipAddress); address.setText(sipAddress);

View file

@ -25,12 +25,11 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import org.linphone.core.LinphoneAddress; import org.linphone.core.Address;
import org.linphone.core.LinphoneCore; import org.linphone.core.Core;
import org.linphone.core.LinphoneCoreException; import org.linphone.core.CoreException;
import org.linphone.core.LinphoneFriend; import org.linphone.core.Friend;
import org.linphone.core.LinphoneFriendImpl; import org.linphone.core.Friend.SubscribePolicy;
import org.linphone.core.LinphoneFriend.SubscribePolicy;
import org.linphone.core.PresenceBasicStatus; import org.linphone.core.PresenceBasicStatus;
import org.linphone.core.PresenceModel; import org.linphone.core.PresenceModel;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
@ -47,7 +46,7 @@ import android.provider.ContactsContract.CommonDataKinds;
public class LinphoneContact implements Serializable, Comparable<LinphoneContact> { public class LinphoneContact implements Serializable, Comparable<LinphoneContact> {
private static final long serialVersionUID = 9015568163905205244L; private static final long serialVersionUID = 9015568163905205244L;
private transient LinphoneFriend friend; private transient Friend friend;
private String fullName, firstName, lastName, androidId, androidRawId, androidTagId, organization; private String fullName, firstName, lastName, androidId, androidRawId, androidTagId, organization;
private transient Uri photoUri, thumbnailUri; private transient Uri photoUri, thumbnailUri;
private List<LinphoneNumberOrAddress> addresses; private List<LinphoneNumberOrAddress> addresses;
@ -258,7 +257,7 @@ public class LinphoneContact implements Serializable, Comparable<LinphoneContact
} }
} }
if (isLinphoneFriend()) { if (isFriend()) {
if (noa.isSIPAddress()) { if (noa.isSIPAddress()) {
if (!noa.getOldValue().startsWith("sip:")) { if (!noa.getOldValue().startsWith("sip:")) {
noa.setOldValue("sip:" + noa.getOldValue()); noa.setOldValue("sip:" + noa.getOldValue());
@ -364,7 +363,7 @@ public class LinphoneContact implements Serializable, Comparable<LinphoneContact
} }
} }
} }
if (isLinphoneFriend()) { if (isFriend()) {
if (noa.isSIPAddress()) { if (noa.isSIPAddress()) {
if (!noa.getValue().startsWith("sip:")) { if (!noa.getValue().startsWith("sip:")) {
noa.setValue("sip:" + noa.getValue()); noa.setValue("sip:" + noa.getValue());
@ -399,35 +398,35 @@ public class LinphoneContact implements Serializable, Comparable<LinphoneContact
return androidId; return androidId;
} }
public LinphoneFriend getLinphoneFriend() { public Friend getFriend() {
return friend; return friend;
} }
private void createOrUpdateFriend() { private void createOrUpdateFriend() {
boolean created = false; boolean created = false;
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (!isLinphoneFriend()) { if (!isFriend()) {
friend = LinphoneManager.getLc().createFriend(); friend = LinphoneManager.getLc().createFriend();
friend.enableSubscribes(false); friend.enableSubscribes(false);
friend.setIncSubscribePolicy(SubscribePolicy.SPDeny); friend.setIncSubscribePolicy(SubscribePolicy.SPDeny);
if (isAndroidContact()) { if (isAndroidContact()) {
friend.setRefKey(getAndroidId()); friend.setRefKey(getAndroidId());
} }
((LinphoneFriendImpl)friend).setUserData(this); friend.setUserData(this);
created = true; created = true;
} }
if (isLinphoneFriend()) { if (isFriend()) {
friend.edit(); friend.edit();
friend.setName(fullName); friend.setName(fullName);
friend.setFamilyName(lastName); friend.getVcard().setFamilyName(lastName);
friend.setGivenName(firstName); friend.getVcard().setGivenName(firstName);
if (organization != null) { if (organization != null) {
friend.setOrganization(organization); friend.getVcard().setOrganization(organization);
} }
if (!created) { if (!created) {
for (LinphoneAddress address : friend.getAddresses()) { for (Address address : friend.getAddresses()) {
friend.removeAddress(address); friend.removeAddress(address);
} }
for (String phone : friend.getPhoneNumbers()) { for (String phone : friend.getPhoneNumbers()) {
@ -436,13 +435,9 @@ public class LinphoneContact implements Serializable, Comparable<LinphoneContact
} }
for (LinphoneNumberOrAddress noa : addresses) { for (LinphoneNumberOrAddress noa : addresses) {
if (noa.isSIPAddress()) { if (noa.isSIPAddress()) {
try { Address addr = lc.interpretUrl(noa.getValue());
LinphoneAddress addr = lc.interpretUrl(noa.getValue()); if (addr != null) {
if (addr != null) { friend.addAddress(addr);
friend.addAddress(addr);
}
} catch (LinphoneCoreException e) {
Log.e(e);
} }
} else { } else {
friend.addPhoneNumber(noa.getValue()); friend.addPhoneNumber(noa.getValue());
@ -451,15 +446,11 @@ public class LinphoneContact implements Serializable, Comparable<LinphoneContact
friend.done(); friend.done();
} }
if (created) { if (created) {
try { lc.addFriend(friend);
lc.addFriend(friend);
} catch (LinphoneCoreException e) {
Log.e(e);
}
} }
if (!ContactsManager.getInstance().hasContactsAccess()) { if (!ContactsManager.getInstance().hasContactsAccess()) {
// This refresh is only needed if app has no contacts permission to refresh the list of LinphoneFriends. // This refresh is only needed if app has no contacts permission to refresh the list of Friends.
// Otherwise contacts will be refreshed due to changes in native contact and the handler in ContactsManager // Otherwise contacts will be refreshed due to changes in native contact and the handler in ContactsManager
ContactsManager.getInstance().fetchContactsAsync(); ContactsManager.getInstance().fetchContactsAsync();
} }
@ -489,14 +480,14 @@ public class LinphoneContact implements Serializable, Comparable<LinphoneContact
save(); save();
ContactsManager.getInstance().delete(getAndroidId()); ContactsManager.getInstance().delete(getAndroidId());
} }
if (isLinphoneFriend()) { if (isFriend()) {
deleteFriend(); deleteFriend();
} }
} }
public void deleteFriend() { public void deleteFriend() {
if (friend != null) { if (friend != null) {
LinphoneManager.getLcIfManagerNotDestroyedOrNull().removeFriend(friend); //LinphoneManager.getLcIfManagerNotDestroyedOrNull().removeFriend(friend); //TODO FIXME
} }
} }
@ -514,18 +505,18 @@ public class LinphoneContact implements Serializable, Comparable<LinphoneContact
for (LinphoneNumberOrAddress noa : getAddressesAndNumbersForAndroidContact()) { for (LinphoneNumberOrAddress noa : getAddressesAndNumbersForAndroidContact()) {
addNumberOrAddress(noa); addNumberOrAddress(noa);
} }
} else if (isLinphoneFriend()) { } else if (isFriend()) {
fullName = friend.getName(); fullName = friend.getName();
lastName = friend.getFamilyName(); lastName = friend.getVcard().getFamilyName();
firstName = friend.getGivenName(); firstName = friend.getVcard().getGivenName();
thumbnailUri = null; thumbnailUri = null;
photoUri = null; photoUri = null;
hasSipAddress = friend.getAddress() != null; hasSipAddress = friend.getAddress() != null;
organization = friend.getOrganization(); organization = friend.getVcard().getOrganization();
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null && lc.isVCardSupported()) { if (lc != null && lc.vcardSupported()) {
for (LinphoneAddress addr : friend.getAddresses()) { for (Address addr : friend.getAddresses()) {
if (addr != null) { if (addr != null) {
addNumberOrAddress(new LinphoneNumberOrAddress(addr.asStringUriOnly(), true)); addNumberOrAddress(new LinphoneNumberOrAddress(addr.asStringUriOnly(), true));
} }
@ -536,13 +527,13 @@ public class LinphoneContact implements Serializable, Comparable<LinphoneContact
} }
} }
} else { } else {
LinphoneAddress addr = friend.getAddress(); Address addr = friend.getAddress();
addNumberOrAddress(new LinphoneNumberOrAddress(addr.asStringUriOnly(), true)); addNumberOrAddress(new LinphoneNumberOrAddress(addr.asStringUriOnly(), true));
} }
} }
} }
public void createOrUpdateLinphoneFriendFromNativeContact() { public void createOrUpdateFriendFromNativeContact() {
if (isAndroidContact()) { if (isAndroidContact()) {
createOrUpdateFriend(); createOrUpdateFriend();
} }
@ -552,14 +543,14 @@ public class LinphoneContact implements Serializable, Comparable<LinphoneContact
return androidId != null; return androidId != null;
} }
public boolean isLinphoneFriend() { public boolean isFriend() {
return friend != null; return friend != null;
} }
public boolean isInLinphoneFriendList() { public boolean isInFriendList() {
if (friend == null) return false; if (friend == null) return false;
for (LinphoneNumberOrAddress noa : addresses) { for (LinphoneNumberOrAddress noa : addresses) {
PresenceModel pm = friend.getPresenceModelForUri(noa.getValue()); PresenceModel pm = friend.getPresenceModelForUriOrTel(noa.getValue());
if (pm != null && pm.getBasicStatus().equals(PresenceBasicStatus.Open)) { if (pm != null && pm.getBasicStatus().equals(PresenceBasicStatus.Open)) {
return true; return true;
} }
@ -567,16 +558,16 @@ public class LinphoneContact implements Serializable, Comparable<LinphoneContact
return false; return false;
} }
public String getPresenceModelForUri(String uri) { public String getPresenceModelForUriOrTel(String uri) {
if (friend != null && friend.getPresenceModelForUri(uri) != null) { if (friend != null && friend.getPresenceModelForUriOrTel(uri) != null) {
return friend.getPresenceModelForUri(uri).getContact(); return friend.getPresenceModelForUriOrTel(uri).getContact();
} }
return null; return null;
} }
public void setFriend(LinphoneFriend f) { public void setFriend(Friend f) {
friend = f; friend = f;
((LinphoneFriendImpl)friend).setUserData(this); friend.setUserData(this);
} }
public void getAndroidIds() { public void getAndroidIds() {
@ -590,7 +581,7 @@ public class LinphoneContact implements Serializable, Comparable<LinphoneContact
if (ContactsManager.getInstance().hasContactsAccess()) { if (ContactsManager.getInstance().hasContactsAccess()) {
return createAndroidContact(); return createAndroidContact();
} }
return createLinphoneFriend(); return createFriend();
} }
private Uri getContactThumbnailPictureUri() { private Uri getContactThumbnailPictureUri() {
@ -701,14 +692,14 @@ public class LinphoneContact implements Serializable, Comparable<LinphoneContact
return contact; return contact;
} }
private static LinphoneContact createLinphoneFriend() { private static LinphoneContact createFriend() {
LinphoneContact contact = new LinphoneContact(); LinphoneContact contact = new LinphoneContact();
LinphoneFriend friend = LinphoneManager.getLc().createFriend(); Friend friend = LinphoneManager.getLc().createFriend();
// Disable subscribes for now // Disable subscribes for now
friend.enableSubscribes(false); friend.enableSubscribes(false);
friend.setIncSubscribePolicy(SubscribePolicy.SPDeny); friend.setIncSubscribePolicy(SubscribePolicy.SPDeny);
contact.friend = friend; contact.friend = friend;
((LinphoneFriendImpl)friend).setUserData(contact); friend.setUserData(contact);
return contact; return contact;
} }

View file

@ -1,7 +1,7 @@
package org.linphone; package org.linphone;
/* /*
LinphoneCoreException.java CoreException.java
Copyright (C) 2017 Belledonne Communications, Grenoble, France Copyright (C) 2017 Belledonne Communications, Grenoble, France
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or

View file

@ -29,7 +29,6 @@ import android.os.Handler;
import org.linphone.assistant.RemoteProvisioningActivity; import org.linphone.assistant.RemoteProvisioningActivity;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
import org.linphone.mediastream.Version; import org.linphone.mediastream.Version;
import org.linphone.tutorials.TutorialLauncherActivity;
import static android.content.Intent.ACTION_MAIN; import static android.content.Intent.ACTION_MAIN;
@ -99,9 +98,9 @@ public class LinphoneLauncherActivity extends Activity {
protected void onServiceReady() { protected void onServiceReady() {
final Class<? extends Activity> classToStart; final Class<? extends Activity> classToStart;
if (getResources().getBoolean(R.bool.show_tutorials_instead_of_app)) { /*if (getResources().getBoolean(R.bool.show_tutorials_instead_of_app)) {
classToStart = TutorialLauncherActivity.class; classToStart = TutorialLauncherActivity.class;
} else if (getResources().getBoolean(R.bool.display_sms_remote_provisioning_activity) && LinphonePreferences.instance().isFirstRemoteProvisioning()) { } else */if (getResources().getBoolean(R.bool.display_sms_remote_provisioning_activity) && LinphonePreferences.instance().isFirstRemoteProvisioning()) {
classToStart = RemoteProvisioningActivity.class; classToStart = RemoteProvisioningActivity.class;
} else { } else {
classToStart = LinphoneActivity.class; classToStart = LinphoneActivity.class;

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -24,17 +24,17 @@ import java.lang.reflect.Method;
import java.util.ArrayList; import java.util.ArrayList;
import org.linphone.compatibility.Compatibility; import org.linphone.compatibility.Compatibility;
import org.linphone.core.LinphoneAddress; import org.linphone.core.Address;
import org.linphone.core.LinphoneCall; import org.linphone.core.Call;
import org.linphone.core.LinphoneCall.State; import org.linphone.core.Call.State;
import org.linphone.core.LinphoneCallLog.CallStatus; import org.linphone.core.CallLog.CallStatus;
import org.linphone.core.LinphoneCore; import org.linphone.core.Core;
import org.linphone.core.LinphoneCore.GlobalState; import org.linphone.core.Core.GlobalState;
import org.linphone.core.LinphoneCore.RegistrationState; import org.linphone.core.Core.RegistrationState;
import org.linphone.core.LinphoneCoreException; import org.linphone.core.CoreException;
import org.linphone.core.LinphoneCoreFactory; import org.linphone.core.Factory;
import org.linphone.core.LinphoneCoreListenerBase; import org.linphone.core.CoreListenerStub;
import org.linphone.core.LinphoneProxyConfig; import org.linphone.core.ProxyConfig;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
import org.linphone.mediastream.Version; import org.linphone.mediastream.Version;
import org.linphone.ui.LinphoneOverlay; import org.linphone.ui.LinphoneOverlay;
@ -119,7 +119,7 @@ public final class LinphoneService extends Service {
private PendingIntent mNotifContentIntent; private PendingIntent mNotifContentIntent;
private String mNotificationTitle; private String mNotificationTitle;
private boolean mDisableRegistrationStatus; private boolean mDisableRegistrationStatus;
private LinphoneCoreListenerBase mListener; private CoreListenerStub mListener;
public static int notifcationsPriority = (Version.sdkAboveOrEqual(Version.API16_JELLY_BEAN_41) ? Notification.PRIORITY_MIN : 0); public static int notifcationsPriority = (Version.sdkAboveOrEqual(Version.API16_JELLY_BEAN_41) ? Notification.PRIORITY_MIN : 0);
private WindowManager mWindowManager; private WindowManager mWindowManager;
private LinphoneOverlay mOverlay; private LinphoneOverlay mOverlay;
@ -268,11 +268,11 @@ public final class LinphoneService extends Service {
public void showServiceNotification() { public void showServiceNotification() {
startForegroundCompat(NOTIF_ID, mNotif); startForegroundCompat(NOTIF_ID, mNotif);
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc == null) return; if (lc == null) return;
LinphoneProxyConfig lpc = lc.getDefaultProxyConfig(); ProxyConfig lpc = lc.getDefaultProxyConfig();
if (lpc != null) { if (lpc != null) {
if (lpc.isRegistered()) { if (lpc.getState() == RegistrationState.Ok) {
sendNotification(IC_LEVEL_ORANGE, R.string.notification_registered); sendNotification(IC_LEVEL_ORANGE, R.string.notification_registered);
} else { } else {
sendNotification(IC_LEVEL_ORANGE, R.string.notification_register_failure); sendNotification(IC_LEVEL_ORANGE, R.string.notification_register_failure);
@ -297,10 +297,10 @@ public final class LinphoneService extends Service {
// Needed in order for the two next calls to succeed, libraries must have been loaded first // Needed in order for the two next calls to succeed, libraries must have been loaded first
LinphonePreferences.instance().setContext(getBaseContext()); LinphonePreferences.instance().setContext(getBaseContext());
LinphoneCoreFactory.instance().setLogCollectionPath(getFilesDir().getAbsolutePath()); Factory.instance().setLogCollectionPath(getFilesDir().getAbsolutePath());
boolean isDebugEnabled = LinphonePreferences.instance().isDebugEnabled(); boolean isDebugEnabled = LinphonePreferences.instance().isDebugEnabled();
LinphoneCoreFactory.instance().enableLogCollection(isDebugEnabled); Factory.instance().enableLogCollection(isDebugEnabled);
LinphoneCoreFactory.instance().setDebugMode(isDebugEnabled, getString(R.string.app_name)); Factory.instance().setDebugMode(isDebugEnabled, getString(R.string.app_name));
// Dump some debugging information to the logs // Dump some debugging information to the logs
Log.i(START_LINPHONE_LOGS); Log.i(START_LINPHONE_LOGS);
@ -336,20 +336,20 @@ public final class LinphoneService extends Service {
Log.e(e); Log.e(e);
} }
LinphoneManager.getLc().addListener(mListener = new LinphoneCoreListenerBase() { LinphoneManager.getLc().addListener(mListener = new CoreListenerStub() {
@Override @Override
public void callState(LinphoneCore lc, LinphoneCall call, LinphoneCall.State state, String message) { public void onCallStateChanged(Core lc, Call call, Call.State state, String message) {
if (instance == null) { if (instance == null) {
Log.i("Service not ready, discarding call state change to ",state.toString()); Log.i("Service not ready, discarding call state change to ",state.toString());
return; return;
} }
if (state == LinphoneCall.State.IncomingReceived) { if (state == Call.State.IncomingReceived) {
if(! LinphoneManager.getInstance().getCallGsmON()) if(! LinphoneManager.getInstance().getCallGsmON())
onIncomingReceived(); onIncomingReceived();
} }
if (state == State.CallEnd || state == State.CallReleased || state == State.Error) { if (state == State.End || state == State.Released || state == State.Error) {
if (LinphoneManager.isInstanciated() && LinphoneManager.getLc() != null && LinphoneManager.getLc().getCallsNb() == 0) { if (LinphoneManager.isInstanciated() && LinphoneManager.getLc() != null && LinphoneManager.getLc().getCallsNb() == 0) {
if (LinphoneActivity.isInstanciated() && LinphoneActivity.instance().getStatusFragment() != null) { if (LinphoneActivity.isInstanciated() && LinphoneActivity.instance().getStatusFragment() != null) {
removeSasNotification(); removeSasNotification();
@ -359,13 +359,13 @@ public final class LinphoneService extends Service {
destroyOverlay(); destroyOverlay();
} }
if (state == State.CallEnd && call.getCallLog().getStatus() == CallStatus.Missed) { if (state == State.End && call.getCallLog().getStatus() == CallStatus.Missed) {
int missedCallCount = LinphoneManager.getLcIfManagerNotDestroyedOrNull().getMissedCallsCount(); int missedCallCount = LinphoneManager.getLcIfManagerNotDestroyedOrNull().getMissedCallsCount();
String body; String body;
if (missedCallCount > 1) { if (missedCallCount > 1) {
body = getString(R.string.missed_calls_notif_body).replace("%i", String.valueOf(missedCallCount)); body = getString(R.string.missed_calls_notif_body).replace("%i", String.valueOf(missedCallCount));
} else { } else {
LinphoneAddress address = call.getRemoteAddress(); Address address = call.getRemoteAddress();
LinphoneContact c = ContactsManager.getInstance().findContactFromAddress(address); LinphoneContact c = ContactsManager.getInstance().findContactFromAddress(address);
if (c != null) { if (c != null) {
body = c.getFullName(); body = c.getFullName();
@ -396,28 +396,28 @@ public final class LinphoneService extends Service {
} }
@Override @Override
public void globalState(LinphoneCore lc,LinphoneCore.GlobalState state, String message) { public void onGlobalStateChanged(Core lc,Core.GlobalState state, String message) {
if (state == GlobalState.GlobalOn && displayServiceNotification()) { if (state == Core.GlobalState.On && displayServiceNotification()) {
sendNotification(IC_LEVEL_ORANGE, R.string.notification_started); sendNotification(IC_LEVEL_ORANGE, R.string.notification_started);
} }
} }
@Override @Override
public void registrationState(LinphoneCore lc, LinphoneProxyConfig cfg, LinphoneCore.RegistrationState state, String smessage) { public void onRegistrationStateChanged(Core lc, ProxyConfig cfg, Core.RegistrationState state, String smessage) {
// if (instance == null) { // if (instance == null) {
// Log.i("Service not ready, discarding registration state change to ",state.toString()); // Log.i("Service not ready, discarding registration state change to ",state.toString());
// return; // return;
// } // }
if (!mDisableRegistrationStatus) { if (!mDisableRegistrationStatus) {
if (displayServiceNotification() && state == RegistrationState.RegistrationOk && LinphoneManager.getLc().getDefaultProxyConfig() != null && LinphoneManager.getLc().getDefaultProxyConfig().isRegistered()) { if (displayServiceNotification() && state == RegistrationState.Ok && LinphoneManager.getLc().getDefaultProxyConfig() != null && LinphoneManager.getLc().getDefaultProxyConfig().getState() == RegistrationState.Ok) {
sendNotification(IC_LEVEL_ORANGE, R.string.notification_registered); sendNotification(IC_LEVEL_ORANGE, R.string.notification_registered);
} }
if (displayServiceNotification() && (state == RegistrationState.RegistrationFailed || state == RegistrationState.RegistrationCleared) && (LinphoneManager.getLc().getDefaultProxyConfig() == null || !LinphoneManager.getLc().getDefaultProxyConfig().isRegistered())) { if (displayServiceNotification() && (state == RegistrationState.Failed || state == RegistrationState.Cleared) && (LinphoneManager.getLc().getDefaultProxyConfig() == null || !(LinphoneManager.getLc().getDefaultProxyConfig().getState() == RegistrationState.Ok))) {
sendNotification(IC_LEVEL_ORANGE, R.string.notification_register_failure); sendNotification(IC_LEVEL_ORANGE, R.string.notification_register_failure);
} }
if (displayServiceNotification() && state == RegistrationState.RegistrationNone) { if (displayServiceNotification() && state == RegistrationState.None) {
sendNotification(IC_LEVEL_ORANGE, R.string.notification_started); sendNotification(IC_LEVEL_ORANGE, R.string.notification_started);
} }
} }
@ -462,8 +462,8 @@ public final class LinphoneService extends Service {
public void createOverlay() { public void createOverlay() {
if (mOverlay != null) destroyOverlay(); if (mOverlay != null) destroyOverlay();
LinphoneCall call = LinphoneManager.getLc().getCurrentCall(); Call call = LinphoneManager.getLc().getCurrentCall();
if (call == null || !call.getCurrentParams().getVideoEnabled()) return; if (call == null || !call.getCurrentParams().videoEnabled()) return;
mOverlay = new LinphoneOverlay(this); mOverlay = new LinphoneOverlay(this);
WindowManager.LayoutParams params = mOverlay.getWindowManagerLayoutParams(); WindowManager.LayoutParams params = mOverlay.getWindowManagerLayoutParams();
@ -517,11 +517,11 @@ public final class LinphoneService extends Service {
return; return;
} }
LinphoneCall call = LinphoneManager.getLc().getCalls()[0]; Call call = LinphoneManager.getLc().getCalls()[0];
String userName = call.getRemoteAddress().getUserName(); String userName = call.getRemoteAddress().getUsername();
String domain = call.getRemoteAddress().getDomain(); String domain = call.getRemoteAddress().getDomain();
String displayName = call.getRemoteAddress().getDisplayName(); String displayName = call.getRemoteAddress().getDisplayName();
LinphoneAddress address = LinphoneCoreFactory.instance().createLinphoneAddress(userName,domain,null); Address address = Factory.instance().createAddress(userName + "@" + domain);
address.setDisplayName(displayName); address.setDisplayName(displayName);
LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(address); LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(address);
@ -532,7 +532,7 @@ public final class LinphoneService extends Service {
} catch (Exception e) { } catch (Exception e) {
bm = BitmapFactory.decodeResource(getResources(), R.drawable.avatar); bm = BitmapFactory.decodeResource(getResources(), R.drawable.avatar);
} }
String name = address.getDisplayName() == null ? address.getUserName() : address.getDisplayName(); String name = address.getDisplayName() == null ? address.getUsername() : address.getDisplayName();
Intent notifIntent = new Intent(this, incomingReceivedActivity); Intent notifIntent = new Intent(this, incomingReceivedActivity);
notifIntent.putExtra("Notification", true); notifIntent.putExtra("Notification", true);
mNotifContentIntent = PendingIntent.getActivity(this, 0, notifIntent, PendingIntent.FLAG_UPDATE_CURRENT); mNotifContentIntent = PendingIntent.getActivity(this, 0, notifIntent, PendingIntent.FLAG_UPDATE_CURRENT);
@ -545,10 +545,10 @@ public final class LinphoneService extends Service {
} }
} }
public void refreshIncallIcon(LinphoneCall currentCall) { public void refreshIncallIcon(Call currentCall) {
LinphoneCore lc = LinphoneManager.getLc(); Core lc = LinphoneManager.getLc();
if (currentCall != null) { if (currentCall != null) {
if (currentCall.getCurrentParams().getVideoEnabled() && currentCall.cameraEnabled()) { if (currentCall.getCurrentParams().videoEnabled() && currentCall.cameraEnabled()) {
// checking first current params is mandatory // checking first current params is mandatory
setIncallIcon(IncallIconState.VIDEO); setIncallIcon(IncallIconState.VIDEO);
} else { } else {
@ -556,7 +556,7 @@ public final class LinphoneService extends Service {
} }
} else if (lc.getCallsNb() == 0) { } else if (lc.getCallsNb() == 0) {
setIncallIcon(IncallIconState.IDLE); setIncallIcon(IncallIconState.IDLE);
} else if (lc.isInConference()) { } else if (lc.getConference() != null) {
setIncallIcon(IncallIconState.INCALL); setIncallIcon(IncallIconState.INCALL);
} else { } else {
setIncallIcon(IncallIconState.PAUSE); setIncallIcon(IncallIconState.PAUSE);
@ -590,7 +590,7 @@ public final class LinphoneService extends Service {
resetIntentLaunchedOnNotificationClick(); resetIntentLaunchedOnNotificationClick();
} }
public void displayMessageNotification(String to, String fromSipUri, String fromName, String message) { public void removedNotification(String to, String fromSipUri, String fromName, String message) {
Intent notifIntent = new Intent(this, LinphoneActivity.class); Intent notifIntent = new Intent(this, LinphoneActivity.class);
notifIntent.putExtra("GoToChat", true); notifIntent.putExtra("GoToChat", true);
notifIntent.putExtra("ChatContactSipUri", fromSipUri); notifIntent.putExtra("ChatContactSipUri", fromSipUri);
@ -608,13 +608,9 @@ public final class LinphoneService extends Service {
} }
Uri pictureUri = null; Uri pictureUri = null;
try { LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(Factory.instance().createAddress(fromSipUri));
LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(LinphoneCoreFactory.instance().createLinphoneAddress(fromSipUri)); if (contact != null)
if (contact != null) pictureUri = contact.getThumbnailUri();
pictureUri = contact.getThumbnailUri();
} catch (LinphoneCoreException e1) {
Log.e("Cannot parse from address ", e1);
}
Bitmap bm = null; Bitmap bm = null;
if (pictureUri != null) { if (pictureUri != null) {
@ -764,8 +760,8 @@ public final class LinphoneService extends Service {
String text = getString(textId); String text = getString(textId);
if (text.contains("%s") && LinphoneManager.getLc() != null) { if (text.contains("%s") && LinphoneManager.getLc() != null) {
// Test for null lc is to avoid a NPE when Android mess up badly with the String resources. // Test for null lc is to avoid a NPE when Android mess up badly with the String resources.
LinphoneProxyConfig lpc = LinphoneManager.getLc().getDefaultProxyConfig(); ProxyConfig lpc = LinphoneManager.getLc().getDefaultProxyConfig();
String id = lpc != null ? lpc.getIdentity() : ""; String id = lpc != null ? lpc.getIdentityAddress().asString() : "";
text = String.format(text, id); text = String.format(text, id);
} }
@ -805,7 +801,7 @@ public final class LinphoneService extends Service {
// If push is enabled, don't unregister account, otherwise do unregister // If push is enabled, don't unregister account, otherwise do unregister
if (LinphonePreferences.instance().isPushNotificationEnabled()) { if (LinphonePreferences.instance().isPushNotificationEnabled()) {
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) lc.setNetworkReachable(false); if (lc != null) lc.setNetworkReachable(false);
} }
stopSelf(); stopSelf();
@ -822,7 +818,7 @@ public final class LinphoneService extends Service {
} }
destroyOverlay(); destroyOverlay();
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) { if (lc != null) {
lc.removeListener(mListener); lc.removeListener(mListener);
} }
@ -877,7 +873,7 @@ public final class LinphoneService extends Service {
public void tryingNewOutgoingCallButWrongDestinationAddress() { public void tryingNewOutgoingCallButWrongDestinationAddress() {
} }
public void onCallEncryptionChanged(final LinphoneCall call, final boolean encrypted, public void onCallEncryptionChanged(final Call call, final boolean encrypted,
final String authenticationToken) { final String authenticationToken) {
} }
} }

View file

@ -52,15 +52,15 @@ import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import org.linphone.core.DialPlan; import org.linphone.core.DialPlan;
import org.linphone.core.LinphoneAccountCreator; import org.linphone.core.AccountCreator;
import org.linphone.core.LinphoneAddress; import org.linphone.core.Address;
import org.linphone.core.LinphoneCall; import org.linphone.core.Call;
import org.linphone.core.LinphoneCall.State; import org.linphone.core.Call.State;
import org.linphone.core.LinphoneChatMessage; import org.linphone.core.ChatMessage;
import org.linphone.core.LinphoneCore; import org.linphone.core.Core;
import org.linphone.core.LinphoneCoreException; import org.linphone.core.CoreException;
import org.linphone.core.LinphoneCoreFactory; import org.linphone.core.Factory;
import org.linphone.core.LinphoneProxyConfig; import org.linphone.core.ProxyConfig;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
import org.linphone.mediastream.video.capture.hwconf.Hacks; import org.linphone.mediastream.video.capture.hwconf.Hacks;
@ -104,16 +104,12 @@ public final class LinphoneUtils {
//private static final String strictSipAddressRegExp = "^sip:(\\+)?[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\\.-][a-z0-9]+)*)+\\.[a-z]{2,}$"; //private static final String strictSipAddressRegExp = "^sip:(\\+)?[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\\.-][a-z0-9]+)*)+\\.[a-z]{2,}$";
public static boolean isSipAddress(String numberOrAddress) { public static boolean isSipAddress(String numberOrAddress) {
try { Factory.instance().createAddress(numberOrAddress);
LinphoneCoreFactory.instance().createLinphoneAddress(numberOrAddress); return true;
return true;
} catch (LinphoneCoreException e) {
return false;
}
} }
public static boolean isNumberAddress(String numberOrAddress) { public static boolean isNumberAddress(String numberOrAddress) {
LinphoneProxyConfig proxy = LinphoneManager.getLc().createProxyConfig(); ProxyConfig proxy = LinphoneManager.getLc().createProxyConfig();
return proxy.normalizePhoneNumber(numberOrAddress) != null; return proxy.normalizePhoneNumber(numberOrAddress) != null;
} }
@ -122,21 +118,17 @@ public final class LinphoneUtils {
} }
public static String getAddressDisplayName(String uri){ public static String getAddressDisplayName(String uri){
LinphoneAddress lAddress; Address lAddress;
try { lAddress = Factory.instance().createAddress(uri);
lAddress = LinphoneCoreFactory.instance().createLinphoneAddress(uri); return getAddressDisplayName(lAddress);
return getAddressDisplayName(lAddress);
} catch (LinphoneCoreException e) {
return null;
}
} }
public static String getAddressDisplayName(LinphoneAddress address){ public static String getAddressDisplayName(Address address){
if(address.getDisplayName() != null) { if(address.getDisplayName() != null) {
return address.getDisplayName(); return address.getDisplayName();
} else { } else {
if(address.getUserName() != null){ if(address.getUsername() != null){
return address.getUserName(); return address.getUsername();
} else { } else {
return address.asStringUriOnly(); return address.asStringUriOnly();
} }
@ -289,33 +281,33 @@ public final class LinphoneUtils {
} }
} }
public static final List<LinphoneCall> getLinphoneCallsNotInConf(LinphoneCore lc) { public static final List<Call> getCallsNotInConf(Core lc) {
List<LinphoneCall> l=new ArrayList<LinphoneCall>(); List<Call> l=new ArrayList<Call>();
for(LinphoneCall c : lc.getCalls()){ for(Call c : lc.getCalls()){
if (!c.isInConference()){ if (!(c.getConference() != null)){
l.add(c); l.add(c);
} }
} }
return l; return l;
} }
public static final List<LinphoneCall> getLinphoneCallsInConf(LinphoneCore lc) { public static final List<Call> getCallsInConf(Core lc) {
List<LinphoneCall> l=new ArrayList<LinphoneCall>(); List<Call> l=new ArrayList<Call>();
for(LinphoneCall c : lc.getCalls()){ for(Call c : lc.getCalls()){
if (c.isInConference()){ if ((c.getConference() != null)){
l.add(c); l.add(c);
} }
} }
return l; return l;
} }
public static final List<LinphoneCall> getLinphoneCalls(LinphoneCore lc) { public static final List<Call> getCalls(Core lc) {
// return a modifiable list // return a modifiable list
return new ArrayList<LinphoneCall>(Arrays.asList(lc.getCalls())); return new ArrayList<Call>(Arrays.asList(lc.getCalls()));
} }
public static final boolean hasExistingResumeableCall(LinphoneCore lc) { public static final boolean hasExistingResumeableCall(Core lc) {
for (LinphoneCall c : getLinphoneCalls(lc)) { for (Call c : getCalls(lc)) {
if (c.getState() == State.Paused) { if (c.getState() == State.Paused) {
return true; return true;
} }
@ -323,32 +315,32 @@ public final class LinphoneUtils {
return false; return false;
} }
public static final List<LinphoneCall> getCallsInState(LinphoneCore lc, Collection<State> states) { public static final List<Call> getCallsInState(Core lc, Collection<State> states) {
List<LinphoneCall> foundCalls = new ArrayList<LinphoneCall>(); List<Call> foundCalls = new ArrayList<Call>();
for (LinphoneCall call : getLinphoneCalls(lc)) { for (Call call : getCalls(lc)) {
if (states.contains(call.getState())) { if (states.contains(call.getState())) {
foundCalls.add(call); foundCalls.add(call);
} }
} }
return foundCalls; return foundCalls;
} }
public static final List<LinphoneCall> getRunningOrPausedCalls(LinphoneCore lc) { public static final List<Call> getRunningOrPausedCalls(Core lc) {
return getCallsInState(lc, Arrays.asList( return getCallsInState(lc, Arrays.asList(
State.Paused, State.Paused,
State.PausedByRemote, State.PausedByRemote,
State.StreamsRunning)); State.StreamsRunning));
} }
public static final int countConferenceCalls(LinphoneCore lc) { public static final int countConferenceCalls(Core lc) {
int count = lc.getConferenceSize(); int count = lc.getConferenceSize();
if (lc.isInConference()) count--; if ((lc.getConference() != null)) count--;
return count; return count;
} }
public static int countVirtualCalls(LinphoneCore lc) { public static int countVirtualCalls(Core lc) {
return lc.getCallsNb() - countConferenceCalls(lc); return lc.getCallsNb() - countConferenceCalls(lc);
} }
public static int countNonConferenceCalls(LinphoneCore lc) { public static int countNonConferenceCalls(Core lc) {
return lc.getCallsNb() - countConferenceCalls(lc); return lc.getCallsNb() - countConferenceCalls(lc);
} }
@ -368,32 +360,32 @@ public final class LinphoneUtils {
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, (float) pixels, res.getDisplayMetrics()); return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, (float) pixels, res.getDisplayMetrics());
} }
public static boolean isCallRunning(LinphoneCall call) public static boolean isCallRunning(Call call)
{ {
if (call == null) { if (call == null) {
return false; return false;
} }
LinphoneCall.State state = call.getState(); Call.State state = call.getState();
return state == LinphoneCall.State.Connected || return state == Call.State.Connected ||
state == LinphoneCall.State.CallUpdating || state == Call.State.Updating ||
state == LinphoneCall.State.CallUpdatedByRemote || state == Call.State.UpdatedByRemote ||
state == LinphoneCall.State.StreamsRunning || state == Call.State.StreamsRunning ||
state == LinphoneCall.State.Resuming; state == Call.State.Resuming;
} }
public static boolean isCallEstablished(LinphoneCall call) { public static boolean isCallEstablished(Call call) {
if (call == null) { if (call == null) {
return false; return false;
} }
LinphoneCall.State state = call.getState(); Call.State state = call.getState();
return isCallRunning(call) || return isCallRunning(call) ||
state == LinphoneCall.State.Paused || state == Call.State.Paused ||
state == LinphoneCall.State.PausedByRemote || state == Call.State.PausedByRemote ||
state == LinphoneCall.State.Pausing; state == Call.State.Pausing;
} }
public static boolean isHighBandwidthConnection(Context context){ public static boolean isHighBandwidthConnection(Context context){
@ -523,7 +515,7 @@ public final class LinphoneUtils {
public static String getDisplayableUsernameFromAddress(String sipAddress) { public static String getDisplayableUsernameFromAddress(String sipAddress) {
String username = sipAddress; String username = sipAddress;
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc == null) return username; if (lc == null) return username;
if (username.startsWith("sip:")) { if (username.startsWith("sip:")) {
@ -532,7 +524,7 @@ public final class LinphoneUtils {
if (username.contains("@")) { if (username.contains("@")) {
String domain = username.split("@")[1]; String domain = username.split("@")[1];
LinphoneProxyConfig lpc = lc.getDefaultProxyConfig(); ProxyConfig lpc = lc.getDefaultProxyConfig();
if (lpc != null) { if (lpc != null) {
if (domain.equals(lpc.getDomain())) { if (domain.equals(lpc.getDomain())) {
return username.split("@")[0]; return username.split("@")[0];
@ -548,7 +540,7 @@ public final class LinphoneUtils {
public static String getFullAddressFromUsername(String username) { public static String getFullAddressFromUsername(String username) {
String sipAddress = username; String sipAddress = username;
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc == null) return sipAddress; if (lc == null) return sipAddress;
if (!sipAddress.startsWith("sip:")) { if (!sipAddress.startsWith("sip:")) {
@ -556,7 +548,7 @@ public final class LinphoneUtils {
} }
if (!sipAddress.contains("@")) { if (!sipAddress.contains("@")) {
LinphoneProxyConfig lpc = lc.getDefaultProxyConfig(); ProxyConfig lpc = lc.getDefaultProxyConfig();
if (lpc != null) { if (lpc != null) {
sipAddress = sipAddress + "@" + lpc.getDomain(); sipAddress = sipAddress + "@" + lpc.getDomain();
} else { } else {
@ -566,9 +558,9 @@ public final class LinphoneUtils {
return sipAddress; return sipAddress;
} }
public static void storeImage(Context context, LinphoneChatMessage msg) { public static void storeImage(Context context, ChatMessage msg) {
if (msg == null || msg.getFileTransferInformation() == null || msg.getAppData() == null) return; if (msg == null || msg.getFileTransferInformation() == null || msg.getAppdata() == null) return;
File file = new File(Environment.getExternalStorageDirectory(), msg.getAppData()); File file = new File(Environment.getExternalStorageDirectory(), msg.getAppdata());
Bitmap bm = BitmapFactory.decodeFile(file.getPath()); Bitmap bm = BitmapFactory.decodeFile(file.getPath());
if (bm == null) return; if (bm == null) return;
@ -592,7 +584,7 @@ public final class LinphoneUtils {
file.delete(); file.delete();
bm.recycle(); bm.recycle();
msg.setAppData(path.toString()); msg.setAppdata(path.toString());
} catch (FileNotFoundException e) { } catch (FileNotFoundException e) {
Log.e(e); Log.e(e);
} catch (IOException e) { } catch (IOException e) {
@ -619,83 +611,83 @@ public final class LinphoneUtils {
public static String errorForPhoneNumberStatus(int status) { public static String errorForPhoneNumberStatus(int status) {
Context ctxt = getContext(); Context ctxt = getContext();
if (ctxt != null) { if (ctxt != null) {
if (LinphoneAccountCreator.PhoneNumberCheck.CountryCodeInvalid.value() if (AccountCreator.PhoneNumberStatus.InvalidCountryCode.toInt()
== (status & LinphoneAccountCreator.PhoneNumberCheck.CountryCodeInvalid.value())) == (status & AccountCreator.PhoneNumberStatus.InvalidCountryCode.toInt()))
return ctxt.getString(R.string.country_code_invalid); return ctxt.getString(R.string.country_code_invalid);
if (LinphoneAccountCreator.PhoneNumberCheck.TooShort.value() if (AccountCreator.PhoneNumberStatus.TooShort.toInt()
== (status & LinphoneAccountCreator.PhoneNumberCheck.TooShort.value())) == (status & AccountCreator.PhoneNumberStatus.TooShort.toInt()))
return ctxt.getString(R.string.phone_number_too_short); return ctxt.getString(R.string.phone_number_too_short);
if (LinphoneAccountCreator.PhoneNumberCheck.TooLong.value() if (AccountCreator.PhoneNumberStatus.TooLong.toInt()
== (status & LinphoneAccountCreator.PhoneNumberCheck.TooLong.value())) == (status & AccountCreator.PhoneNumberStatus.TooLong.toInt()))
return ctxt.getString(R.string.phone_number_too_long); return ctxt.getString(R.string.phone_number_too_long);
if (LinphoneAccountCreator.PhoneNumberCheck.Invalid.value() if (AccountCreator.PhoneNumberStatus.Invalid.toInt()
== (status & LinphoneAccountCreator.PhoneNumberCheck.Invalid.value())) == (status & AccountCreator.PhoneNumberStatus.Invalid.toInt()))
return ctxt.getString(R.string.phone_number_invalid); return ctxt.getString(R.string.phone_number_invalid);
} }
return null; return null;
} }
public static String errorForEmailStatus(LinphoneAccountCreator.EmailCheck status) { public static String errorForEmailStatus(AccountCreator.EmailStatus status) {
Context ctxt = getContext(); Context ctxt = getContext();
if (ctxt != null) { if (ctxt != null) {
if (status.equals(LinphoneAccountCreator.EmailCheck.InvalidCharacters) if (status.equals(AccountCreator.EmailStatus.InvalidCharacters)
|| status.equals(LinphoneAccountCreator.EmailCheck.Malformed)) || status.equals(AccountCreator.EmailStatus.Malformed))
return ctxt.getString(R.string.invalid_email); return ctxt.getString(R.string.invalid_email);
} }
return null; return null;
} }
public static String errorForUsernameStatus(LinphoneAccountCreator.UsernameCheck status) { public static String errorForUsernameStatus(AccountCreator.UsernameStatus status) {
Context ctxt = getContext(); Context ctxt = getContext();
if (ctxt != null) { if (ctxt != null) {
if (status.equals(LinphoneAccountCreator.UsernameCheck.InvalidCharacters)) if (status.equals(AccountCreator.UsernameStatus.InvalidCharacters))
return ctxt.getString(R.string.invalid_username); return ctxt.getString(R.string.invalid_username);
if (status.equals(LinphoneAccountCreator.UsernameCheck.TooShort)) if (status.equals(AccountCreator.UsernameStatus.TooShort))
return ctxt.getString(R.string.username_too_short); return ctxt.getString(R.string.username_too_short);
if (status.equals(LinphoneAccountCreator.UsernameCheck.TooLong)) if (status.equals(AccountCreator.UsernameStatus.TooLong))
return ctxt.getString(R.string.username_too_long); return ctxt.getString(R.string.username_too_long);
if (status.equals(LinphoneAccountCreator.UsernameCheck.Invalid)) if (status.equals(AccountCreator.UsernameStatus.Invalid))
return ctxt.getString(R.string.username_invalid_size); return ctxt.getString(R.string.username_invalid_size);
if (status.equals(LinphoneAccountCreator.UsernameCheck.InvalidCharacters)) if (status.equals(AccountCreator.UsernameStatus.InvalidCharacters))
return ctxt.getString(R.string.invalid_display_name); return ctxt.getString(R.string.invalid_display_name);
} }
return null; return null;
} }
public static String errorForPasswordStatus(LinphoneAccountCreator.PasswordCheck status) { public static String errorForPasswordStatus(AccountCreator.PasswordStatus status) {
Context ctxt = getContext(); Context ctxt = getContext();
if (ctxt != null) { if (ctxt != null) {
if (status.equals(LinphoneAccountCreator.PasswordCheck.TooShort)) if (status.equals(AccountCreator.PasswordStatus.TooShort))
return ctxt.getString(R.string.password_too_short); return ctxt.getString(R.string.password_too_short);
if (status.equals(LinphoneAccountCreator.PasswordCheck.TooLong)) if (status.equals(AccountCreator.PasswordStatus.TooLong))
return ctxt.getString(R.string.password_too_long); return ctxt.getString(R.string.password_too_long);
} }
return null; return null;
} }
public static String errorForRequestStatus(LinphoneAccountCreator.RequestStatus status) { public static String errorForStatus(AccountCreator.Status status) {
Context ctxt = getContext(); Context ctxt = getContext();
if (ctxt != null) { if (ctxt != null) {
if (status.equals(LinphoneAccountCreator.RequestStatus.Failed)) if (status.equals(AccountCreator.Status.RequestFailed))
return ctxt.getString(R.string.request_failed); return ctxt.getString(R.string.request_failed);
if (status.equals(LinphoneAccountCreator.RequestStatus.ErrorServer)) if (status.equals(AccountCreator.Status.ServerError))
return ctxt.getString(R.string.wizard_failed); return ctxt.getString(R.string.wizard_failed);
if (status.equals(LinphoneAccountCreator.RequestStatus.AccountExist) if (status.equals(AccountCreator.Status.AccountExist)
|| status.equals(LinphoneAccountCreator.RequestStatus.AccountExistWithAlias)) || status.equals(AccountCreator.Status.AccountExistWithAlias))
return ctxt.getString(R.string.account_already_exist); return ctxt.getString(R.string.account_already_exist);
if (status.equals(LinphoneAccountCreator.RequestStatus.AliasIsAccount) if (status.equals(AccountCreator.Status.AliasIsAccount)
|| status.equals(LinphoneAccountCreator.RequestStatus.AliasExist)) || status.equals(AccountCreator.Status.AliasExist))
return ctxt.getString(R.string.assistant_phone_number_unavailable); return ctxt.getString(R.string.assistant_phone_number_unavailable);
if (status.equals(LinphoneAccountCreator.RequestStatus.AccountNotExist)) if (status.equals(AccountCreator.Status.AccountNotExist))
return ctxt.getString(R.string.assistant_error_bad_credentials); return ctxt.getString(R.string.assistant_error_bad_credentials);
if (status.equals(LinphoneAccountCreator.RequestStatus.AliasNotExist)) if (status.equals(AccountCreator.Status.AliasNotExist))
return ctxt.getString(R.string.phone_number_not_exist); return ctxt.getString(R.string.phone_number_not_exist);
if (status.equals(LinphoneAccountCreator.RequestStatus.AliasNotExist) if (status.equals(AccountCreator.Status.AliasNotExist)
|| status.equals(LinphoneAccountCreator.RequestStatus.AccountNotActivated) || status.equals(AccountCreator.Status.AccountNotActivated)
|| status.equals(LinphoneAccountCreator.RequestStatus.AccountAlreadyActivated) || status.equals(AccountCreator.Status.AccountAlreadyActivated)
|| status.equals(LinphoneAccountCreator.RequestStatus.AccountActivated) || status.equals(AccountCreator.Status.AccountActivated)
|| status.equals(LinphoneAccountCreator.RequestStatus.AccountNotCreated) || status.equals(AccountCreator.Status.AccountNotCreated)
|| status.equals(LinphoneAccountCreator.RequestStatus.Ok)) || status.equals(AccountCreator.Status.RequestOk))
return ""; return "";
} }
return null; return null;
@ -714,8 +706,8 @@ public final class LinphoneUtils {
public static void setCountry(DialPlan c, EditText dialCode, Button selectCountry, int countryCode) { public static void setCountry(DialPlan c, EditText dialCode, Button selectCountry, int countryCode) {
if( c != null && dialCode != null && selectCountry != null) { if( c != null && dialCode != null && selectCountry != null) {
dialCode.setText(c.getCountryCode()); dialCode.setText(c.getCountryCallingCode());
selectCountry.setText(c.getCountryName()); selectCountry.setText(c.getCountry());
} else { } else {
if(countryCode != -1){ if(countryCode != -1){
dialCode.setText("+" + countryCode); dialCode.setText("+" + countryCode);
@ -798,7 +790,7 @@ public final class LinphoneUtils {
} }
} }
public static String getTimestamp() { public static String getStartDate() {
try { try {
return new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.ROOT).format(new Date()); return new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.ROOT).format(new Date());
} catch (RuntimeException e) { } catch (RuntimeException e) {
@ -808,7 +800,7 @@ public final class LinphoneUtils {
public static File createFile(Context context, String imageFileName, String type) throws IOException { public static File createFile(Context context, String imageFileName, String type) throws IOException {
if (TextUtils.isEmpty(imageFileName)) if (TextUtils.isEmpty(imageFileName))
imageFileName = getTimestamp()+"."+type; // make random filename if you want. imageFileName = getStartDate()+"."+type; // make random filename if you want.
final File root; final File root;
imageFileName = imageFileName; imageFileName = imageFileName;

View file

@ -20,10 +20,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/ */
import org.linphone.LinphonePreferences.AccountBuilder; import org.linphone.LinphonePreferences.AccountBuilder;
import org.linphone.core.LinphoneCore; import org.linphone.core.Core;
import org.linphone.core.LinphoneCoreException; import org.linphone.core.CoreException;
import org.linphone.core.LinphoneProxyConfig; import org.linphone.core.ProxyConfig;
import org.linphone.core.LpConfig; import org.linphone.core.Config;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
import android.content.Context; import android.content.Context;
@ -44,7 +44,7 @@ public class PreferencesMigrator {
} }
public boolean isEchoMigratioNeeded() { public boolean isEchoMigratioNeeded() {
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc == null) { if (lc == null) {
return false; return false;
} }
@ -53,7 +53,7 @@ public class PreferencesMigrator {
return false; return false;
} }
return (!lc.needsEchoCalibration() && mNewPrefs.isEchoCancellationEnabled()); return (!lc.isEchoCancellerCalibrationRequired() && mNewPrefs.echoCancellationEnabled());
} }
public boolean isMigrationNeeded() { public boolean isMigrationNeeded() {
@ -99,9 +99,9 @@ public class PreferencesMigrator {
} }
private void doAccountsMigration() { private void doAccountsMigration() {
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
lc.clearAuthInfos(); lc.clearAllAuthInfo();
lc.clearProxyConfigs(); lc.clearProxyConfig();
for (int i = 0; i < mOldPrefs.getInt(getString(R.string.pref_extra_accounts), 1); i++) { for (int i = 0; i < mOldPrefs.getInt(getString(R.string.pref_extra_accounts), 1); i++) {
doAccountMigration(i, i == getPrefInt(R.string.pref_default_account_key, 0)); doAccountMigration(i, i == getPrefInt(R.string.pref_default_account_key, 0));
@ -121,10 +121,10 @@ public class PreferencesMigrator {
AccountBuilder builder = new AccountBuilder(LinphoneManager.getLc()) AccountBuilder builder = new AccountBuilder(LinphoneManager.getLc())
.setUsername(username) .setUsername(username)
.setUserId(userid) .setUserid(userid)
.setDomain(domain) .setDomain(domain)
.setPassword(password) .setPassword(password)
.setProxy(proxy) .setServerAddr(proxy)
.setExpires(expire); .setExpires(expire);
if (getPrefBoolean(getString(R.string.pref_enable_outbound_proxy_key) + key, false)) { if (getPrefBoolean(getString(R.string.pref_enable_outbound_proxy_key) + key, false)) {
@ -141,7 +141,7 @@ public class PreferencesMigrator {
try { try {
builder.saveNewAccount(); builder.saveNewAccount();
} catch (LinphoneCoreException e) { } catch (CoreException e) {
Log.e(e); Log.e(e);
} }
@ -152,10 +152,10 @@ public class PreferencesMigrator {
} }
public void doPresenceMigrationIfNeeded() { public void doPresenceMigrationIfNeeded() {
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
LpConfig cfg = lc.getConfig(); Config cfg = lc.getConfig();
if (cfg.getString("app", "friendlist_subscription_enabled", null) == null){ if (cfg.getString("app", "friendlist_subscription_enabled", null) == null){
LinphoneProxyConfig proxy = lc.getDefaultProxyConfig(); ProxyConfig proxy = lc.getDefaultProxyConfig();
if (proxy != null) { if (proxy != null) {
String domain = proxy.getDomain(); String domain = proxy.getDomain();
if (domain!=null && domain.equals(getString(R.string.default_domain))) { if (domain!=null && domain.equals(getString(R.string.default_domain))) {

View file

@ -23,19 +23,21 @@ import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.linphone.core.LinphoneAddress; import org.linphone.core.Address;
import org.linphone.core.LinphoneCore; import org.linphone.core.Core;
import org.linphone.core.LinphoneCore.EcCalibratorStatus; import org.linphone.core.Core.EcCalibratorStatus;
import org.linphone.core.LinphoneCore.LinphoneLimeState; import org.linphone.core.Core.LimeState;
import org.linphone.core.LinphoneCore.MediaEncryption; import org.linphone.core.Core.MediaEncryption;
import org.linphone.core.LinphoneCoreException; import org.linphone.core.CoreException;
import org.linphone.core.LinphoneCoreListenerBase; import org.linphone.core.CoreListenerStub;
import org.linphone.core.LinphoneProxyConfig; import org.linphone.core.Factory;
import org.linphone.core.ProxyConfig;
import org.linphone.core.PayloadType; import org.linphone.core.PayloadType;
import org.linphone.core.VideoDefinition;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
import org.linphone.mediastream.Version; import org.linphone.mediastream.Version;
import org.linphone.mediastream.video.capture.hwconf.AndroidCameraConfiguration; import org.linphone.mediastream.video.capture.hwconf.AndroidCameraConfiguration;
import org.linphone.tools.OpenH264DownloadHelper; import org.linphone.core.tools.OpenH264DownloadHelper;
import org.linphone.ui.LedPreference; import org.linphone.ui.LedPreference;
import org.linphone.ui.PreferencesListFragment; import org.linphone.ui.PreferencesListFragment;
@ -64,7 +66,7 @@ import android.provider.Settings;
public class SettingsFragment extends PreferencesListFragment { public class SettingsFragment extends PreferencesListFragment {
private LinphonePreferences mPrefs; private LinphonePreferences mPrefs;
private Handler mHandler = new Handler(); private Handler mHandler = new Handler();
private LinphoneCoreListenerBase mListener; private CoreListenerStub mListener;
private PreferenceScreen currentPreferenceScreen; private PreferenceScreen currentPreferenceScreen;
private Preference.OnPreferenceClickListener prefClickListener = new Preference.OnPreferenceClickListener() { private Preference.OnPreferenceClickListener prefClickListener = new Preference.OnPreferenceClickListener() {
@Override @Override
@ -92,9 +94,9 @@ public class SettingsFragment extends PreferencesListFragment {
mPrefs = LinphonePreferences.instance(); mPrefs = LinphonePreferences.instance();
removePreviousPreferencesFile(); // Required when updating the preferences order removePreviousPreferencesFile(); // Required when updating the preferences order
mListener = new LinphoneCoreListenerBase() { mListener = new CoreListenerStub() {
@Override @Override
public void ecCalibrationStatus(LinphoneCore lc, final EcCalibratorStatus status, final int delayMs, Object data) { public void onEcCalibrationResult(Core lc, Core.EcCalibratorStatus status, int delayMs) {
LinphoneManager.getInstance().routeAudioToReceiver(); LinphoneManager.getInstance().routeAudioToReceiver();
CheckBoxPreference echoCancellation = (CheckBoxPreference) findPreference(getString(R.string.pref_echo_cancellation_key)); CheckBoxPreference echoCancellation = (CheckBoxPreference) findPreference(getString(R.string.pref_echo_cancellation_key));
@ -107,7 +109,7 @@ public class SettingsFragment extends PreferencesListFragment {
((AudioManager)getActivity().getSystemService(Context.AUDIO_SERVICE)).setMode(AudioManager.MODE_NORMAL); ((AudioManager)getActivity().getSystemService(Context.AUDIO_SERVICE)).setMode(AudioManager.MODE_NORMAL);
Log.i("Set audio mode on 'Normal'"); Log.i("Set audio mode on 'Normal'");
} else if (status == EcCalibratorStatus.Done) { } else if (status == EcCalibratorStatus.Done) {
echoCancellerCalibration.setSummary(String.format(getString(R.string.ec_calibrated), delayMs)); echoCancellerCalibration.setSummary(String.format(getString(R.string.ec_calibrated), String.valueOf(delayMs)));
echoCancellation.setChecked(true); echoCancellation.setChecked(true);
LinphonePreferences.instance().setEchoCancellation(true); LinphonePreferences.instance().setEchoCancellation(true);
((AudioManager)getActivity().getSystemService(Context.AUDIO_SERVICE)).setMode(AudioManager.MODE_NORMAL); ((AudioManager)getActivity().getSystemService(Context.AUDIO_SERVICE)).setMode(AudioManager.MODE_NORMAL);
@ -194,7 +196,7 @@ public class SettingsFragment extends PreferencesListFragment {
hidePreference(R.string.pref_push_notification_key); hidePreference(R.string.pref_push_notification_key);
} }
if (!Version.isVideoCapable() || !LinphoneManager.getLcIfManagerNotDestroyedOrNull().isVideoSupported()) { if (!Version.isVideoCapable() || !LinphoneManager.getLcIfManagerNotDestroyedOrNull().videoSupported()) {
emptyAndHidePreference(R.string.pref_video_key); emptyAndHidePreference(R.string.pref_video_key);
} else { } else {
if (!AndroidCameraConfiguration.hasFrontCamera()) { if (!AndroidCameraConfiguration.hasFrontCamera()) {
@ -202,7 +204,7 @@ public class SettingsFragment extends PreferencesListFragment {
} }
} }
if (!LinphoneManager.getLc().isTunnelAvailable()) { if (!LinphoneManager.getLc().tunnelAvailable()) {
emptyAndHidePreference(R.string.pref_tunnel_key); emptyAndHidePreference(R.string.pref_tunnel_key);
} }
@ -276,20 +278,20 @@ public class SettingsFragment extends PreferencesListFragment {
} }
private void initTunnelSettings() { private void initTunnelSettings() {
if (!LinphoneManager.isInstanciated() || !LinphoneManager.getLc().isTunnelAvailable()) { if (!LinphoneManager.isInstanciated() || !LinphoneManager.getLc().tunnelAvailable()) {
return; return;
} }
setPreferenceDefaultValueAndSummary(R.string.pref_tunnel_host_key, mPrefs.getTunnelHost()); /*setPreferenceDefaultValueAndSummary(R.string.pref_tunnel_host_key, mPrefs.getTunnelHost());
setPreferenceDefaultValueAndSummary(R.string.pref_tunnel_port_key, String.valueOf(mPrefs.getTunnelPort())); setPreferenceDefaultValueAndSummary(R.string.pref_tunnel_port_key, String.valueOf(mPrefs.getTunnelPort()));
ListPreference tunnelModePref = (ListPreference) findPreference(getString(R.string.pref_tunnel_mode_key)); ListPreference tunnelModePref = (ListPreference) findPreference(getString(R.string.pref_tunnel_mode_key));
String tunnelMode = mPrefs.getTunnelMode(); String tunnelMode = mPrefs.getTunnelMode();
tunnelModePref.setSummary(tunnelMode); tunnelModePref.setSummary(tunnelMode);
tunnelModePref.setValue(tunnelMode); tunnelModePref.setValue(tunnelMode);*/
} }
private void setTunnelPreferencesListener() { private void setTunnelPreferencesListener() {
findPreference(getString(R.string.pref_tunnel_host_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() { /*findPreference(getString(R.string.pref_tunnel_host_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override @Override
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {
String host = newValue.toString(); String host = newValue.toString();
@ -319,7 +321,7 @@ public class SettingsFragment extends PreferencesListFragment {
preference.setSummary(mode); preference.setSummary(mode);
return true; return true;
} }
}); });*/
} }
private void initAccounts() { private void initAccounts() {
@ -366,14 +368,14 @@ public class SettingsFragment extends PreferencesListFragment {
} }
if (LinphoneManager.getLcIfManagerNotDestroyedOrNull() != null) { if (LinphoneManager.getLcIfManagerNotDestroyedOrNull() != null) {
for (LinphoneProxyConfig lpc : LinphoneManager.getLc().getProxyConfigList()) { for (ProxyConfig lpc : LinphoneManager.getLc().getProxyConfigList()) {
LinphoneAddress addr = lpc.getAddress(); Address addr = lpc.getIdentityAddress();
if (addr.getUserName().equals(username) && addr.getDomain().equals(domain)) { if (addr.getUsername().equals(username) && addr.getDomain().equals(domain)) {
if (lpc.getState() == LinphoneCore.RegistrationState.RegistrationOk) { if (lpc.getState() == Core.RegistrationState.Ok) {
me.setLed(R.drawable.led_connected); me.setLed(R.drawable.led_connected);
} else if (lpc.getState() == LinphoneCore.RegistrationState.RegistrationFailed) { } else if (lpc.getState() == Core.RegistrationState.Failed) {
me.setLed(R.drawable.led_error); me.setLed(R.drawable.led_error);
} else if (lpc.getState() == LinphoneCore.RegistrationState.RegistrationProgress) { } else if (lpc.getState() == Core.RegistrationState.Progress) {
me.setLed(R.drawable.led_inprogress); me.setLed(R.drawable.led_inprogress);
mHandler.postDelayed(new Runnable() { mHandler.postDelayed(new Runnable() {
@Override @Override
@ -396,7 +398,7 @@ public class SettingsFragment extends PreferencesListFragment {
entries.add(getString(R.string.pref_none)); entries.add(getString(R.string.pref_none));
values.add(getString(R.string.pref_media_encryption_key_none)); values.add(getString(R.string.pref_media_encryption_key_none));
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc == null || getResources().getBoolean(R.bool.disable_all_security_features_for_markets)) { if (lc == null || getResources().getBoolean(R.bool.disable_all_security_features_for_markets)) {
setListPreferenceValues(pref, entries, values); setListPreferenceValues(pref, entries, values);
return; return;
@ -441,9 +443,9 @@ public class SettingsFragment extends PreferencesListFragment {
private void initializePreferredVideoSizePreferences(ListPreference pref) { private void initializePreferredVideoSizePreferences(ListPreference pref) {
List<CharSequence> entries = new ArrayList<CharSequence>(); List<CharSequence> entries = new ArrayList<CharSequence>();
List<CharSequence> values = new ArrayList<CharSequence>(); List<CharSequence> values = new ArrayList<CharSequence>();
for (String name : LinphoneManager.getLc().getSupportedVideoSizes()) { for (VideoDefinition vd : Factory.instance().getSupportedVideoDefinitions()) {
entries.add(name); entries.add(vd.getName());
values.add(name); values.add(vd.getName());
} }
setListPreferenceValues(pref, entries, values); setListPreferenceValues(pref, entries, values);
@ -476,27 +478,27 @@ public class SettingsFragment extends PreferencesListFragment {
List<CharSequence> entries = new ArrayList<CharSequence>(); List<CharSequence> entries = new ArrayList<CharSequence>();
List<CharSequence> values = new ArrayList<CharSequence>(); List<CharSequence> values = new ArrayList<CharSequence>();
entries.add(getString(R.string.lime_encryption_entry_disabled)); entries.add(getString(R.string.lime_encryption_entry_disabled));
values.add(LinphoneLimeState.Disabled.toString()); values.add(LimeState.Disabled.toString());
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc == null || !lc.isLimeEncryptionAvailable()) { if (lc == null || !lc.limeAvailable()) {
setListPreferenceValues(pref, entries, values); setListPreferenceValues(pref, entries, values);
pref.setEnabled(false); pref.setEnabled(false);
return; return;
} }
entries.add(getString(R.string.lime_encryption_entry_mandatory)); entries.add(getString(R.string.lime_encryption_entry_mandatory));
values.add(LinphoneLimeState.Mandatory.toString()); values.add(LimeState.Mandatory.toString());
entries.add(getString(R.string.lime_encryption_entry_preferred)); entries.add(getString(R.string.lime_encryption_entry_preferred));
values.add(LinphoneLimeState.Preferred.toString()); values.add(LimeState.Preferred.toString());
setListPreferenceValues(pref, entries, values); setListPreferenceValues(pref, entries, values);
LinphoneLimeState lime = mPrefs.getLimeEncryption(); LimeState lime = mPrefs.limeEnabled();
if (lime == LinphoneLimeState.Disabled) { if (lime == LimeState.Disabled) {
pref.setSummary(getString(R.string.lime_encryption_entry_disabled)); pref.setSummary(getString(R.string.lime_encryption_entry_disabled));
} else if (lime == LinphoneLimeState.Mandatory) { } else if (lime == LimeState.Mandatory) {
pref.setSummary(getString(R.string.lime_encryption_entry_mandatory)); pref.setSummary(getString(R.string.lime_encryption_entry_mandatory));
} else if (lime == LinphoneLimeState.Preferred) { } else if (lime == LimeState.Preferred) {
pref.setSummary(getString(R.string.lime_encryption_entry_preferred)); pref.setSummary(getString(R.string.lime_encryption_entry_preferred));
} }
pref.setValue(lime.toString()); pref.setValue(lime.toString());
@ -515,37 +517,29 @@ public class SettingsFragment extends PreferencesListFragment {
PreferenceCategory codecs = (PreferenceCategory) findPreference(getString(R.string.pref_codecs_key)); PreferenceCategory codecs = (PreferenceCategory) findPreference(getString(R.string.pref_codecs_key));
codecs.removeAll(); codecs.removeAll();
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
for (final PayloadType pt : lc.getAudioCodecs()) { for (final PayloadType pt : lc.getAudioPayloadTypes()) {
CheckBoxPreference codec = new CheckBoxPreference(getActivity()); CheckBoxPreference codec = new CheckBoxPreference(getActivity());
codec.setTitle(pt.getMime()); codec.setTitle(pt.getMimeType());
/* Special case */ /* Special case */
if (pt.getMime().equals("mpeg4-generic")) { if (pt.getMimeType().equals("mpeg4-generic")) {
if (android.os.Build.VERSION.SDK_INT < 16) { if (android.os.Build.VERSION.SDK_INT < 16) {
/* Make sure AAC is disabled */ /* Make sure AAC is disabled */
try { pt.enable(false);
lc.enablePayloadType(pt, false);
} catch (LinphoneCoreException e) {
Log.e(e);
}
continue; continue;
} else { } else {
codec.setTitle("AAC-ELD"); codec.setTitle("AAC-ELD");
} }
} }
codec.setSummary(pt.getRate() + " Hz"); codec.setSummary(pt.getClockRate() + " Hz");
codec.setChecked(lc.isPayloadTypeEnabled(pt)); codec.setChecked(pt.enabled());
codec.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { codec.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override @Override
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {
boolean enable = (Boolean) newValue; boolean enable = (Boolean) newValue;
try { pt.enable(enable);
LinphoneManager.getLcIfManagerNotDestroyedOrNull().enablePayloadType(pt, enable);
} catch (LinphoneCoreException e) {
Log.e(e);
}
return true; return true;
} }
}); });
@ -554,15 +548,15 @@ public class SettingsFragment extends PreferencesListFragment {
} }
CheckBoxPreference echoCancellation = (CheckBoxPreference) findPreference(getString(R.string.pref_echo_cancellation_key)); CheckBoxPreference echoCancellation = (CheckBoxPreference) findPreference(getString(R.string.pref_echo_cancellation_key));
echoCancellation.setChecked(mPrefs.isEchoCancellationEnabled()); echoCancellation.setChecked(mPrefs.echoCancellationEnabled());
if (mPrefs.isEchoCancellationEnabled()) { if (mPrefs.echoCancellationEnabled()) {
Preference echoCalibration = findPreference(getString(R.string.pref_echo_canceller_calibration_key)); Preference echoCalibration = findPreference(getString(R.string.pref_echo_canceller_calibration_key));
echoCalibration.setSummary(String.format(getString(R.string.ec_calibrated), mPrefs.getEchoCalibration())); echoCalibration.setSummary(String.format(getString(R.string.ec_calibrated), String.valueOf(mPrefs.getEchoCalibration())));
} }
CheckBoxPreference adaptiveRateControl = (CheckBoxPreference) findPreference(getString(R.string.pref_adaptive_rate_control_key)); CheckBoxPreference adaptiveRateControl = (CheckBoxPreference) findPreference(getString(R.string.pref_adaptive_rate_control_key));
adaptiveRateControl.setChecked(mPrefs.isAdaptiveRateControlEnabled()); adaptiveRateControl.setChecked(mPrefs.adaptiveRateControlEnabled());
ListPreference bitrateLimit = (ListPreference) findPreference(getString(R.string.pref_codec_bitrate_limit_key)); ListPreference bitrateLimit = (ListPreference) findPreference(getString(R.string.pref_codec_bitrate_limit_key));
bitrateLimit.setSummary(String.valueOf(mPrefs.getCodecBitrateLimit())); bitrateLimit.setSummary(String.valueOf(mPrefs.getCodecBitrateLimit()));
@ -592,12 +586,12 @@ public class SettingsFragment extends PreferencesListFragment {
@Override @Override
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {
mPrefs.setCodecBitrateLimit(Integer.parseInt(newValue.toString())); mPrefs.setCodecBitrateLimit(Integer.parseInt(newValue.toString()));
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
int bitrate = Integer.parseInt(newValue.toString()); int bitrate = Integer.parseInt(newValue.toString());
for (final PayloadType pt : lc.getAudioCodecs()) { for (final PayloadType pt : lc.getAudioPayloadTypes()) {
if (lc.payloadTypeIsVbr(pt)) { if (pt.isVbr()) {
lc.setPayloadTypeBitrate(pt, bitrate); pt.setNormalBitrate(bitrate);
} }
} }
@ -648,7 +642,7 @@ public class SettingsFragment extends PreferencesListFragment {
if (LinphoneManager.getInstance().startEchoTester() > 0) { if (LinphoneManager.getInstance().startEchoTester() > 0) {
preference.setSummary("Is running"); preference.setSummary("Is running");
} }
} catch (LinphoneCoreException e) { } catch (CoreException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
@ -659,7 +653,7 @@ public class SettingsFragment extends PreferencesListFragment {
if (LinphoneManager.getInstance().stopEchoTester() > 0) { if (LinphoneManager.getInstance().stopEchoTester() > 0) {
preference.setSummary("Is stopped"); preference.setSummary("Is stopped");
} }
} catch (LinphoneCoreException e) { } catch (CoreException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
@ -669,7 +663,7 @@ public class SettingsFragment extends PreferencesListFragment {
if (LinphoneManager.getInstance().getEchoTesterStatus()) if (LinphoneManager.getInstance().getEchoTesterStatus())
stopEchoTester(); stopEchoTester();
LinphoneManager.getInstance().startEcCalibration(mListener); LinphoneManager.getInstance().startEcCalibration(mListener);
} catch (LinphoneCoreException e) { } catch (CoreException e) {
Log.e(e); Log.e(e);
} }
} }
@ -694,19 +688,19 @@ public class SettingsFragment extends PreferencesListFragment {
PreferenceCategory codecs = (PreferenceCategory) findPreference(getString(R.string.pref_video_codecs_key)); PreferenceCategory codecs = (PreferenceCategory) findPreference(getString(R.string.pref_video_codecs_key));
codecs.removeAll(); codecs.removeAll();
final LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); final Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
final OpenH264DownloadHelper mCodecDownloader = LinphoneManager.getInstance().getOpenH264DownloadHelper(); final OpenH264DownloadHelper mCodecDownloader = LinphoneManager.getInstance().getOpenH264DownloadHelper();
for (final PayloadType pt : lc.getVideoCodecs()) { for (final PayloadType pt : lc.getVideoPayloadTypes()) {
final CheckBoxPreference codec = new CheckBoxPreference(getActivity()); final CheckBoxPreference codec = new CheckBoxPreference(getActivity());
codec.setTitle(pt.getMime()); codec.setTitle(pt.getMimeType());
if (!pt.getMime().equals("VP8")) { if (!pt.getMimeType().equals("VP8")) {
if (getResources().getBoolean(R.bool.disable_all_patented_codecs_for_markets)) { if (getResources().getBoolean(R.bool.disable_all_patented_codecs_for_markets)) {
continue; continue;
} else { } else {
if (!Version.hasFastCpuWithAsmOptim() && pt.getMime().equals("H264")) if (!Version.hasFastCpuWithAsmOptim() && pt.getMimeType().equals("H264"))
{ {
// Android without neon doesn't support H264 // Android without neon doesn't support H264
Log.w("CPU does not have asm optimisations available, disabling H264"); Log.w("CPU does not have asm optimisations available, disabling H264");
@ -714,49 +708,45 @@ public class SettingsFragment extends PreferencesListFragment {
} }
} }
} }
if (lc.downloadOpenH264Enabled()) { if (OpenH264DownloadHelper.isOpenH264DownloadEnabled()) {
if (pt.getMime().equals("H264") && mCodecDownloader.isCodecFound()) { if (pt.getMimeType().equals("H264") && mCodecDownloader.isCodecFound()) {
codec.setSummary(mCodecDownloader.getLicenseMessage()); codec.setSummary(mCodecDownloader.getLicenseMessage());
codec.setTitle("OpenH264"); codec.setTitle("OpenH264");
} }
} }
codec.setChecked(lc.isPayloadTypeEnabled(pt)); codec.setChecked(pt.enabled());
codec.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { codec.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override @Override
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {
boolean enable = (Boolean) newValue; boolean enable = (Boolean) newValue;
try { if (OpenH264DownloadHelper.isOpenH264DownloadEnabled()) {
if (lc.downloadOpenH264Enabled()) { if (enable && Version.getCpuAbis().contains("armeabi-v7a") && !Version.getCpuAbis().contains("x86")
if (enable && Version.getCpuAbis().contains("armeabi-v7a") && !Version.getCpuAbis().contains("x86") && pt.getMimeType().equals("H264") && !mCodecDownloader.isCodecFound()) {
&& pt.getMime().equals("H264") && !mCodecDownloader.isCodecFound()) { mCodecDownloader.setOpenH264HelperListener(LinphoneManager.getInstance().getOpenH264HelperListener());
mCodecDownloader.setOpenH264HelperListener(LinphoneManager.getInstance().getOpenH264HelperListener()); mCodecDownloader.setUserData(0, LinphoneManager.getInstance().getContext());
mCodecDownloader.setUserData(0, LinphoneManager.getInstance().getContext()); mCodecDownloader.setUserData(1, codec);
mCodecDownloader.setUserData(1, codec);
AlertDialog.Builder builder = new AlertDialog.Builder(LinphoneManager.getInstance().getContext()); AlertDialog.Builder builder = new AlertDialog.Builder(LinphoneManager.getInstance().getContext());
builder.setCancelable(false); builder.setCancelable(false);
builder.setMessage("Do you agree to download " + mCodecDownloader.getLicenseMessage()).setPositiveButton("Yes", new DialogInterface.OnClickListener() { builder.setMessage("Do you agree to download " + mCodecDownloader.getLicenseMessage()).setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
if (which == DialogInterface.BUTTON_POSITIVE) if (which == DialogInterface.BUTTON_POSITIVE)
mCodecDownloader.downloadCodec(); mCodecDownloader.downloadCodec();
}
});
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (which == DialogInterface.BUTTON_NEGATIVE) {
// Disable H264
} }
}); }
builder.setNegativeButton("No", new DialogInterface.OnClickListener() { }).show();
@Override
public void onClick(DialogInterface dialog, int which) {
if (which == DialogInterface.BUTTON_NEGATIVE) {
// Disable H264
}
}
}).show();
}
} }
LinphoneManager.getLcIfManagerNotDestroyedOrNull().enablePayloadType(pt, enable);
} catch (LinphoneCoreException e) {
Log.e(e);
} }
pt.enable(enable);
return true; return true;
} }
}); });
@ -1053,20 +1043,20 @@ public class SettingsFragment extends PreferencesListFragment {
@Override @Override
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {
String value = newValue.toString(); String value = newValue.toString();
LinphoneLimeState lime = LinphoneLimeState.Disabled; LimeState lime = LimeState.Disabled;
if (value.equals(LinphoneLimeState.Mandatory.toString())) if (value.equals(LimeState.Mandatory.toString()))
lime = LinphoneLimeState.Mandatory; lime = LimeState.Mandatory;
else if (value.equals(LinphoneLimeState.Preferred.toString())) else if (value.equals(LimeState.Preferred.toString()))
lime = LinphoneLimeState.Preferred; lime = LimeState.Preferred;
mPrefs.setLimeEncryption(lime); mPrefs.enableLime(lime);
lime = mPrefs.getLimeEncryption(); lime = mPrefs.limeEnabled();
if (lime == LinphoneLimeState.Disabled) { if (lime == LimeState.Disabled) {
preference.setSummary(getString(R.string.lime_encryption_entry_disabled)); preference.setSummary(getString(R.string.lime_encryption_entry_disabled));
} else if (lime == LinphoneLimeState.Mandatory) { } else if (lime == LimeState.Mandatory) {
setEncryptionZrtp(); setEncryptionZrtp();
preference.setSummary(getString(R.string.lime_encryption_entry_mandatory)); preference.setSummary(getString(R.string.lime_encryption_entry_mandatory));
} else if (lime == LinphoneLimeState.Preferred) { } else if (lime == LimeState.Preferred) {
setEncryptionZrtp(); setEncryptionZrtp();
preference.setSummary(getString(R.string.lime_encryption_entry_preferred)); preference.setSummary(getString(R.string.lime_encryption_entry_preferred));
} }

View file

@ -18,15 +18,15 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/ */
import org.linphone.assistant.AssistantActivity; import org.linphone.assistant.AssistantActivity;
import org.linphone.core.CallDirection; import org.linphone.core.Call.Dir;
import org.linphone.core.LinphoneCall; import org.linphone.core.Call;
import org.linphone.core.LinphoneContent; import org.linphone.core.Content;
import org.linphone.core.LinphoneCore; import org.linphone.core.Core;
import org.linphone.core.LinphoneCore.MediaEncryption; import org.linphone.core.Core.MediaEncryption;
import org.linphone.core.LinphoneCore.RegistrationState; import org.linphone.core.Core.RegistrationState;
import org.linphone.core.LinphoneCoreListenerBase; import org.linphone.core.CoreListenerStub;
import org.linphone.core.LinphoneEvent; import org.linphone.core.Event;
import org.linphone.core.LinphoneProxyConfig; import org.linphone.core.ProxyConfig;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
import android.app.Activity; import android.app.Activity;
@ -54,7 +54,7 @@ public class StatusFragment extends Fragment {
private ImageView statusLed, callQuality, encryption, menu, voicemail; private ImageView statusLed, callQuality, encryption, menu, voicemail;
private Runnable mCallQualityUpdater; private Runnable mCallQualityUpdater;
private boolean isInCall, isAttached = false, isZrtpAsk; private boolean isInCall, isAttached = false, isZrtpAsk;
private LinphoneCoreListenerBase mListener; private CoreListenerStub mListener;
private Dialog ZRTPdialog = null; private Dialog ZRTPdialog = null;
private int mDisplayedQuality = -1; private int mDisplayedQuality = -1;
@ -74,9 +74,9 @@ public class StatusFragment extends Fragment {
// We create it once to not delay the first display // We create it once to not delay the first display
populateSliderContent(); populateSliderContent();
mListener = new LinphoneCoreListenerBase(){ mListener = new CoreListenerStub(){
@Override @Override
public void registrationState(final LinphoneCore lc, final LinphoneProxyConfig proxy, final LinphoneCore.RegistrationState state, String smessage) { public void onRegistrationStateChanged(final Core lc, final ProxyConfig proxy, final Core.RegistrationState state, String smessage) {
if (!isAttached || !LinphoneService.isReady()) { if (!isAttached || !LinphoneService.isReady()) {
return; return;
} }
@ -107,15 +107,15 @@ public class StatusFragment extends Fragment {
} }
@Override @Override
public void notifyReceived(LinphoneCore lc, LinphoneEvent ev, String eventName, LinphoneContent content) { public void onNotifyReceived(Core lc, Event ev, String eventName, Content content) {
if(!content.getType().equals("application")) return; if(!content.getType().equals("application")) return;
if(!content.getSubtype().equals("simple-message-summary")) return; if(!content.getSubtype().equals("simple-message-summary")) return;
if (content.getData() == null) return; if (content.getSize() == 0) return;
int unreadCount = -1; int unreadCount = -1;
String data = content.getDataAsString(); String data = content.getStringBuffer();
String[] voiceMail = data.split("voice-message: "); String[] voiceMail = data.split("voice-message: ");
final String[] intToParse = voiceMail[1].split("/",0); final String[] intToParse = voiceMail[1].split("/",0);
@ -149,14 +149,14 @@ public class StatusFragment extends Fragment {
return view; return view;
} }
public void setLinphoneCoreListener() { public void setCoreListener() {
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) { if (lc != null) {
lc.addListener(mListener); lc.addListener(mListener);
LinphoneProxyConfig lpc = lc.getDefaultProxyConfig(); ProxyConfig lpc = lc.getDefaultProxyConfig();
if (lpc != null) { if (lpc != null) {
mListener.registrationState(lc, lpc, lpc.getState(), null); mListener.onRegistrationStateChanged(lc, lpc, lpc.getState(), null);
} }
} }
} }
@ -174,7 +174,7 @@ public class StatusFragment extends Fragment {
voicemailCount.setVisibility(View.GONE); voicemailCount.setVisibility(View.GONE);
if (isInCall && isAttached) { if (isInCall && isAttached) {
//LinphoneCall call = LinphoneManager.getLc().getCurrentCall(); //Call call = LinphoneManager.getLc().getCurrentCall();
//initCallStatsRefresher(call, callStats); //initCallStatsRefresher(call, callStats);
} else if (!isInCall) { } else if (!isInCall) {
voicemailCount.setVisibility(View.VISIBLE); voicemailCount.setVisibility(View.VISIBLE);
@ -198,15 +198,15 @@ public class StatusFragment extends Fragment {
menu.setEnabled(enabled); menu.setEnabled(enabled);
} }
private int getStatusIconResource(LinphoneCore.RegistrationState state, boolean isDefaultAccount) { private int getStatusIconResource(Core.RegistrationState state, boolean isDefaultAccount) {
try { try {
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
boolean defaultAccountConnected = (isDefaultAccount && lc != null && lc.getDefaultProxyConfig() != null && lc.getDefaultProxyConfig().isRegistered()) || !isDefaultAccount; boolean defaultAccountConnected = (isDefaultAccount && lc != null && lc.getDefaultProxyConfig() != null && lc.getDefaultProxyConfig().getState() == RegistrationState.Ok) || !isDefaultAccount;
if (state == RegistrationState.RegistrationOk && defaultAccountConnected) { if (state == RegistrationState.Ok && defaultAccountConnected) {
return R.drawable.led_connected; return R.drawable.led_connected;
} else if (state == RegistrationState.RegistrationProgress) { } else if (state == RegistrationState.Progress) {
return R.drawable.led_inprogress; return R.drawable.led_inprogress;
} else if (state == RegistrationState.RegistrationFailed) { } else if (state == RegistrationState.Failed) {
return R.drawable.led_error; return R.drawable.led_error;
} else { } else {
return R.drawable.led_disconnected; return R.drawable.led_disconnected;
@ -218,7 +218,7 @@ public class StatusFragment extends Fragment {
return R.drawable.led_disconnected; return R.drawable.led_disconnected;
} }
private String getStatusIconText(LinphoneCore.RegistrationState state) { private String getStatusIconText(Core.RegistrationState state) {
Context context = getActivity(); Context context = getActivity();
if (!isAttached && LinphoneActivity.isInstanciated()) if (!isAttached && LinphoneActivity.isInstanciated())
context = LinphoneActivity.instance(); context = LinphoneActivity.instance();
@ -226,11 +226,11 @@ public class StatusFragment extends Fragment {
context = LinphoneService.instance(); context = LinphoneService.instance();
try { try {
if (state == RegistrationState.RegistrationOk && LinphoneManager.getLcIfManagerNotDestroyedOrNull().getDefaultProxyConfig().isRegistered()) { if (state == RegistrationState.Ok && LinphoneManager.getLcIfManagerNotDestroyedOrNull().getDefaultProxyConfig().getState() == RegistrationState.Ok) {
return context.getString(R.string.status_connected); return context.getString(R.string.status_connected);
} else if (state == RegistrationState.RegistrationProgress) { } else if (state == RegistrationState.Progress) {
return context.getString(R.string.status_in_progress); return context.getString(R.string.status_in_progress);
} else if (state == RegistrationState.RegistrationFailed) { } else if (state == RegistrationState.Failed) {
return context.getString(R.string.status_error); return context.getString(R.string.status_error);
} else { } else {
return context.getString(R.string.status_not_connected); return context.getString(R.string.status_not_connected);
@ -246,7 +246,7 @@ public class StatusFragment extends Fragment {
private void startCallQuality() { private void startCallQuality() {
callQuality.setVisibility(View.VISIBLE); callQuality.setVisibility(View.VISIBLE);
refreshHandler.postDelayed(mCallQualityUpdater = new Runnable() { refreshHandler.postDelayed(mCallQualityUpdater = new Runnable() {
LinphoneCall mCurrentCall = LinphoneManager.getLc() Call mCurrentCall = LinphoneManager.getLc()
.getCurrentCall(); .getCurrentCall();
public void run() { public void run() {
@ -297,19 +297,19 @@ public class StatusFragment extends Fragment {
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) { if (lc != null) {
lc.addListener(mListener); lc.addListener(mListener);
LinphoneProxyConfig lpc = lc.getDefaultProxyConfig(); ProxyConfig lpc = lc.getDefaultProxyConfig();
if (lpc != null) { if (lpc != null) {
mListener.registrationState(lc, lpc, lpc.getState(), null); mListener.onRegistrationStateChanged(lc, lpc, lpc.getState(), null);
} }
LinphoneCall call = lc.getCurrentCall(); Call call = lc.getCurrentCall();
if (isInCall && (call != null || lc.getConferenceSize() > 1 || lc.getCallsNb() > 0)) { if (isInCall && (call != null || lc.getConferenceSize() > 1 || lc.getCallsNb() > 0)) {
if (call != null) { if (call != null) {
startCallQuality(); startCallQuality();
refreshStatusItems(call, call.getCurrentParams().getVideoEnabled()); refreshStatusItems(call, call.getCurrentParams().videoEnabled());
} }
menu.setVisibility(View.INVISIBLE); menu.setVisibility(View.INVISIBLE);
encryption.setVisibility(View.VISIBLE); encryption.setVisibility(View.VISIBLE);
@ -334,7 +334,7 @@ public class StatusFragment extends Fragment {
public void onPause() { public void onPause() {
super.onPause(); super.onPause();
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) { if (lc != null) {
lc.removeListener(mListener); lc.removeListener(mListener);
} }
@ -345,7 +345,7 @@ public class StatusFragment extends Fragment {
} }
} }
public void refreshStatusItems(final LinphoneCall call, boolean isVideoEnabled) { public void refreshStatusItems(final Call call, boolean isVideoEnabled) {
if (call != null) { if (call != null) {
voicemailCount.setVisibility(View.GONE); voicemailCount.setVisibility(View.GONE);
MediaEncryption mediaEncryption = call.getCurrentParams().getMediaEncryption(); MediaEncryption mediaEncryption = call.getCurrentParams().getMediaEncryption();
@ -356,9 +356,9 @@ public class StatusFragment extends Fragment {
//background.setVisibility(View.VISIBLE); //background.setVisibility(View.VISIBLE);
} }
if (mediaEncryption == MediaEncryption.SRTP || (mediaEncryption == MediaEncryption.ZRTP && call.isAuthenticationTokenVerified()) || mediaEncryption == MediaEncryption.DTLS) { if (mediaEncryption == MediaEncryption.SRTP || (mediaEncryption == MediaEncryption.ZRTP && call.getAuthenticationTokenVerified()) || mediaEncryption == MediaEncryption.DTLS) {
encryption.setImageResource(R.drawable.security_ok); encryption.setImageResource(R.drawable.security_ok);
} else if (mediaEncryption == MediaEncryption.ZRTP && !call.isAuthenticationTokenVerified()) { } else if (mediaEncryption == MediaEncryption.ZRTP && !call.getAuthenticationTokenVerified()) {
encryption.setImageResource(R.drawable.security_pending); encryption.setImageResource(R.drawable.security_pending);
} else { } else {
encryption.setImageResource(R.drawable.security_ko); encryption.setImageResource(R.drawable.security_ko);
@ -377,7 +377,7 @@ public class StatusFragment extends Fragment {
} }
} }
public void showZRTPDialog(final LinphoneCall call) { public void showZRTPDialog(final Call call) {
if (getActivity() == null) { if (getActivity() == null) {
Log.w("Can't display ZRTP popup, no Activity"); Log.w("Can't display ZRTP popup, no Activity");
return; return;
@ -405,7 +405,7 @@ public class StatusFragment extends Fragment {
String zrtpToRead, zrtpToListen; String zrtpToRead, zrtpToListen;
isZrtpAsk = true; isZrtpAsk = true;
if (call.getDirection().equals(CallDirection.Incoming)) { if (call.getDir().equals(Call.Dir.Incoming)) {
zrtpToRead = token.substring(0,2); zrtpToRead = token.substring(0,2);
zrtpToListen = token.substring(2); zrtpToListen = token.substring(2);
} else { } else {

View file

@ -32,20 +32,21 @@ import org.linphone.LinphoneService;
import org.linphone.LinphoneUtils; import org.linphone.LinphoneUtils;
import org.linphone.R; import org.linphone.R;
import org.linphone.StatusFragment; import org.linphone.StatusFragment;
import org.linphone.core.AccountCreatorListener;
import org.linphone.core.DialPlan; import org.linphone.core.DialPlan;
import org.linphone.core.LinphoneAccountCreator; import org.linphone.core.AccountCreator;
import org.linphone.core.LinphoneAddress; import org.linphone.core.Address;
import org.linphone.core.LinphoneAddress.TransportType; import org.linphone.core.Address.TransportType;
import org.linphone.core.LinphoneAuthInfo; import org.linphone.core.AuthInfo;
import org.linphone.core.LinphoneCore; import org.linphone.core.Core;
import org.linphone.core.LinphoneCore.RegistrationState; import org.linphone.core.Core.RegistrationState;
import org.linphone.core.LinphoneCoreException; import org.linphone.core.CoreException;
import org.linphone.core.LinphoneCoreFactory; import org.linphone.core.Factory;
import org.linphone.core.LinphoneCoreListenerBase; import org.linphone.core.CoreListenerStub;
import org.linphone.core.LinphoneProxyConfig; import org.linphone.core.ProxyConfig;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
import org.linphone.mediastream.Version; import org.linphone.mediastream.Version;
import org.linphone.tools.OpenH264DownloadHelper; import org.linphone.core.tools.OpenH264DownloadHelper;
import android.Manifest; import android.Manifest;
import android.app.Activity; import android.app.Activity;
@ -81,7 +82,7 @@ import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
public class AssistantActivity extends Activity implements OnClickListener, ActivityCompat.OnRequestPermissionsResultCallback, LinphoneAccountCreator.LinphoneAccountCreatorListener { public class AssistantActivity extends Activity implements OnClickListener, ActivityCompat.OnRequestPermissionsResultCallback, AccountCreatorListener {
private static AssistantActivity instance; private static AssistantActivity instance;
private ImageView back, cancel; private ImageView back, cancel;
private AssistantFragmentsEnum currentFragment; private AssistantFragmentsEnum currentFragment;
@ -90,15 +91,15 @@ private static AssistantActivity instance;
private Fragment fragment; private Fragment fragment;
private LinphonePreferences mPrefs; private LinphonePreferences mPrefs;
private boolean accountCreated = false, newAccount = false, isLink = false, fromPref = false; private boolean accountCreated = false, newAccount = false, isLink = false, fromPref = false;
private LinphoneCoreListenerBase mListener; private CoreListenerStub mListener;
private LinphoneAddress address; private Address address;
private StatusFragment status; private StatusFragment status;
private ProgressDialog progress; private ProgressDialog progress;
private Dialog dialog; private Dialog dialog;
private boolean remoteProvisioningInProgress; private boolean remoteProvisioningInProgress;
private boolean echoCancellerAlreadyDone; private boolean echoCancellerAlreadyDone;
private static final int PERMISSIONS_REQUEST_RECORD_AUDIO = 201; private static final int PERMISSIONS_REQUEST_RECORD_AUDIO = 201;
private LinphoneAccountCreator accountCreator; private AccountCreator accountCreator;
private CountryListAdapter countryListAdapter; private CountryListAdapter countryListAdapter;
public DialPlan country; public DialPlan country;
@ -138,49 +139,49 @@ private static AssistantActivity instance;
mPrefs = LinphonePreferences.instance(); mPrefs = LinphonePreferences.instance();
status.enableSideMenu(false); status.enableSideMenu(false);
accountCreator = LinphoneCoreFactory.instance().createAccountCreator(LinphoneManager.getLc(), LinphonePreferences.instance().getXmlrpcUrl()); accountCreator = LinphoneManager.getLc().createAccountCreator(LinphonePreferences.instance().getXmlrpcUrl());
accountCreator.setListener(this); accountCreator.setListener(this);
countryListAdapter = new CountryListAdapter(getApplicationContext()); countryListAdapter = new CountryListAdapter(getApplicationContext());
mListener = new LinphoneCoreListenerBase() { mListener = new CoreListenerStub() {
@Override @Override
public void configuringStatus(LinphoneCore lc, final LinphoneCore.RemoteProvisioningState state, String message) { public void onConfiguringStatus(Core lc, final Core.ConfiguringState state, String message) {
if (progress != null) progress.dismiss(); if (progress != null) progress.dismiss();
if (state == LinphoneCore.RemoteProvisioningState.ConfiguringSuccessful) { if (state == Core.ConfiguringState.Successful) {
goToLinphoneActivity(); goToLinphoneActivity();
} else if (state == LinphoneCore.RemoteProvisioningState.ConfiguringFailed) { } else if (state == Core.ConfiguringState.Failed) {
Toast.makeText(AssistantActivity.instance(), getString(R.string.remote_provisioning_failure), Toast.LENGTH_LONG).show(); Toast.makeText(AssistantActivity.instance(), getString(R.string.remote_provisioning_failure), Toast.LENGTH_LONG).show();
} }
} }
@Override @Override
public void registrationState(LinphoneCore lc, LinphoneProxyConfig cfg, RegistrationState state, String smessage) { public void onRegistrationStateChanged(Core lc, ProxyConfig cfg, RegistrationState state, String smessage) {
if (remoteProvisioningInProgress) { if (remoteProvisioningInProgress) {
if (progress != null) progress.dismiss(); if (progress != null) progress.dismiss();
if (state == RegistrationState.RegistrationOk) { if (state == RegistrationState.Ok) {
remoteProvisioningInProgress = false; remoteProvisioningInProgress = false;
success(); success();
} }
} else if (accountCreated && !newAccount){ } else if (accountCreated && !newAccount){
if (address != null && address.asString().equals(cfg.getAddress().asString()) ) { if (address != null && address.asString().equals(cfg.getIdentityAddress().asString()) ) {
if (state == RegistrationState.RegistrationOk) { if (state == RegistrationState.Ok) {
if (progress != null) progress.dismiss(); if (progress != null) progress.dismiss();
if (getResources().getBoolean(R.bool.use_phone_number_validation) if (getResources().getBoolean(R.bool.use_phone_number_validation)
&& cfg.getDomain().equals(getString(R.string.default_domain)) && cfg.getDomain().equals(getString(R.string.default_domain))
&& LinphoneManager.getLc().getDefaultProxyConfig() != null) { && LinphoneManager.getLc().getDefaultProxyConfig() != null) {
accountCreator.isAccountUsed(); accountCreator.isAccountExist();
} else { } else {
success(); success();
} }
} else if (state == RegistrationState.RegistrationFailed) { } else if (state == RegistrationState.Failed) {
if (progress != null) progress.dismiss(); if (progress != null) progress.dismiss();
if (dialog == null || !dialog.isShowing()) { if (dialog == null || !dialog.isShowing()) {
dialog = createErrorDialog(cfg, smessage); dialog = createErrorDialog(cfg, smessage);
dialog.setCancelable(false); dialog.setCancelable(false);
dialog.show(); dialog.show();
} }
} else if(!(state == RegistrationState.RegistrationProgress)) { } else if(!(state == RegistrationState.Progress)) {
if (progress != null) progress.dismiss(); if (progress != null) progress.dismiss();
} }
} }
@ -194,7 +195,7 @@ private static AssistantActivity instance;
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) { if (lc != null) {
lc.addListener(mListener); lc.addListener(mListener);
} }
@ -202,7 +203,7 @@ private static AssistantActivity instance;
@Override @Override
protected void onPause() { protected void onPause() {
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) { if (lc != null) {
lc.removeListener(mListener); lc.removeListener(mListener);
} }
@ -344,70 +345,66 @@ private static AssistantActivity instance;
} }
} }
public void configureLinphoneProxyConfig(LinphoneAccountCreator accountCreator) { public void configureProxyConfig(AccountCreator accountCreator) {
LinphoneCore lc = LinphoneManager.getLc(); Core lc = LinphoneManager.getLc();
LinphoneProxyConfig proxyConfig = lc.createProxyConfig(); ProxyConfig proxyConfig = lc.createProxyConfig();
LinphoneAddress addr; Address addr;
LinphoneAuthInfo authInfo; AuthInfo authInfo;
try { String identity = proxyConfig.getIdentityAddress().asStringUriOnly();
String identity = proxyConfig.getIdentity(); if (identity == null || accountCreator.getUsername() == null) {
if (identity == null || accountCreator.getUsername() == null) { LinphoneUtils.displayErrorAlert(getString(R.string.error), this);
LinphoneUtils.displayErrorAlert(getString(R.string.error), this); return;
return;
}
identity = identity.replace("?", accountCreator.getUsername());
addr = LinphoneCoreFactory.instance().createLinphoneAddress(identity);
addr.setDisplayName(accountCreator.getUsername());
address = addr;
proxyConfig.edit();
proxyConfig.setIdentity(addr.asString());
if (LinphonePreferences.instance() != null)
proxyConfig.setContactUriParameters(LinphonePreferences.instance().getPushNotificationRegistrationID());
if (accountCreator.getPhoneNumber() != null && accountCreator.getPhoneNumber().length() > 0)
proxyConfig.setDialPrefix(accountCreator.getPrefix(accountCreator.getPhoneNumber()));
proxyConfig.done();
authInfo = LinphoneCoreFactory.instance().createAuthInfo(
accountCreator.getUsername(),
null,
accountCreator.getPassword(),
accountCreator.getHa1(),
proxyConfig.getRealm(),
proxyConfig.getDomain());
lc.addProxyConfig(proxyConfig);
lc.addAuthInfo(authInfo);
lc.setDefaultProxyConfig(proxyConfig);
if (ContactsManager.getInstance() != null)
ContactsManager.getInstance().fetchContactsAsync();
if (LinphonePreferences.instance() != null)
mPrefs.enabledFriendlistSubscription(getResources().getBoolean(R.bool.use_friendlist_subscription));
LinphoneManager.getInstance().subscribeFriendList(getResources().getBoolean(R.bool.use_friendlist_subscription));
if (!newAccount) {
displayRegistrationInProgressDialog();
}
accountCreated = true;
} catch (LinphoneCoreException e) {
Log.e("Can't configure proxy config ", e);
} }
identity = identity.replace("?", accountCreator.getUsername());
addr = Factory.instance().createAddress(identity);
addr.setDisplayName(accountCreator.getUsername());
address = addr;
proxyConfig.edit();
proxyConfig.setIdentityAddress(addr);
if (LinphonePreferences.instance() != null)
proxyConfig.setContactUriParameters(LinphonePreferences.instance().getPushNotificationRegistrationID());
if (accountCreator.getPhoneNumber() != null && accountCreator.getPhoneNumber().length() > 0)
proxyConfig.setDialPrefix(org.linphone.core.Utils.getPrefixFromE164(accountCreator.getPhoneNumber()));
proxyConfig.done();
authInfo = Factory.instance().createAuthInfo(
accountCreator.getUsername(),
null,
accountCreator.getPassword(),
accountCreator.getHa1(),
proxyConfig.getRealm(),
proxyConfig.getDomain());
lc.addProxyConfig(proxyConfig);
lc.addAuthInfo(authInfo);
lc.setDefaultProxyConfig(proxyConfig);
if (ContactsManager.getInstance() != null)
ContactsManager.getInstance().fetchContactsAsync();
if (LinphonePreferences.instance() != null)
mPrefs.enabledFriendlistSubscription(getResources().getBoolean(R.bool.use_friendlist_subscription));
LinphoneManager.getInstance().subscribeFriendList(getResources().getBoolean(R.bool.use_friendlist_subscription));
if (!newAccount) {
displayRegistrationInProgressDialog();
}
accountCreated = true;
} }
public void linphoneLogIn(LinphoneAccountCreator accountCreator) { public void linphoneLogIn(AccountCreator accountCreator) {
LinphoneManager.getLc().getConfig().loadXmlFile(LinphoneManager.getInstance().getmDynamicConfigFile()); LinphoneManager.getLc().getConfig().loadFromXmlFile(LinphoneManager.getInstance().getmDynamicConfigFile());
configureLinphoneProxyConfig(accountCreator); configureProxyConfig(accountCreator);
} }
public void genericLogIn(String username, String userid, String password, String prefix, String domain, TransportType transport) { public void genericLogIn(String username, String userid, String password, String prefix, String domain, TransportType transport) {
@ -482,8 +479,8 @@ private static AssistantActivity instance;
} }
private void launchDownloadCodec() { private void launchDownloadCodec() {
if (LinphoneManager.getLc().downloadOpenH264Enabled()) { if (OpenH264DownloadHelper.isOpenH264DownloadEnabled()) {
OpenH264DownloadHelper downloadHelper = LinphoneCoreFactory.instance().createOpenH264DownloadHelper(); OpenH264DownloadHelper downloadHelper = Factory.instance().createOpenH264DownloadHelper(this);
if (Version.getCpuAbis().contains("armeabi-v7a") && !Version.getCpuAbis().contains("x86") && !downloadHelper.isCodecFound()) { if (Version.getCpuAbis().contains("armeabi-v7a") && !Version.getCpuAbis().contains("x86") && !downloadHelper.isCodecFound()) {
CodecDownloaderFragment codecFragment = new CodecDownloaderFragment(); CodecDownloaderFragment codecFragment = new CodecDownloaderFragment();
changeFragment(codecFragment); changeFragment(codecFragment);
@ -503,7 +500,7 @@ private static AssistantActivity instance;
public String getPhoneWithCountry() { public String getPhoneWithCountry() {
if(country == null || phone_number == null) return ""; if(country == null || phone_number == null) return "";
String phoneNumberWithCountry = country.getCountryCode() + phone_number.replace("\\D", ""); String phoneNumberWithCountry = country.getCountryCallingCode() + phone_number.replace("\\D", "");
return phoneNumberWithCountry; return phoneNumberWithCountry;
} }
@ -513,17 +510,13 @@ private static AssistantActivity instance;
domain = LinphoneUtils.getDisplayableUsernameFromAddress(domain); domain = LinphoneUtils.getDisplayableUsernameFromAddress(domain);
String identity = "sip:" + username + "@" + domain; String identity = "sip:" + username + "@" + domain;
try { address = Factory.instance().createAddress(identity);
address = LinphoneCoreFactory.instance().createLinphoneAddress(identity);
} catch (LinphoneCoreException e) {
Log.e(e);
}
AccountBuilder builder = new AccountBuilder(LinphoneManager.getLc()) AccountBuilder builder = new AccountBuilder(LinphoneManager.getLc())
.setUsername(username) .setUsername(username)
.setDomain(domain) .setDomain(domain)
.setHa1(ha1) .setHa1(ha1)
.setUserId(userid) .setUserid(userid)
.setPassword(password); .setPassword(password);
if (prefix != null) { if (prefix != null) {
@ -532,9 +525,9 @@ private static AssistantActivity instance;
String forcedProxy = ""; String forcedProxy = "";
if (!TextUtils.isEmpty(forcedProxy)) { if (!TextUtils.isEmpty(forcedProxy)) {
builder.setProxy(forcedProxy) builder.setServerAddr(forcedProxy)
.setOutboundProxyEnabled(true) .setOutboundProxyEnabled(true)
.setAvpfRRInterval(5); .setAvpfRrInterval(5);
} }
if (transport != null) { if (transport != null) {
builder.setTransport(transport); builder.setTransport(transport);
@ -546,7 +539,7 @@ private static AssistantActivity instance;
displayRegistrationInProgressDialog(); displayRegistrationInProgressDialog();
} }
accountCreated = true; accountCreated = true;
} catch (LinphoneCoreException e) { } catch (CoreException e) {
Log.e(e); Log.e(e);
} }
} }
@ -628,7 +621,7 @@ private static AssistantActivity instance;
launchDownloadCodec(); launchDownloadCodec();
} }
public Dialog createErrorDialog(LinphoneProxyConfig proxy, String message){ public Dialog createErrorDialog(ProxyConfig proxy, String message){
AlertDialog.Builder builder = new AlertDialog.Builder(this); AlertDialog.Builder builder = new AlertDialog.Builder(this);
if(message.equals("Forbidden")) { if(message.equals("Forbidden")) {
message = getString(R.string.assistant_error_bad_credentials); message = getString(R.string.assistant_error_bad_credentials);
@ -652,7 +645,7 @@ private static AssistantActivity instance;
} }
public void success() { public void success() {
boolean needsEchoCalibration = LinphoneManager.getLc().needsEchoCalibration(); boolean needsEchoCalibration = LinphoneManager.getLc().isEchoCancellerCalibrationRequired();
if (needsEchoCalibration && mPrefs.isFirstLaunch()) { if (needsEchoCalibration && mPrefs.isFirstLaunch()) {
launchEchoCancellerCalibration(true); launchEchoCancellerCalibration(true);
} else { } else {
@ -666,13 +659,13 @@ private static AssistantActivity instance;
finish(); finish();
} }
public void setLinphoneCoreListener() { public void setCoreListener() {
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) { if (lc != null) {
lc.addListener(mListener); lc.addListener(mListener);
} }
if (status != null) { if (status != null) {
status.setLinphoneCoreListener(); status.setCoreListener();
} }
} }
@ -692,8 +685,8 @@ private static AssistantActivity instance;
} }
@Override @Override
public void onAccountCreatorIsAccountUsed(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onIsAccountExist(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
if(status.equals(LinphoneAccountCreator.RequestStatus.AccountExistWithAlias)){ if(status.equals(AccountCreator.Status.AccountExistWithAlias)){
success(); success();
} else { } else {
isLink = true; isLink = true;
@ -703,47 +696,47 @@ private static AssistantActivity instance;
} }
@Override @Override
public void onAccountCreatorAccountCreated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onCreateAccount(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorAccountActivated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onActivateAccount(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorAccountLinkedWithPhoneNumber(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onLinkAccount(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorPhoneNumberLinkActivated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onActivateAlias(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorIsAccountActivated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onIsAccountActivated(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorPhoneAccountRecovered(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onRecoverAccount(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorIsAccountLinked(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onIsAccountLinked(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorIsPhoneNumberUsed(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onIsAliasUsed(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorPasswordUpdated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onUpdateAccount(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@ -764,7 +757,7 @@ private static AssistantActivity instance;
public CountryListAdapter(Context ctx) { public CountryListAdapter(Context ctx) {
context = ctx; context = ctx;
allCountries = LinphoneCoreFactory.instance().getAllDialPlan(); allCountries = Factory.instance().getDialPlans();
filteredCountries = new ArrayList<DialPlan>(Arrays.asList(allCountries)); filteredCountries = new ArrayList<DialPlan>(Arrays.asList(allCountries));
} }
@ -810,7 +803,7 @@ private static AssistantActivity instance;
DialPlan c = filteredCountries.get(position); DialPlan c = filteredCountries.get(position);
TextView name = (TextView) view.findViewById(R.id.country_name); TextView name = (TextView) view.findViewById(R.id.country_name);
name.setText(c.getCountryName()); name.setText(c.getCountry());
TextView dial_code = (TextView) view.findViewById(R.id.country_prefix); TextView dial_code = (TextView) view.findViewById(R.id.country_prefix);
if (context != null) if (context != null)
@ -827,7 +820,7 @@ private static AssistantActivity instance;
protected FilterResults performFiltering(CharSequence constraint) { protected FilterResults performFiltering(CharSequence constraint) {
ArrayList<DialPlan> filteredCountries = new ArrayList<DialPlan>(); ArrayList<DialPlan> filteredCountries = new ArrayList<DialPlan>();
for (DialPlan c : allCountries) { for (DialPlan c : allCountries) {
if (c.getCountryName().toLowerCase().contains(constraint) if (c.getCountry().toLowerCase().contains(constraint)
|| c.getCountryCallingCode().contains(constraint)) { || c.getCountryCallingCode().contains(constraint)) {
filteredCountries.add(c); filteredCountries.add(c);
} }

View file

@ -21,10 +21,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
import org.linphone.LinphoneManager; import org.linphone.LinphoneManager;
import org.linphone.R; import org.linphone.R;
import org.linphone.core.LinphoneCoreException; import org.linphone.core.CoreException;
import org.linphone.core.OpenH264DownloadHelperListener; import org.linphone.core.tools.OpenH264DownloadHelperListener;
import org.linphone.core.PayloadType; import org.linphone.core.PayloadType;
import org.linphone.tools.OpenH264DownloadHelper; import org.linphone.core.tools.OpenH264DownloadHelper;
import android.app.Fragment; import android.app.Fragment;
import android.os.Build; import android.os.Build;
@ -195,14 +195,14 @@ public class CodecDownloaderFragment extends Fragment {
private void enabledH264(boolean enable) { private void enabledH264(boolean enable) {
PayloadType h264 = null; PayloadType h264 = null;
for (PayloadType pt : LinphoneManager.getLc().getVideoCodecs()) { for (PayloadType pt : LinphoneManager.getLc().getVideoPayloadTypes()) {
if (pt.getMime().equals("H264")) h264 = pt; if (pt.getMimeType().equals("H264")) h264 = pt;
} }
if (h264 != null) { if (h264 != null) {
try { try {
LinphoneManager.getLc().enablePayloadType(h264, enable); LinphoneManager.getLc().enablePayloadType(h264, enable);
} catch (LinphoneCoreException e) { } catch (CoreException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }

View file

@ -30,23 +30,22 @@ import android.widget.Toast;
import org.linphone.LinphoneManager; import org.linphone.LinphoneManager;
import org.linphone.LinphonePreferences; import org.linphone.LinphonePreferences;
import org.linphone.R; import org.linphone.R;
import org.linphone.core.LinphoneAccountCreator; import org.linphone.core.AccountCreator;
import org.linphone.core.LinphoneAccountCreator.LinphoneAccountCreatorListener; import org.linphone.core.AccountCreatorListener;
import org.linphone.core.LinphoneCoreFactory; import org.linphone.core.Factory;
public class CreateAccountActivationFragment extends Fragment implements OnClickListener, LinphoneAccountCreatorListener { public class CreateAccountActivationFragment extends Fragment implements OnClickListener, AccountCreatorListener {
private String username, password; private String username, password;
private Button checkAccount; private Button checkAccount;
private TextView email; private TextView email;
private LinphoneAccountCreator accountCreator; private AccountCreator accountCreator;
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.assistant_account_creation_email_activation, container, false); View view = inflater.inflate(R.layout.assistant_account_creation_email_activation, container, false);
accountCreator = LinphoneCoreFactory.instance().createAccountCreator(LinphoneManager.getLc() accountCreator = LinphoneManager.getLc().createAccountCreator(LinphonePreferences.instance().getXmlrpcUrl());
, LinphonePreferences.instance().getXmlrpcUrl());
accountCreator.setListener(this); accountCreator.setListener(this);
username = getArguments().getString("Username"); username = getArguments().getString("Username");
@ -73,33 +72,33 @@ public class CreateAccountActivationFragment extends Fragment implements OnClick
} }
@Override @Override
public void onAccountCreatorIsAccountUsed(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onIsAccountExist(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorAccountCreated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onCreateAccount(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorAccountActivated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onActivateAccount(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorAccountLinkedWithPhoneNumber(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onLinkAccount(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorPhoneNumberLinkActivated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onActivateAlias(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorIsAccountActivated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onIsAccountActivated(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
if (AssistantActivity.instance() == null) { if (AssistantActivity.instance() == null) {
return; return;
} }
if (status.equals(LinphoneAccountCreator.RequestStatus.AccountNotActivated)) { if (status.equals(AccountCreator.Status.AccountNotActivated)) {
Toast.makeText(getActivity(), getString(R.string.assistant_account_not_validated), Toast.LENGTH_LONG).show(); Toast.makeText(getActivity(), getString(R.string.assistant_account_not_validated), Toast.LENGTH_LONG).show();
} else if (status.equals(LinphoneAccountCreator.RequestStatus.AccountActivated)) { } else if (status.equals(AccountCreator.Status.AccountActivated)) {
AssistantActivity.instance().linphoneLogIn(accountCreator); AssistantActivity.instance().linphoneLogIn(accountCreator);
AssistantActivity.instance().isAccountVerified(username); AssistantActivity.instance().isAccountVerified(username);
} else { } else {
@ -109,19 +108,19 @@ public class CreateAccountActivationFragment extends Fragment implements OnClick
} }
@Override @Override
public void onAccountCreatorPhoneAccountRecovered(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onRecoverAccount(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorIsAccountLinked(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onIsAccountLinked(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorIsPhoneNumberUsed(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onIsAliasUsed(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorPasswordUpdated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onUpdateAccount(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
} }

View file

@ -21,9 +21,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
import org.linphone.LinphoneManager; import org.linphone.LinphoneManager;
import org.linphone.LinphonePreferences; import org.linphone.LinphonePreferences;
import org.linphone.R; import org.linphone.R;
import org.linphone.core.LinphoneAccountCreator; import org.linphone.core.AccountCreator;
import org.linphone.core.LinphoneAccountCreator.LinphoneAccountCreatorListener; import org.linphone.core.AccountCreatorListener;
import org.linphone.core.LinphoneCoreFactory; import org.linphone.core.Factory;
import android.app.Fragment; import android.app.Fragment;
import android.os.Bundle; import android.os.Bundle;
@ -39,7 +39,7 @@ import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
public class CreateAccountCodeActivationFragment extends Fragment implements LinphoneAccountCreatorListener { public class CreateAccountCodeActivationFragment extends Fragment implements AccountCreatorListener {
private String username, phone, dialcode; private String username, phone, dialcode;
private TextView title, phonenumber; private TextView title, phonenumber;
private EditText code; private EditText code;
@ -47,7 +47,7 @@ public class CreateAccountCodeActivationFragment extends Fragment implements Lin
private int code_length, accountNumber; private int code_length, accountNumber;
private ImageView back; private ImageView back;
private Button checkAccount; private Button checkAccount;
private LinphoneAccountCreator accountCreator; private AccountCreator accountCreator;
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
@ -62,7 +62,7 @@ public class CreateAccountCodeActivationFragment extends Fragment implements Lin
accountNumber = getArguments().getInt("AccountNumber"); accountNumber = getArguments().getInt("AccountNumber");
code_length = LinphonePreferences.instance().getCodeLength(); code_length = LinphonePreferences.instance().getCodeLength();
accountCreator = LinphoneCoreFactory.instance().createAccountCreator(LinphoneManager.getLc(), LinphonePreferences.instance().getXmlrpcUrl()); accountCreator = LinphoneManager.getLc().createAccountCreator(LinphonePreferences.instance().getXmlrpcUrl());
accountCreator.setListener(this); accountCreator.setListener(this);
accountCreator.setUsername(username); accountCreator.setUsername(username);
accountCreator.setPhoneNumber(phone, dialcode); accountCreator.setPhoneNumber(phone, dialcode);
@ -121,7 +121,7 @@ public class CreateAccountCodeActivationFragment extends Fragment implements Lin
private void linkAccount(){ private void linkAccount(){
accountCreator.setUsername(LinphonePreferences.instance().getAccountUsername(accountNumber)); accountCreator.setUsername(LinphonePreferences.instance().getAccountUsername(accountNumber));
accountCreator.setHa1(LinphonePreferences.instance().getAccountHa1(accountNumber)); accountCreator.setHa1(LinphonePreferences.instance().getAccountHa1(accountNumber));
accountCreator.activatePhoneNumberLink(); accountCreator.activateAlias();
} }
private void activateAccount() { private void activateAccount() {
@ -132,19 +132,19 @@ public class CreateAccountCodeActivationFragment extends Fragment implements Lin
} }
@Override @Override
public void onAccountCreatorIsAccountUsed(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onIsAccountExist(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorAccountCreated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onCreateAccount(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorAccountActivated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onActivateAccount(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
if (AssistantActivity.instance() == null) { if (AssistantActivity.instance() == null) {
return; return;
} }
if (status.equals(LinphoneAccountCreator.RequestStatus.AccountActivated)) { if (status.equals(AccountCreator.Status.AccountActivated)) {
checkAccount.setEnabled(true); checkAccount.setEnabled(true);
if (accountCreator.getUsername() != null) { if (accountCreator.getUsername() != null) {
AssistantActivity.instance().linphoneLogIn(accountCreator); AssistantActivity.instance().linphoneLogIn(accountCreator);
@ -161,7 +161,7 @@ public class CreateAccountCodeActivationFragment extends Fragment implements Lin
AssistantActivity.instance().success(); AssistantActivity.instance().success();
} }
} }
} else if (status.equals(LinphoneAccountCreator.RequestStatus.Failed)) { } else if (status.equals(AccountCreator.Status.RequestFailed)) {
Toast.makeText(getActivity(), getString(R.string.wizard_server_unavailable), Toast.LENGTH_LONG).show(); Toast.makeText(getActivity(), getString(R.string.wizard_server_unavailable), Toast.LENGTH_LONG).show();
} else { } else {
Toast.makeText(getActivity(), getString(R.string.assistant_error_confirmation_code), Toast.LENGTH_LONG).show(); Toast.makeText(getActivity(), getString(R.string.assistant_error_confirmation_code), Toast.LENGTH_LONG).show();
@ -170,17 +170,17 @@ public class CreateAccountCodeActivationFragment extends Fragment implements Lin
} }
@Override @Override
public void onAccountCreatorAccountLinkedWithPhoneNumber(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onLinkAccount(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorPhoneNumberLinkActivated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onActivateAlias(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
if (AssistantActivity.instance() == null) { if (AssistantActivity.instance() == null) {
return; return;
} }
if(status.equals(LinphoneAccountCreator.RequestStatus.AccountActivated)){ if(status.equals(AccountCreator.Status.AccountActivated)){
LinphonePreferences.instance().setPrefix(accountNumber, accountCreator.getPrefix(accountCreator.getPhoneNumber())); LinphonePreferences.instance().setPrefix(accountNumber, org.linphone.core.Utils.getPrefixFromE164(accountCreator.getPhoneNumber()));
LinphonePreferences.instance().setLinkPopupTime(""); LinphonePreferences.instance().setLinkPopupTime("");
AssistantActivity.instance().hideKeyboard(); AssistantActivity.instance().hideKeyboard();
AssistantActivity.instance().success(); AssistantActivity.instance().success();
@ -188,26 +188,26 @@ public class CreateAccountCodeActivationFragment extends Fragment implements Lin
} }
@Override @Override
public void onAccountCreatorIsAccountActivated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onIsAccountActivated(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorPhoneAccountRecovered(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onRecoverAccount(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorIsAccountLinked(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onIsAccountLinked(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorIsPhoneNumberUsed(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onIsAliasUsed(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorPasswordUpdated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onUpdateAccount(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
} }

View file

@ -28,11 +28,11 @@ import org.linphone.LinphonePreferences;
import org.linphone.LinphoneUtils; import org.linphone.LinphoneUtils;
import org.linphone.R; import org.linphone.R;
import org.linphone.core.DialPlan; import org.linphone.core.DialPlan;
import org.linphone.core.LinphoneAccountCreator; import org.linphone.core.AccountCreator;
import org.linphone.core.LinphoneAccountCreator.LinphoneAccountCreatorListener; import org.linphone.core.AccountCreatorListener;
import org.linphone.core.LinphoneAccountCreator.RequestStatus; import org.linphone.core.AccountCreator.Status;
import org.linphone.core.LinphoneCoreFactory; import org.linphone.core.Factory;
import org.linphone.core.LinphoneProxyConfig; import org.linphone.core.ProxyConfig;
import android.accounts.Account; import android.accounts.Account;
import android.accounts.AccountManager; import android.accounts.AccountManager;
@ -59,7 +59,7 @@ import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
public class CreateAccountFragment extends Fragment implements CompoundButton.OnCheckedChangeListener public class CreateAccountFragment extends Fragment implements CompoundButton.OnCheckedChangeListener
, OnClickListener, LinphoneAccountCreatorListener { , OnClickListener, AccountCreatorListener {
private EditText phoneNumberEdit, usernameEdit, passwordEdit, passwordConfirmEdit private EditText phoneNumberEdit, usernameEdit, passwordEdit, passwordConfirmEdit
, emailEdit, dialCode; , emailEdit, dialCode;
private TextView phoneNumberError, passwordError, passwordConfirmError private TextView phoneNumberError, passwordError, passwordConfirmError
@ -76,15 +76,14 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On
private int countryCode; private int countryCode;
private LinearLayout phoneNumberLayout, usernameLayout, emailLayout, passwordLayout, passwordConfirmLayout; private LinearLayout phoneNumberLayout, usernameLayout, emailLayout, passwordLayout, passwordConfirmLayout;
private final Pattern UPPER_CASE_REGEX = Pattern.compile("[A-Z]"); private final Pattern UPPER_CASE_REGEX = Pattern.compile("[A-Z]");
private LinphoneAccountCreator accountCreator; private AccountCreator accountCreator;
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.assistant_account_creation, container, false); View view = inflater.inflate(R.layout.assistant_account_creation, container, false);
//Initialize accountCreator //Initialize accountCreator
accountCreator = LinphoneCoreFactory.instance().createAccountCreator(LinphoneManager.getLc() accountCreator = LinphoneManager.getLc().createAccountCreator(LinphonePreferences.instance().getXmlrpcUrl());
, LinphonePreferences.instance().getXmlrpcUrl());
accountCreator.setListener(this); accountCreator.setListener(this);
instruction = (TextView) view.findViewById(R.id.message_create_account); instruction = (TextView) view.findViewById(R.id.message_create_account);
@ -131,8 +130,8 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On
(TelephonyManager) getActivity().getApplicationContext().getSystemService( (TelephonyManager) getActivity().getApplicationContext().getSystemService(
Context.TELEPHONY_SERVICE); Context.TELEPHONY_SERVICE);
String countryIso = tm.getNetworkCountryIso(); String countryIso = tm.getNetworkCountryIso();
LinphoneProxyConfig proxyConfig = LinphoneManager.getLc().createProxyConfig(); ProxyConfig proxyConfig = LinphoneManager.getLc().createProxyConfig();
countryCode = proxyConfig.lookupCCCFromIso(countryIso.toUpperCase()); countryCode = org.linphone.core.Utils.getCccFromIso(countryIso.toUpperCase());
phoneNumberLayout.setVisibility(View.VISIBLE); phoneNumberLayout.setVisibility(View.VISIBLE);
@ -145,14 +144,14 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On
} }
DialPlan c = AssistantActivity.instance().country; DialPlan c = AssistantActivity.instance().country;
if (c != null) { if (c != null) {
selectCountry.setText(c.getCountryName()); selectCountry.setText(c.getCountry());
dialCode.setText(c.getCountryCallingCode().contains("+") ? dialCode.setText(c.getCountryCallingCode().contains("+") ?
c.getCountryCallingCode() : "+" + c.getCountryCallingCode()); c.getCountryCallingCode() : "+" + c.getCountryCallingCode());
} else { } else {
c = AssistantActivity.instance().getCountryListAdapter() c = AssistantActivity.instance().getCountryListAdapter()
.getCountryFromCountryCode(String.valueOf(countryCode)); .getCountryFromCountryCode(String.valueOf(countryCode));
if (c != null) { if (c != null) {
selectCountry.setText(c.getCountryName()); selectCountry.setText(c.getCountry());
dialCode.setText(c.getCountryCallingCode().contains("+") ? dialCode.setText(c.getCountryCallingCode().contains("+") ?
c.getCountryCallingCode() : "+" + c.getCountryCallingCode()); c.getCountryCallingCode() : "+" + c.getCountryCallingCode());
} }
@ -325,9 +324,9 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On
} else { } else {
if (useEmail.isChecked()) accountCreator.setPhoneNumber(null, null); if (useEmail.isChecked()) accountCreator.setPhoneNumber(null, null);
if (!getResources().getBoolean(R.bool.isTablet) || getUsername().length() > 0) { if (!getResources().getBoolean(R.bool.isTablet) || getUsername().length() > 0) {
accountCreator.isAccountUsed(); accountCreator.isAccountExist();
} else { } else {
LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForUsernameStatus(LinphoneAccountCreator.UsernameCheck.TooShort) LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForUsernameStatus(AccountCreator.UsernameStatus.TooShort)
, AssistantActivity.instance()); , AssistantActivity.instance());
createAccount.setEnabled(true); createAccount.setEnabled(true);
} }
@ -350,9 +349,9 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On
); );
int status = accountCreator.setPhoneNumber( int status = accountCreator.setPhoneNumber(
phoneNumberEdit.getText().toString(), LinphoneUtils.getCountryCode(dialCode)); phoneNumberEdit.getText().toString(), LinphoneUtils.getCountryCode(dialCode));
boolean isOk = status == LinphoneAccountCreator.PhoneNumberCheck.Ok.value(); boolean isOk = status == AccountCreator.PhoneNumberStatus.Ok.toInt();
if (isOk) { if (isOk) {
accountCreator.linkPhoneNumberWithAccount(); accountCreator.linkAccount();
} else { } else {
createAccount.setEnabled(true); createAccount.setEnabled(true);
LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForPhoneNumberStatus(status), AssistantActivity.instance()); LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForPhoneNumberStatus(status), AssistantActivity.instance());
@ -363,8 +362,8 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On
private void createAccount() { private void createAccount() {
if ((getResources().getBoolean(R.bool.isTablet) || !getResources().getBoolean(R.bool.use_phone_number_validation)) if ((getResources().getBoolean(R.bool.isTablet) || !getResources().getBoolean(R.bool.use_phone_number_validation))
&& useEmail.isChecked()) { && useEmail.isChecked()) {
LinphoneAccountCreator.EmailCheck emailStatus; AccountCreator.EmailStatus emailStatus;
LinphoneAccountCreator.PasswordCheck passwordStatus; AccountCreator.PasswordStatus passwordStatus;
passwordStatus = accountCreator.setPassword(passwordEdit.getText().toString()); passwordStatus = accountCreator.setPassword(passwordEdit.getText().toString());
emailStatus = accountCreator.setEmail(emailEdit.getText().toString()); emailStatus = accountCreator.setEmail(emailEdit.getText().toString());
@ -395,7 +394,7 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On
boolean isOk; boolean isOk;
phoneStatus = accountCreator.setPhoneNumber( phoneStatus = accountCreator.setPhoneNumber(
phoneNumberEdit.getText().toString(), LinphoneUtils.getCountryCode(dialCode)); phoneNumberEdit.getText().toString(), LinphoneUtils.getCountryCode(dialCode));
isOk = phoneStatus == LinphoneAccountCreator.PhoneNumberCheck.Ok.value(); isOk = phoneStatus == AccountCreator.PhoneNumberStatus.Ok.toInt();
if (!useUsername.isChecked() && accountCreator.getUsername() == null) { if (!useUsername.isChecked() && accountCreator.getUsername() == null) {
accountCreator.setUsername(accountCreator.getPhoneNumber()); accountCreator.setUsername(accountCreator.getPhoneNumber());
} else { } else {
@ -432,7 +431,7 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On
if (!useEmail.isChecked() && getResources().getBoolean(R.bool.use_phone_number_validation)) { if (!useEmail.isChecked() && getResources().getBoolean(R.bool.use_phone_number_validation)) {
int status = getPhoneNumberStatus(); int status = getPhoneNumberStatus();
boolean isOk = (status == LinphoneAccountCreator.PhoneNumberCheck.Ok.value()); boolean isOk = (status == AccountCreator.PhoneNumberStatus.Ok.toInt());
LinphoneUtils.displayError(isOk, phoneNumberError, LinphoneUtils.errorForPhoneNumberStatus(status)); LinphoneUtils.displayError(isOk, phoneNumberError, LinphoneUtils.errorForPhoneNumberStatus(status));
// Username or phone number // Username or phone number
@ -441,7 +440,7 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On
} }
if (!isOk) { if (!isOk) {
if (status == LinphoneAccountCreator.PhoneNumberCheck.CountryCodeInvalid.value()) { if (status == AccountCreator.PhoneNumberStatus.InvalidCountryCode.toInt()) {
dialCode.setBackgroundResource(R.drawable.resizable_textfield_error); dialCode.setBackgroundResource(R.drawable.resizable_textfield_error);
phoneNumberEdit.setBackgroundResource(R.drawable.resizable_textfield); phoneNumberEdit.setBackgroundResource(R.drawable.resizable_textfield);
} else { } else {
@ -475,7 +474,7 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On
.getCountryFromCountryCode(dialCode.getText().toString()); .getCountryFromCountryCode(dialCode.getText().toString());
if (c != null) { if (c != null) {
AssistantActivity.instance().country = c; AssistantActivity.instance().country = c;
selectCountry.setText(c.getCountryName()); selectCountry.setText(c.getCountry());
} else { } else {
selectCountry.setText(R.string.select_your_country); selectCountry.setText(R.string.select_your_country);
} }
@ -513,8 +512,8 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On
field.addTextChangedListener(new TextWatcher() { field.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) { public void afterTextChanged(Editable s) {
emailOk = false; emailOk = false;
LinphoneAccountCreator.EmailCheck status = accountCreator.setEmail(field.getText().toString()); AccountCreator.EmailStatus status = accountCreator.setEmail(field.getText().toString());
if (status.equals(LinphoneAccountCreator.EmailCheck.Ok)) { if (status.equals(AccountCreator.EmailStatus.Ok)) {
emailOk = true; emailOk = true;
LinphoneUtils.displayError(emailOk, emailError, ""); LinphoneUtils.displayError(emailOk, emailError, "");
} }
@ -536,7 +535,7 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On
TextWatcher passwordListener = new TextWatcher() { TextWatcher passwordListener = new TextWatcher() {
public void afterTextChanged(Editable s) { public void afterTextChanged(Editable s) {
passwordOk = false; passwordOk = false;
LinphoneAccountCreator.PasswordCheck status = accountCreator.setPassword(field1.getText().toString()); AccountCreator.PasswordStatus status = accountCreator.setPassword(field1.getText().toString());
if (isPasswordCorrect(field1.getText().toString())) { if (isPasswordCorrect(field1.getText().toString())) {
passwordOk = true; passwordOk = true;
LinphoneUtils.displayError(passwordOk, passwordError, ""); LinphoneUtils.displayError(passwordOk, passwordError, "");
@ -584,14 +583,14 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On
} }
@Override @Override
public void onAccountCreatorIsAccountUsed(LinphoneAccountCreator accountCreator, final RequestStatus status) { public void onIsAccountExist(AccountCreator accountCreator, final Status status, String resp) {
if (status.equals(RequestStatus.AccountExist) || status.equals(RequestStatus.AccountExistWithAlias)) { if (status.equals(Status.AccountExist) || status.equals(Status.AccountExistWithAlias)) {
if (useEmail.isChecked()) { if (useEmail.isChecked()) {
createAccount.setEnabled(true); createAccount.setEnabled(true);
LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForRequestStatus(status) LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForStatus(status)
, AssistantActivity.instance()); , AssistantActivity.instance());
} else { } else {
accountCreator.isPhoneNumberUsed(); accountCreator.isAliasUsed();
} }
} else { } else {
createAccount(); createAccount();
@ -599,8 +598,8 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On
} }
@Override @Override
public void onAccountCreatorAccountCreated(LinphoneAccountCreator accountCreator, RequestStatus status) { public void onCreateAccount(AccountCreator accountCreator, Status status, String resp) {
if (status.equals(RequestStatus.AccountCreated)) { if (status.equals(Status.AccountCreated)) {
if (useEmail.isChecked() || !getResources().getBoolean(R.bool.use_phone_number_validation)) { if (useEmail.isChecked() || !getResources().getBoolean(R.bool.use_phone_number_validation)) {
AssistantActivity.instance().displayAssistantConfirm(getUsername() AssistantActivity.instance().displayAssistantConfirm(getUsername()
, passwordEdit.getText().toString(), emailEdit.getText().toString()); , passwordEdit.getText().toString(), emailEdit.getText().toString());
@ -611,21 +610,21 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On
} }
} else { } else {
createAccount.setEnabled(true); createAccount.setEnabled(true);
LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForRequestStatus(status) LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForStatus(status)
, AssistantActivity.instance()); , AssistantActivity.instance());
} }
} }
@Override @Override
public void onAccountCreatorAccountActivated(LinphoneAccountCreator accountCreator, RequestStatus status) { public void onActivateAccount(AccountCreator accountCreator, Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorAccountLinkedWithPhoneNumber(LinphoneAccountCreator accountCreator, RequestStatus status) { public void onLinkAccount(AccountCreator accountCreator, Status status, String resp) {
if (AssistantActivity.instance() == null) { if (AssistantActivity.instance() == null) {
return; return;
} }
if (status.equals(RequestStatus.Ok)) { if (status.equals(Status.RequestOk)) {
AssistantActivity.instance().displayAssistantCodeConfirm(getUsername() AssistantActivity.instance().displayAssistantCodeConfirm(getUsername()
, phoneNumberEdit.getText().toString() , phoneNumberEdit.getText().toString()
, LinphoneUtils.getCountryCode(dialCode), false); , LinphoneUtils.getCountryCode(dialCode), false);
@ -633,11 +632,11 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On
} }
@Override @Override
public void onAccountCreatorPhoneNumberLinkActivated(LinphoneAccountCreator accountCreator, RequestStatus status) { public void onActivateAlias(AccountCreator accountCreator, Status status, String resp) {
if (AssistantActivity.instance() == null) { if (AssistantActivity.instance() == null) {
return; return;
} }
if (status.equals(RequestStatus.Ok)) { if (status.equals(Status.RequestOk)) {
AssistantActivity.instance().displayAssistantCodeConfirm(getUsername() AssistantActivity.instance().displayAssistantCodeConfirm(getUsername()
, phoneNumberEdit.getText().toString() , phoneNumberEdit.getText().toString()
, LinphoneUtils.getCountryCode(dialCode), false); , LinphoneUtils.getCountryCode(dialCode), false);
@ -645,30 +644,30 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On
} }
@Override @Override
public void onAccountCreatorIsAccountActivated(LinphoneAccountCreator accountCreator, RequestStatus status) { public void onIsAccountActivated(AccountCreator accountCreator, Status status, String resp) {
if (AssistantActivity.instance() == null) { if (AssistantActivity.instance() == null) {
return; return;
} }
if (status.equals(RequestStatus.AccountNotActivated)) { if (status.equals(Status.AccountNotActivated)) {
if (getResources().getBoolean(R.bool.isTablet) if (getResources().getBoolean(R.bool.isTablet)
|| !getResources().getBoolean(R.bool.use_phone_number_validation)) { || !getResources().getBoolean(R.bool.use_phone_number_validation)) {
//accountCreator.activateAccount(); // Resend email TODO //accountCreator.activateAccount(); // Resend email TODO
} else { } else {
accountCreator.recoverPhoneAccount(); // Resend SMS accountCreator.recoverAccount(); // Resend SMS
} }
} else { } else {
createAccount.setEnabled(true); createAccount.setEnabled(true);
LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForRequestStatus(status) LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForStatus(status)
, AssistantActivity.instance()); , AssistantActivity.instance());
} }
} }
@Override @Override
public void onAccountCreatorPhoneAccountRecovered(LinphoneAccountCreator accountCreator, RequestStatus status) { public void onRecoverAccount(AccountCreator accountCreator, Status status, String resp) {
if (AssistantActivity.instance() == null) { if (AssistantActivity.instance() == null) {
return; return;
} }
if (status.equals(RequestStatus.Ok)) { if (status.equals(Status.RequestOk)) {
AssistantActivity.instance().displayAssistantCodeConfirm(getUsername() AssistantActivity.instance().displayAssistantCodeConfirm(getUsername()
, phoneNumberEdit.getText().toString(), dialCode.getText().toString(), false); , phoneNumberEdit.getText().toString(), dialCode.getText().toString(), false);
} else { } else {
@ -680,21 +679,21 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On
} }
@Override @Override
public void onAccountCreatorIsAccountLinked(LinphoneAccountCreator accountCreator, RequestStatus status) { public void onIsAccountLinked(AccountCreator accountCreator, Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorIsPhoneNumberUsed(LinphoneAccountCreator ac, RequestStatus status) { public void onIsAliasUsed(AccountCreator ac, Status status, String resp) {
if (AssistantActivity.instance() == null) { if (AssistantActivity.instance() == null) {
return; return;
} }
if (status.equals(RequestStatus.AliasIsAccount) || status.equals(RequestStatus.AliasExist)) { if (status.equals(Status.AliasIsAccount) || status.equals(Status.AliasExist)) {
if (accountCreator.getPhoneNumber() != null && accountCreator.getUsername() != null if (accountCreator.getPhoneNumber() != null && accountCreator.getUsername() != null
&& accountCreator.getPhoneNumber().compareTo(accountCreator.getUsername()) == 0) { && accountCreator.getPhoneNumber().compareTo(accountCreator.getUsername()) == 0) {
accountCreator.isAccountActivated(); accountCreator.isAccountActivated();
} else { } else {
createAccount.setEnabled(true); createAccount.setEnabled(true);
LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForRequestStatus(status) LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForStatus(status)
, AssistantActivity.instance()); , AssistantActivity.instance());
} }
} else { } else {
@ -703,7 +702,7 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On
} }
@Override @Override
public void onAccountCreatorPasswordUpdated(LinphoneAccountCreator accountCreator, RequestStatus status) { public void onUpdateAccount(AccountCreator accountCreator, Status status, String resp) {
} }
} }

View file

@ -22,15 +22,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
import org.linphone.LinphoneManager; import org.linphone.LinphoneManager;
import org.linphone.LinphonePreferences; import org.linphone.LinphonePreferences;
import org.linphone.R; import org.linphone.R;
import org.linphone.core.LinphoneCore; import org.linphone.core.Core;
import org.linphone.core.LinphoneCore.EcCalibratorStatus; import org.linphone.core.Core.EcCalibratorStatus;
import org.linphone.core.LinphoneCoreException; import org.linphone.core.CoreException;
import org.linphone.core.LinphoneCoreListenerBase; import org.linphone.core.CoreListenerStub;
import org.linphone.core.LinphoneXmlRpcRequest; import org.linphone.core.XmlRpcRequest;
import org.linphone.core.LinphoneXmlRpcRequest.LinphoneXmlRpcRequestListener; import org.linphone.core.XmlRpcRequestListener;
import org.linphone.core.LinphoneXmlRpcRequestImpl; //import org.linphone.core.XmlRpcRequestImpl;
import org.linphone.core.LinphoneXmlRpcSession; import org.linphone.core.XmlRpcSession;
import org.linphone.core.LinphoneXmlRpcSessionImpl; //import org.linphone.core.XmlRpcSessionImpl;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
import android.app.Fragment; import android.app.Fragment;
@ -41,12 +41,12 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
public class EchoCancellerCalibrationFragment extends Fragment implements LinphoneXmlRpcRequestListener { public class EchoCancellerCalibrationFragment extends Fragment implements XmlRpcRequestListener {
private Handler mHandler = new Handler(); private Handler mHandler = new Handler();
private boolean mSendEcCalibrationResult = false; private boolean mSendEcCalibrationResult = false;
private LinphoneCoreListenerBase mListener; private CoreListenerStub mListener;
private LinphoneXmlRpcSession xmlRpcSession; private XmlRpcSession xmlRpcSession;
private LinphoneXmlRpcRequest xmlRpcRequest; private XmlRpcRequest xmlRpcRequest;
private Runnable runFinished; private Runnable runFinished;
@Override @Override
@ -54,9 +54,9 @@ public class EchoCancellerCalibrationFragment extends Fragment implements Linpho
Bundle savedInstanceState) { Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.assistant_ec_calibration, container, false); View view = inflater.inflate(R.layout.assistant_ec_calibration, container, false);
mListener = new LinphoneCoreListenerBase(){ mListener = new CoreListenerStub(){
@Override @Override
public void ecCalibrationStatus(LinphoneCore lc, LinphoneCore.EcCalibratorStatus status, int delay_ms, Object data) { public void onEcCalibrationResult(Core lc, Core.EcCalibratorStatus status, int delay_ms, Object data) {
LinphoneManager.getInstance().routeAudioToReceiver(); LinphoneManager.getInstance().routeAudioToReceiver();
if (mSendEcCalibrationResult) { if (mSendEcCalibrationResult) {
sendEcCalibrationResult(status, delay_ms); sendEcCalibrationResult(status, delay_ms);
@ -71,13 +71,13 @@ public class EchoCancellerCalibrationFragment extends Fragment implements Linpho
} }
}; };
xmlRpcSession = new LinphoneXmlRpcSessionImpl(LinphoneManager.getLcIfManagerNotDestroyedOrNull(), LinphonePreferences.instance().getXmlrpcUrl()); xmlRpcSession = LinphoneManager.getLcIfManagerNotDestroyedOrNull().createXmlRpcSession(LinphonePreferences.instance().getXmlrpcUrl());
xmlRpcRequest = new LinphoneXmlRpcRequestImpl("add_ec_calibration_result", LinphoneXmlRpcRequest.ArgType.None); xmlRpcRequest = xmlRpcSession.createRequest(XmlRpcRequest.ArgType.None, "add_ec_calibration_result");
xmlRpcRequest.setListener(this); xmlRpcRequest.setListener(this);
try { try {
LinphoneManager.getInstance().startEcCalibration(mListener); LinphoneManager.getInstance().startEcCalibration(mListener);
} catch (LinphoneCoreException e) { } catch (CoreException e) {
Log.e(e, "Unable to calibrate EC"); Log.e(e, "Unable to calibrate EC");
AssistantActivity.instance().isEchoCalibrationFinished(); AssistantActivity.instance().isEchoCalibrationFinished();
} }
@ -89,12 +89,12 @@ public class EchoCancellerCalibrationFragment extends Fragment implements Linpho
} }
@Override @Override
public void onXmlRpcRequestResponse(LinphoneXmlRpcRequest request) { public void onResponse(XmlRpcRequest request) {
mHandler.post(runFinished); mHandler.post(runFinished);
} }
private void sendEcCalibrationResult(EcCalibratorStatus status, int delayMs) { private void sendEcCalibrationResult(EcCalibratorStatus status, int delayMs) {
Boolean hasBuiltInEchoCanceler = LinphoneManager.getLc().hasBuiltInEchoCanceler(); Boolean hasBuiltInEchoCanceler = LinphoneManager.getLc().hasBuiltinEchoCanceller();
Log.i("Add echo canceller calibration result: manufacturer=" + Build.MANUFACTURER + " model=" + Build.MODEL + " status=" + status + " delay=" + delayMs + "ms" + " hasBuiltInEchoCanceler " + hasBuiltInEchoCanceler); Log.i("Add echo canceller calibration result: manufacturer=" + Build.MANUFACTURER + " model=" + Build.MODEL + " status=" + status + " delay=" + delayMs + "ms" + " hasBuiltInEchoCanceler " + hasBuiltInEchoCanceler);
xmlRpcRequest.addStringArg(Build.MANUFACTURER); xmlRpcRequest.addStringArg(Build.MANUFACTURER);
xmlRpcRequest.addStringArg(Build.MODEL); xmlRpcRequest.addStringArg(Build.MODEL);

View file

@ -24,10 +24,11 @@ import org.linphone.LinphonePreferences;
import org.linphone.LinphoneUtils; import org.linphone.LinphoneUtils;
import org.linphone.R; import org.linphone.R;
import org.linphone.compatibility.Compatibility; import org.linphone.compatibility.Compatibility;
import org.linphone.core.AccountCreatorListener;
import org.linphone.core.DialPlan; import org.linphone.core.DialPlan;
import org.linphone.core.LinphoneAccountCreator; import org.linphone.core.AccountCreator;
import org.linphone.core.LinphoneCoreFactory; import org.linphone.core.Factory;
import org.linphone.core.LinphoneProxyConfig; import org.linphone.core.ProxyConfig;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.Fragment; import android.app.Fragment;
@ -50,14 +51,14 @@ import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
public class LinphoneLoginFragment extends Fragment implements CompoundButton.OnCheckedChangeListener, OnClickListener, TextWatcher, LinphoneAccountCreator.LinphoneAccountCreatorListener { public class LinphoneLoginFragment extends Fragment implements CompoundButton.OnCheckedChangeListener, OnClickListener, TextWatcher, AccountCreatorListener {
private EditText login, password, phoneNumberEdit, dialCode; private EditText login, password, phoneNumberEdit, dialCode;
private Button apply, selectCountry; private Button apply, selectCountry;
private CheckBox useUsername; private CheckBox useUsername;
private LinearLayout phoneNumberLayout, usernameLayout, passwordLayout; private LinearLayout phoneNumberLayout, usernameLayout, passwordLayout;
private TextView forgotPassword, messagePhoneNumber, phoneNumberError; private TextView forgotPassword, messagePhoneNumber, phoneNumberError;
private Boolean recoverAccount; private Boolean recoverAccount;
private LinphoneAccountCreator accountCreator; private AccountCreator accountCreator;
private int countryCode; private int countryCode;
private String phone, dialcode, username, pwd; private String phone, dialcode, username, pwd;
private ImageView phoneNumberInfo; private ImageView phoneNumberInfo;
@ -67,7 +68,7 @@ public class LinphoneLoginFragment extends Fragment implements CompoundButton.On
Bundle savedInstanceState) { Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.assistant_linphone_login, container, false); View view = inflater.inflate(R.layout.assistant_linphone_login, container, false);
accountCreator = LinphoneCoreFactory.instance().createAccountCreator(LinphoneManager.getLc(), LinphonePreferences.instance().getXmlrpcUrl()); accountCreator = LinphoneManager.getLc().createAccountCreator(LinphonePreferences.instance().getXmlrpcUrl());
accountCreator.setListener(this); accountCreator.setListener(this);
String url = "http://linphone.org/free-sip-service.html&action=recover"; String url = "http://linphone.org/free-sip-service.html&action=recover";
@ -110,20 +111,20 @@ public class LinphoneLoginFragment extends Fragment implements CompoundButton.On
(TelephonyManager) getActivity().getApplicationContext().getSystemService( (TelephonyManager) getActivity().getApplicationContext().getSystemService(
Context.TELEPHONY_SERVICE); Context.TELEPHONY_SERVICE);
String countryIso = tm.getNetworkCountryIso(); String countryIso = tm.getNetworkCountryIso();
LinphoneProxyConfig proxyConfig = LinphoneManager.getLc().createProxyConfig(); ProxyConfig proxyConfig = LinphoneManager.getLc().createProxyConfig();
countryCode = proxyConfig.lookupCCCFromIso(countryIso.toUpperCase()); countryCode = org.linphone.core.Utils.getCccFromIso(countryIso.toUpperCase());
DialPlan c = AssistantActivity.instance().country; DialPlan c = AssistantActivity.instance().country;
if (c != null) { if (c != null) {
selectCountry.setText(c.getCountryName()); selectCountry.setText(c.getCountry());
dialCode.setText(c.getCountryCallingCode().contains("+") ? dialCode.setText(c.getCountryCallingCode().contains("+") ?
c.getCountryCallingCode() : "+" + c.getCountryCallingCode()); c.getCountryCallingCode() : "+" + c.getCountryCallingCode());
} else { } else {
c = AssistantActivity.instance().getCountryListAdapter() c = AssistantActivity.instance().getCountryListAdapter()
.getCountryFromCountryCode(String.valueOf(countryCode)); .getCountryFromCountryCode(String.valueOf(countryCode));
if (c != null) { if (c != null) {
selectCountry.setText(c.getCountryName()); selectCountry.setText(c.getCountry());
dialCode.setText(c.getCountryCallingCode().contains("+") ? dialCode.setText(c.getCountryCallingCode().contains("+") ?
c.getCountryCallingCode() : "+" + c.getCountryCallingCode()); c.getCountryCallingCode() : "+" + c.getCountryCallingCode());
} }
@ -195,7 +196,7 @@ public class LinphoneLoginFragment extends Fragment implements CompoundButton.On
} }
accountCreator.setUsername(login.getText().toString()); accountCreator.setUsername(login.getText().toString());
accountCreator.setPassword(password.getText().toString()); accountCreator.setPassword(password.getText().toString());
accountCreator.isAccountUsed(); accountCreator.isAccountExist();
} }
private int getPhoneNumberStatus() { private int getPhoneNumberStatus() {
@ -209,7 +210,7 @@ public class LinphoneLoginFragment extends Fragment implements CompoundButton.On
DialPlan c = AssistantActivity.instance().getCountryListAdapter().getCountryFromCountryCode(dialCode.getText().toString()); DialPlan c = AssistantActivity.instance().getCountryListAdapter().getCountryFromCountryCode(dialCode.getText().toString());
if (c != null) { if (c != null) {
AssistantActivity.instance().country = c; AssistantActivity.instance().country = c;
selectCountry.setText(c.getCountryName()); selectCountry.setText(c.getCountry());
} else { } else {
selectCountry.setText(R.string.select_your_country); selectCountry.setText(R.string.select_your_country);
} }
@ -260,10 +261,10 @@ public class LinphoneLoginFragment extends Fragment implements CompoundButton.On
private void recoverAccount() { private void recoverAccount() {
if (phoneNumberEdit.length() > 0 || dialCode.length() > 1) { if (phoneNumberEdit.length() > 0 || dialCode.length() > 1) {
int status = getPhoneNumberStatus(); int status = getPhoneNumberStatus();
boolean isOk = status == LinphoneAccountCreator.PhoneNumberCheck.Ok.value(); boolean isOk = status == AccountCreator.PhoneNumberStatus.Ok.toInt();
if (isOk) { if (isOk) {
LinphoneManager.getLc().getConfig().loadXmlFile(LinphoneManager.getInstance().getmDynamicConfigFile()); LinphoneManager.getLc().getConfig().loadFromXmlFile(LinphoneManager.getInstance().getmDynamicConfigFile());
accountCreator.isPhoneNumberUsed(); accountCreator.isAliasUsed();
} else { } else {
apply.setEnabled(true); apply.setEnabled(true);
LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForPhoneNumberStatus(status), LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForPhoneNumberStatus(status),
@ -282,10 +283,10 @@ public class LinphoneLoginFragment extends Fragment implements CompoundButton.On
public void onTextChanged2() { public void onTextChanged2() {
int status = getPhoneNumberStatus(); int status = getPhoneNumberStatus();
boolean isOk = status == LinphoneAccountCreator.PhoneNumberCheck.Ok.value(); boolean isOk = status == AccountCreator.PhoneNumberStatus.Ok.toInt();
LinphoneUtils.displayError(isOk, phoneNumberError, LinphoneUtils.errorForPhoneNumberStatus(status)); LinphoneUtils.displayError(isOk, phoneNumberError, LinphoneUtils.errorForPhoneNumberStatus(status));
if (!isOk) { if (!isOk) {
if ((1 == (status & LinphoneAccountCreator.PhoneNumberCheck.CountryCodeInvalid.value()))) { if ((1 == (status & AccountCreator.PhoneNumberStatus.InvalidCountryCode.toInt()))) {
dialCode.setBackgroundResource(R.drawable.resizable_textfield_error); dialCode.setBackgroundResource(R.drawable.resizable_textfield_error);
phoneNumberEdit.setBackgroundResource(R.drawable.resizable_textfield); phoneNumberEdit.setBackgroundResource(R.drawable.resizable_textfield);
} else { } else {
@ -329,47 +330,47 @@ public class LinphoneLoginFragment extends Fragment implements CompoundButton.On
} }
@Override @Override
public void onAccountCreatorIsAccountUsed(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onIsAccountExist(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
if (AssistantActivity.instance() == null) { if (AssistantActivity.instance() == null) {
apply.setEnabled(true); apply.setEnabled(true);
return; return;
} }
if (status.equals(LinphoneAccountCreator.RequestStatus.AccountExist) || status.equals(LinphoneAccountCreator.RequestStatus.AccountExistWithAlias)) { if (status.equals(AccountCreator.Status.AccountExist) || status.equals(AccountCreator.Status.AccountExistWithAlias)) {
AssistantActivity.instance().linphoneLogIn(accountCreator); AssistantActivity.instance().linphoneLogIn(accountCreator);
} else { } else {
LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForRequestStatus(status), AssistantActivity.instance()); LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForStatus(status), AssistantActivity.instance());
} }
apply.setEnabled(true); apply.setEnabled(true);
} }
@Override @Override
public void onAccountCreatorAccountCreated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onCreateAccount(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorAccountActivated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onActivateAccount(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorAccountLinkedWithPhoneNumber(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onLinkAccount(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorPhoneNumberLinkActivated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onActivateAlias(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorIsAccountActivated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onIsAccountActivated(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorPhoneAccountRecovered(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onRecoverAccount(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
if (AssistantActivity.instance() == null) { if (AssistantActivity.instance() == null) {
apply.setEnabled(true); apply.setEnabled(true);
return; return;
} }
if (status.equals(LinphoneAccountCreator.RequestStatus.ErrorServer)) { if (status.equals(AccountCreator.Status.ServerError)) {
LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForRequestStatus(LinphoneAccountCreator.RequestStatus.Failed), AssistantActivity.instance()); LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForStatus(AccountCreator.Status.RequestFailed), AssistantActivity.instance());
apply.setEnabled(true); apply.setEnabled(true);
} else { } else {
AssistantActivity.instance().displayAssistantCodeConfirm(accountCreator.getUsername(), phoneNumberEdit.getText().toString(), LinphoneUtils.getCountryCode(dialCode), true); AssistantActivity.instance().displayAssistantCodeConfirm(accountCreator.getUsername(), phoneNumberEdit.getText().toString(), LinphoneUtils.getCountryCode(dialCode), true);
@ -377,25 +378,25 @@ public class LinphoneLoginFragment extends Fragment implements CompoundButton.On
} }
@Override @Override
public void onAccountCreatorIsAccountLinked(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onIsAccountLinked(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
@Override @Override
public void onAccountCreatorIsPhoneNumberUsed(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onIsAliasUsed(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
if (AssistantActivity.instance() == null) { if (AssistantActivity.instance() == null) {
apply.setEnabled(true); apply.setEnabled(true);
return; return;
} }
if (status.equals(LinphoneAccountCreator.RequestStatus.AliasIsAccount) || status.equals(LinphoneAccountCreator.RequestStatus.AliasExist)) { if (status.equals(AccountCreator.Status.AliasIsAccount) || status.equals(AccountCreator.Status.AliasExist)) {
accountCreator.recoverPhoneAccount(); accountCreator.recoverAccount();
} else { } else {
apply.setEnabled(true); apply.setEnabled(true);
LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForRequestStatus(status), AssistantActivity.instance()); LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForStatus(status), AssistantActivity.instance());
} }
} }
@Override @Override
public void onAccountCreatorPasswordUpdated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.RequestStatus status) { public void onUpdateAccount(AccountCreator accountCreator, AccountCreator.Status status, String resp) {
} }
} }

View file

@ -18,7 +18,7 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/ */
import org.linphone.R; import org.linphone.R;
import org.linphone.core.LinphoneAddress.TransportType; import org.linphone.core.Address.TransportType;
import android.app.Fragment; import android.app.Fragment;
import android.os.Bundle; import android.os.Bundle;
@ -71,12 +71,12 @@ public class LoginFragment extends Fragment implements OnClickListener, TextWatc
TransportType transport; TransportType transport;
if(transports.getCheckedRadioButtonId() == R.id.transport_udp){ if(transports.getCheckedRadioButtonId() == R.id.transport_udp){
transport = TransportType.LinphoneTransportUdp; transport = TransportType.Udp;
} else { } else {
if(transports.getCheckedRadioButtonId() == R.id.transport_tcp){ if(transports.getCheckedRadioButtonId() == R.id.transport_tcp){
transport = TransportType.LinphoneTransportTcp; transport = TransportType.Tcp;
} else { } else {
transport = TransportType.LinphoneTransportTls; transport = TransportType.Tls;
} }
} }

View file

@ -27,9 +27,9 @@ import org.linphone.LinphoneManager;
import org.linphone.LinphonePreferences; import org.linphone.LinphonePreferences;
import org.linphone.LinphoneService; import org.linphone.LinphoneService;
import org.linphone.R; import org.linphone.R;
import org.linphone.core.LinphoneCore; import org.linphone.core.Core;
import org.linphone.core.LinphoneCore.RemoteProvisioningState; import org.linphone.core.Core.ConfiguringState;
import org.linphone.core.LinphoneCoreListenerBase; import org.linphone.core.CoreListenerStub;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
import android.app.Activity; import android.app.Activity;
@ -47,7 +47,7 @@ public class RemoteProvisioningActivity extends Activity {
private Handler mHandler = new Handler(); private Handler mHandler = new Handler();
private String configUriParam = null; private String configUriParam = null;
private ProgressBar spinner; private ProgressBar spinner;
private LinphoneCoreListenerBase mListener; private CoreListenerStub mListener;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -55,13 +55,13 @@ public class RemoteProvisioningActivity extends Activity {
setContentView(R.layout.remote_provisioning); setContentView(R.layout.remote_provisioning);
spinner = (ProgressBar) findViewById(R.id.spinner); spinner = (ProgressBar) findViewById(R.id.spinner);
mListener = new LinphoneCoreListenerBase(){ mListener = new CoreListenerStub(){
@Override @Override
public void configuringStatus(LinphoneCore lc, final RemoteProvisioningState state, String message) { public void onConfiguringStatus(Core lc, final ConfiguringState state, String message) {
if (spinner != null) spinner.setVisibility(View.GONE); if (spinner != null) spinner.setVisibility(View.GONE);
if (state == RemoteProvisioningState.ConfiguringSuccessful) { if (state == ConfiguringState.Successful) {
goToLinphoneActivity(); goToLinphoneActivity();
} else if (state == RemoteProvisioningState.ConfiguringFailed) { } else if (state == ConfiguringState.Failed) {
Toast.makeText(RemoteProvisioningActivity.this, R.string.remote_provisioning_failure, Toast.LENGTH_LONG).show(); Toast.makeText(RemoteProvisioningActivity.this, R.string.remote_provisioning_failure, Toast.LENGTH_LONG).show();
} }
} }
@ -71,7 +71,7 @@ public class RemoteProvisioningActivity extends Activity {
@Override @Override
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) { if (lc != null) {
lc.addListener(mListener); lc.addListener(mListener);
} }
@ -82,7 +82,7 @@ public class RemoteProvisioningActivity extends Activity {
@Override @Override
protected void onPause() { protected void onPause() {
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) { if (lc != null) {
lc.removeListener(mListener); lc.removeListener(mListener);
} }
@ -182,7 +182,7 @@ public class RemoteProvisioningActivity extends Activity {
mHandler.postDelayed(new Runnable() { mHandler.postDelayed(new Runnable() {
@Override @Override
public void run() { public void run() {
LinphoneManager.getInstance().restartLinphoneCore(); LinphoneManager.getInstance().restartCore();
} }
}, 1000); }, 1000);
} }

View file

@ -60,8 +60,8 @@ public class RemoteProvisioningFragment extends Fragment implements OnClickListe
String url = remoteProvisioningUrl.getText().toString(); String url = remoteProvisioningUrl.getText().toString();
AssistantActivity.instance().displayRemoteProvisioningInProgressDialog(); AssistantActivity.instance().displayRemoteProvisioningInProgressDialog();
LinphonePreferences.instance().setRemoteProvisioningUrl(url); LinphonePreferences.instance().setRemoteProvisioningUrl(url);
LinphoneManager.getInstance().restartLinphoneCore(); LinphoneManager.getInstance().restartCore();
AssistantActivity.instance().setLinphoneCoreListener(); AssistantActivity.instance().setCoreListener();
} }
} }

View file

@ -21,8 +21,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
import org.linphone.LinphoneManager; import org.linphone.LinphoneManager;
import org.linphone.LinphonePreferences; import org.linphone.LinphonePreferences;
import org.linphone.R; import org.linphone.R;
import org.linphone.core.LinphoneCore; import org.linphone.core.Core;
import org.linphone.core.LinphoneCoreListenerBase; import org.linphone.core.CoreListenerStub;
import org.linphone.xmlrpc.XmlRpcHelper; import org.linphone.xmlrpc.XmlRpcHelper;
import org.linphone.xmlrpc.XmlRpcListenerBase; import org.linphone.xmlrpc.XmlRpcListenerBase;
@ -37,7 +37,7 @@ import android.widget.Toast;
public class RemoteProvisioningLoginActivity extends Activity implements OnClickListener { public class RemoteProvisioningLoginActivity extends Activity implements OnClickListener {
private EditText login, password, domain; private EditText login, password, domain;
private Button connect; private Button connect;
private LinphoneCoreListenerBase mListener; private CoreListenerStub mListener;
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
@ -57,12 +57,12 @@ public class RemoteProvisioningLoginActivity extends Activity implements OnClick
domain.setEnabled(false); domain.setEnabled(false);
} }
mListener = new LinphoneCoreListenerBase(){ mListener = new CoreListenerStub(){
@Override @Override
public void configuringStatus(LinphoneCore lc, final LinphoneCore.RemoteProvisioningState state, String message) { public void onConfiguringStatus(Core lc, final Core.ConfiguringState state, String message) {
if (state == LinphoneCore.RemoteProvisioningState.ConfiguringSuccessful) { if (state == Core.ConfiguringState.Successful) {
//TODO //TODO
} else if (state == LinphoneCore.RemoteProvisioningState.ConfiguringFailed) { } else if (state == Core.ConfiguringState.Failed) {
Toast.makeText(RemoteProvisioningLoginActivity.this, R.string.remote_provisioning_failure, Toast.LENGTH_LONG).show(); Toast.makeText(RemoteProvisioningLoginActivity.this, R.string.remote_provisioning_failure, Toast.LENGTH_LONG).show();
} }
} }
@ -83,7 +83,7 @@ public class RemoteProvisioningLoginActivity extends Activity implements OnClick
@Override @Override
public void onRemoteProvisioningFilenameSent(String result) { public void onRemoteProvisioningFilenameSent(String result) {
LinphonePreferences.instance().setRemoteProvisioningUrl(result); LinphonePreferences.instance().setRemoteProvisioningUrl(result);
LinphoneManager.getInstance().restartLinphoneCore(); LinphoneManager.getInstance().restartCore();
} }
}, username.toString(), password.toString(), domain.toString()); }, username.toString(), password.toString(), domain.toString());
@ -91,16 +91,16 @@ public class RemoteProvisioningLoginActivity extends Activity implements OnClick
setResult(Activity.RESULT_OK); setResult(Activity.RESULT_OK);
finish(); finish();
/*String identity = "sip:" + username + "@" + domain; /*String identity = "sip:" + username + "@" + domain;
LinphoneProxyConfig prxCfg = lc.createProxyConfig(); ProxyConfig prxCfg = lc.createProxyConfig();
try { try {
prxCfg.setIdentity(identity); prxCfg.setIdentityAddress(identity);
lc.addProxyConfig(prxCfg); lc.addProxyConfig(prxCfg);
} catch (LinphoneCoreException e) { } catch (CoreException e) {
Log.e(e); Log.e(e);
return false; return false;
} }
LinphoneAuthInfo authInfo = LinphoneCoreFactory.instance().createAuthInfo(username, null, password, null, null, domain); AuthInfo authInfo = Factory.instance().createAuthInfo(username, null, password, null, null, domain);
lc.addAuthInfo(authInfo); lc.addAuthInfo(authInfo);
if (LinphonePreferences.instance().getAccountCount() == 1) if (LinphonePreferences.instance().getAccountCount() == 1)
@ -112,7 +112,7 @@ public class RemoteProvisioningLoginActivity extends Activity implements OnClick
@Override @Override
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) { if (lc != null) {
lc.addListener(mListener); lc.addListener(mListener);
} }
@ -120,7 +120,7 @@ public class RemoteProvisioningLoginActivity extends Activity implements OnClick
@Override @Override
protected void onPause() { protected void onPause() {
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) { if (lc != null) {
lc.removeListener(mListener); lc.removeListener(mListener);
} }

View file

@ -25,7 +25,7 @@ import org.linphone.LinphonePreferences;
import org.linphone.LinphoneService; import org.linphone.LinphoneService;
import org.linphone.R; import org.linphone.R;
import org.linphone.UIThreadDispatcher; import org.linphone.UIThreadDispatcher;
import org.linphone.core.LinphoneCoreFactory; import org.linphone.core.Factory;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
import android.content.Context; import android.content.Context;
@ -43,8 +43,8 @@ public class GCMService extends GCMBaseIntentService {
private void initLogger(Context context) { private void initLogger(Context context) {
LinphonePreferences.instance().setContext(context); LinphonePreferences.instance().setContext(context);
boolean isDebugEnabled = LinphonePreferences.instance().isDebugEnabled(); boolean isDebugEnabled = LinphonePreferences.instance().isDebugEnabled();
LinphoneCoreFactory.instance().enableLogCollection(isDebugEnabled); Factory.instance().enableLogCollection(isDebugEnabled);
LinphoneCoreFactory.instance().setDebugMode(isDebugEnabled, context.getString(R.string.app_name)); Factory.instance().setDebugMode(isDebugEnabled, context.getString(R.string.app_name));
} }
@Override @Override
@ -59,7 +59,7 @@ public class GCMService extends GCMBaseIntentService {
Log.d("[Push Notification] Received"); Log.d("[Push Notification] Received");
if (!LinphoneService.isReady()) { if (!LinphoneService.isReady()) {
startService(new Intent(ACTION_MAIN).setClass(this, LinphoneService.class)); context.startService(new Intent(ACTION_MAIN).setClass(context, LinphoneService.class));
} else if (LinphoneManager.isInstanciated() && LinphoneManager.getLc().getCallsNb() == 0) { } else if (LinphoneManager.isInstanciated() && LinphoneManager.getLc().getCallsNb() == 0) {
UIThreadDispatcher.dispatch(new Runnable(){ UIThreadDispatcher.dispatch(new Runnable(){
@Override @Override

View file

@ -23,7 +23,7 @@ import java.util.Locale;
import org.linphone.LinphoneManager; import org.linphone.LinphoneManager;
import org.linphone.LinphonePreferences; import org.linphone.LinphonePreferences;
import org.linphone.R; import org.linphone.R;
import org.linphone.core.LinphoneProxyConfig; import org.linphone.core.ProxyConfig;
import android.app.Fragment; import android.app.Fragment;
import android.os.Bundle; import android.os.Bundle;
@ -116,7 +116,7 @@ public class InAppPurchaseFragment extends Fragment implements View.OnClickListe
} }
private boolean isUsernameCorrect(String username) { private boolean isUsernameCorrect(String username) {
LinphoneProxyConfig lpc = LinphoneManager.getLc().createProxyConfig(); ProxyConfig lpc = LinphoneManager.getLc().createProxyConfig();
return lpc.isPhoneNumber(username); return lpc.isPhoneNumber(username);
} }
@ -139,7 +139,7 @@ public class InAppPurchaseFragment extends Fragment implements View.OnClickListe
private String getUsername() { private String getUsername() {
String username = this.username.getText().toString(); String username = this.username.getText().toString();
LinphoneProxyConfig lpc = LinphoneManager.getLc().createProxyConfig(); ProxyConfig lpc = LinphoneManager.getLc().createProxyConfig();
username = lpc.normalizePhoneNumber(username); username = lpc.normalizePhoneNumber(username);
return username.toLowerCase(Locale.getDefault()); return username.toLowerCase(Locale.getDefault());
} }

View file

@ -22,10 +22,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
import org.linphone.LinphoneManager; import org.linphone.LinphoneManager;
import org.linphone.LinphonePreferences; import org.linphone.LinphonePreferences;
import org.linphone.R; import org.linphone.R;
import org.linphone.core.CallDirection; import org.linphone.core.Call;
import org.linphone.core.LinphoneCallLog; import org.linphone.core.Call.Dir;
import org.linphone.core.LinphoneCoreException; import org.linphone.core.CallLog;
import org.linphone.core.LinphoneProxyConfig; import org.linphone.core.CoreException;
import org.linphone.core.ProxyConfig;
import android.content.Context; import android.content.Context;
import android.util.AttributeSet; import android.util.AttributeSet;
@ -54,10 +55,10 @@ public class CallButton extends ImageView implements OnClickListener, AddressAwa
LinphoneManager.getInstance().newOutgoingCall(mAddress); LinphoneManager.getInstance().newOutgoingCall(mAddress);
} else { } else {
if (LinphonePreferences.instance().isBisFeatureEnabled()) { if (LinphonePreferences.instance().isBisFeatureEnabled()) {
LinphoneCallLog[] logs = LinphoneManager.getLc().getCallLogs(); CallLog[] logs = LinphoneManager.getLc().getCallLogs();
LinphoneCallLog log = null; CallLog log = null;
for (LinphoneCallLog l : logs) { for (CallLog l : logs) {
if (l.getDirection() == CallDirection.Outgoing) { if (l.getDir() == Call.Dir.Outgoing) {
log = l; log = l;
break; break;
} }
@ -66,18 +67,18 @@ public class CallButton extends ImageView implements OnClickListener, AddressAwa
return; return;
} }
LinphoneProxyConfig lpc = LinphoneManager.getLc().getDefaultProxyConfig(); ProxyConfig lpc = LinphoneManager.getLc().getDefaultProxyConfig();
if (lpc != null && log.getTo().getDomain().equals(lpc.getDomain())) { if (lpc != null && log.getToAddress().getDomain().equals(lpc.getDomain())) {
mAddress.setText(log.getTo().getUserName()); mAddress.setText(log.getToAddress().getUsername());
} else { } else {
mAddress.setText(log.getTo().asStringUriOnly()); mAddress.setText(log.getToAddress().asStringUriOnly());
} }
mAddress.setSelection(mAddress.getText().toString().length()); mAddress.setSelection(mAddress.getText().toString().length());
mAddress.setDisplayedName(log.getTo().getDisplayName()); mAddress.setDisplayedName(log.getToAddress().getDisplayName());
} }
} }
} }
} catch (LinphoneCoreException e) { } catch (CoreException e) {
LinphoneManager.getInstance().terminateCall(); LinphoneManager.getInstance().terminateCall();
onWrongDestinationAddress(); onWrongDestinationAddress();
} }

View file

@ -24,8 +24,8 @@ import org.linphone.LinphoneManager;
import org.linphone.LinphonePreferences; import org.linphone.LinphonePreferences;
import org.linphone.LinphoneService; import org.linphone.LinphoneService;
import org.linphone.R; import org.linphone.R;
import org.linphone.core.LinphoneCore; import org.linphone.core.Core;
import org.linphone.core.LinphoneCoreFactory; import org.linphone.core.Factory;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
import android.app.AlertDialog; import android.app.AlertDialog;
@ -106,11 +106,11 @@ public class Digit extends Button implements AddressAware {
public void onClick(View v) { public void onClick(View v) {
if (mPlayDtmf) { if (mPlayDtmf) {
if (!linphoneServiceReady()) return; if (!linphoneServiceReady()) return;
LinphoneCore lc = LinphoneManager.getLc(); Core lc = LinphoneManager.getLc();
lc.stopDtmf(); lc.stopDtmf();
mIsDtmfStarted =false; mIsDtmfStarted =false;
if (lc.isIncall()) { if (lc.inCall()) {
lc.sendDtmf(mKeyCode); lc.getCurrentCall().sendDtmf(mKeyCode);
} }
} }
@ -138,10 +138,10 @@ public class Digit extends Button implements AddressAware {
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
if(which == 0){ if(which == 0){
LinphonePreferences.instance().setDebugEnabled(false); LinphonePreferences.instance().setDebugEnabled(false);
LinphoneCoreFactory.instance().enableLogCollection(false); Factory.instance().enableLogCollection(false);
} }
if(which == 1) { if(which == 1) {
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) { if (lc != null) {
lc.uploadLogCollection(); lc.uploadLogCollection();
} }
@ -154,7 +154,7 @@ public class Digit extends Button implements AddressAware {
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
if(which == 0) { if(which == 0) {
LinphonePreferences.instance().setDebugEnabled(true); LinphonePreferences.instance().setDebugEnabled(true);
LinphoneCoreFactory.instance().enableLogCollection(true); Factory.instance().enableLogCollection(true);
} }
} }
}); });
@ -171,7 +171,7 @@ public class Digit extends Button implements AddressAware {
CallActivity.instance().resetControlsHidingCallBack(); CallActivity.instance().resetControlsHidingCallBack();
} }
LinphoneCore lc = LinphoneManager.getLc(); Core lc = LinphoneManager.getLc();
if (event.getAction() == MotionEvent.ACTION_DOWN && !mIsDtmfStarted) { if (event.getAction() == MotionEvent.ACTION_DOWN && !mIsDtmfStarted) {
LinphoneManager.getInstance().playDtmf(getContext().getContentResolver(), mKeyCode); LinphoneManager.getInstance().playDtmf(getContext().getContentResolver(), mKeyCode);
mIsDtmfStarted = true; mIsDtmfStarted = true;
@ -186,7 +186,7 @@ public class Digit extends Button implements AddressAware {
public boolean onLongClick(View v) { public boolean onLongClick(View v) {
int id = v.getId(); int id = v.getId();
LinphoneCore lc = LinphoneManager.getLc(); Core lc = LinphoneManager.getLc();
if (mPlayDtmf) { if (mPlayDtmf) {
if (!linphoneServiceReady()) return true; if (!linphoneServiceReady()) return true;

View file

@ -22,8 +22,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
import org.linphone.LinphoneActivity; import org.linphone.LinphoneActivity;
import org.linphone.LinphoneManager; import org.linphone.LinphoneManager;
import org.linphone.LinphoneService; import org.linphone.LinphoneService;
import org.linphone.core.LinphoneCall; import org.linphone.core.Call;
import org.linphone.core.LinphoneCallParams; import org.linphone.core.CallParams;
import org.linphone.mediastream.video.AndroidVideoWindowImpl; import org.linphone.mediastream.video.AndroidVideoWindowImpl;
import android.content.Context; import android.content.Context;
@ -63,7 +63,7 @@ public class LinphoneOverlay extends org.linphone.mediastream.video.display.GL2J
androidVideoWindowImpl = new AndroidVideoWindowImpl(this, null, new AndroidVideoWindowImpl.VideoWindowListener() { androidVideoWindowImpl = new AndroidVideoWindowImpl(this, null, new AndroidVideoWindowImpl.VideoWindowListener() {
public void onVideoRenderingSurfaceReady(AndroidVideoWindowImpl vw, SurfaceView surface) { public void onVideoRenderingSurfaceReady(AndroidVideoWindowImpl vw, SurfaceView surface) {
LinphoneManager.getLc().setVideoWindow(vw); LinphoneManager.getLc().setNativeVideoWindowId(vw);
} }
public void onVideoRenderingSurfaceDestroyed(AndroidVideoWindowImpl vw) { public void onVideoRenderingSurfaceDestroyed(AndroidVideoWindowImpl vw) {
@ -77,11 +77,11 @@ public class LinphoneOverlay extends org.linphone.mediastream.video.display.GL2J
} }
}); });
LinphoneCall call = LinphoneManager.getLc().getCurrentCall(); Call call = LinphoneManager.getLc().getCurrentCall();
LinphoneCallParams callParams = call.getCurrentParams(); CallParams callParams = call.getCurrentParams();
params.width = callParams.getReceivedVideoSize().width; params.width = callParams.getReceivedVideoDefinition().width;
params.height = callParams.getReceivedVideoSize().height; params.height = callParams.getReceivedVideoDefinition().height;
LinphoneManager.getLc().setVideoWindow(androidVideoWindowImpl); LinphoneManager.getLc().setNativeVideoWindowId(androidVideoWindowImpl);
setOnClickListener(new OnClickListener() { setOnClickListener(new OnClickListener() {
@Override @Override

View file

@ -218,6 +218,7 @@ public class SlidingDrawer extends ViewGroup {
@Override @Override
protected void onFinishInflate() { protected void onFinishInflate() {
super.onFinishInflate();
mHandle = findViewById(mHandleId); mHandle = findViewById(mHandleId);
if (mHandle == null) { if (mHandle == null) {
throw new IllegalArgumentException( throw new IllegalArgumentException(

View file

@ -21,11 +21,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
import org.linphone.LinphoneManager; import org.linphone.LinphoneManager;
import org.linphone.LinphonePreferences; import org.linphone.LinphonePreferences;
import org.linphone.core.LinphoneXmlRpcRequest; import org.linphone.core.XmlRpcRequest;
import org.linphone.core.LinphoneXmlRpcRequest.LinphoneXmlRpcRequestListener; import org.linphone.core.XmlRpcRequestListener;
import org.linphone.core.LinphoneXmlRpcRequestImpl; //import org.linphone.core.XmlRpcRequestImpl;
import org.linphone.core.LinphoneXmlRpcSession; import org.linphone.core.XmlRpcSession;
import org.linphone.core.LinphoneXmlRpcSessionImpl; //import org.linphone.core.XmlRpcSessionImpl;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
public class XmlRpcHelper { public class XmlRpcHelper {
@ -43,26 +43,26 @@ public class XmlRpcHelper {
public static final String CLIENT_ERROR_INVALID_SERVER_URL = "INVALID_SERVER_URL"; public static final String CLIENT_ERROR_INVALID_SERVER_URL = "INVALID_SERVER_URL";
public static final String CLIENT_ERROR_SERVER_NOT_REACHABLE = "SERVER_NOT_REACHABLE"; public static final String CLIENT_ERROR_SERVER_NOT_REACHABLE = "SERVER_NOT_REACHABLE";
private LinphoneXmlRpcSession xmlRpcSession; private XmlRpcSession xmlRpcSession;
public XmlRpcHelper() { public XmlRpcHelper() {
xmlRpcSession = new LinphoneXmlRpcSessionImpl(LinphoneManager.getLcIfManagerNotDestroyedOrNull(), LinphonePreferences.instance().getInAppPurchaseValidatingServerUrl()); xmlRpcSession = LinphoneManager.getLcIfManagerNotDestroyedOrNull().createXmlRpcSession(LinphonePreferences.instance().getInAppPurchaseValidatingServerUrl());
} }
public void createAccountAsync(final XmlRpcListener listener, String username, String email, String password) { public void createAccountAsync(final XmlRpcListener listener, String username, String email, String password) {
LinphoneXmlRpcRequest xmlRpcRequest = new LinphoneXmlRpcRequestImpl("create_account", LinphoneXmlRpcRequest.ArgType.String); XmlRpcRequest xmlRpcRequest = xmlRpcSession.createRequest(XmlRpcRequest.ArgType.String, "create_account");
xmlRpcRequest.setListener(new LinphoneXmlRpcRequestListener() { xmlRpcRequest.setListener(new XmlRpcRequestListener() {
@Override @Override
public void onXmlRpcRequestResponse(LinphoneXmlRpcRequest request) { public void onResponse(XmlRpcRequest request) {
String result = request.getStringResponse(); String result = request.getStringResponse();
if (request.getStatus() == LinphoneXmlRpcRequest.Status.Ok) { if (request.getStatus() == XmlRpcRequest.Status.Ok) {
if (result.startsWith("ERROR_")) { if (result.startsWith("ERROR_")) {
Log.e(result); Log.e(result);
listener.onError(result); listener.onError(result);
return; return;
} }
listener.onAccountCreated(result); listener.onAccountCreated(result);
} else if (request.getStatus() == LinphoneXmlRpcRequest.Status.Failed) { } else if (request.getStatus() == XmlRpcRequest.Status.Failed) {
Log.e(result); Log.e(result);
listener.onError(result); listener.onError(result);
} }
@ -75,19 +75,19 @@ public class XmlRpcHelper {
} }
public void getAccountExpireAsync(final XmlRpcListener listener, String username, String password) { public void getAccountExpireAsync(final XmlRpcListener listener, String username, String password) {
LinphoneXmlRpcRequest xmlRpcRequest = new LinphoneXmlRpcRequestImpl("get_account_expiration", LinphoneXmlRpcRequest.ArgType.String); XmlRpcRequest xmlRpcRequest = xmlRpcSession.createRequest(XmlRpcRequest.ArgType.String, "get_account_expiration");
xmlRpcRequest.setListener(new LinphoneXmlRpcRequestListener() { xmlRpcRequest.setListener(new XmlRpcRequestListener() {
@Override @Override
public void onXmlRpcRequestResponse(LinphoneXmlRpcRequest request) { public void onResponse(XmlRpcRequest request) {
String result = request.getStringResponse(); String result = request.getStringResponse();
if (request.getStatus() == LinphoneXmlRpcRequest.Status.Ok) { if (request.getStatus() == XmlRpcRequest.Status.Ok) {
if (result.startsWith("ERROR_")) { if (result.startsWith("ERROR_")) {
Log.e(result); Log.e(result);
listener.onError(result); listener.onError(result);
return; return;
} }
listener.onAccountExpireFetched(result); listener.onAccountExpireFetched(result);
} else if (request.getStatus() == LinphoneXmlRpcRequest.Status.Failed) { } else if (request.getStatus() == XmlRpcRequest.Status.Failed) {
Log.e(result); Log.e(result);
listener.onError(result); listener.onError(result);
} }
@ -99,19 +99,19 @@ public class XmlRpcHelper {
} }
public void updateAccountExpireAsync(final XmlRpcListener listener, String username, String password, String domain, String payload, String signature) { public void updateAccountExpireAsync(final XmlRpcListener listener, String username, String password, String domain, String payload, String signature) {
LinphoneXmlRpcRequest xmlRpcRequest = new LinphoneXmlRpcRequestImpl("update_expiration_date", LinphoneXmlRpcRequest.ArgType.String); XmlRpcRequest xmlRpcRequest = xmlRpcSession.createRequest(XmlRpcRequest.ArgType.String, "update_expiration_date");
xmlRpcRequest.setListener(new LinphoneXmlRpcRequestListener() { xmlRpcRequest.setListener(new XmlRpcRequestListener() {
@Override @Override
public void onXmlRpcRequestResponse(LinphoneXmlRpcRequest request) { public void onResponse(XmlRpcRequest request) {
String result = request.getStringResponse(); String result = request.getStringResponse();
if (request.getStatus() == LinphoneXmlRpcRequest.Status.Ok) { if (request.getStatus() == XmlRpcRequest.Status.Ok) {
if (result.startsWith("ERROR_")) { if (result.startsWith("ERROR_")) {
Log.e(result); Log.e(result);
listener.onError(result); listener.onError(result);
return; return;
} }
listener.onAccountExpireUpdated(result); listener.onAccountExpireUpdated(result);
} else if (request.getStatus() == LinphoneXmlRpcRequest.Status.Failed) { } else if (request.getStatus() == XmlRpcRequest.Status.Failed) {
Log.e(result); Log.e(result);
listener.onError(result); listener.onError(result);
} }
@ -126,19 +126,19 @@ public class XmlRpcHelper {
} }
public void activateAccountAsync(final XmlRpcListener listener, String username, String password) { public void activateAccountAsync(final XmlRpcListener listener, String username, String password) {
LinphoneXmlRpcRequest xmlRpcRequest = new LinphoneXmlRpcRequestImpl("activate_account", LinphoneXmlRpcRequest.ArgType.String); XmlRpcRequest xmlRpcRequest = xmlRpcSession.createRequest(XmlRpcRequest.ArgType.String, "activate_account");
xmlRpcRequest.setListener(new LinphoneXmlRpcRequestListener() { xmlRpcRequest.setListener(new XmlRpcRequestListener() {
@Override @Override
public void onXmlRpcRequestResponse(LinphoneXmlRpcRequest request) { public void onResponse(XmlRpcRequest request) {
String result = request.getStringResponse(); String result = request.getStringResponse();
if (request.getStatus() == LinphoneXmlRpcRequest.Status.Ok) { if (request.getStatus() == XmlRpcRequest.Status.Ok) {
if (result.startsWith("ERROR_")) { if (result.startsWith("ERROR_")) {
Log.e(result); Log.e(result);
listener.onError(result); listener.onError(result);
return; return;
} }
listener.onAccountActivated(result); listener.onAccountActivated(result);
} else if (request.getStatus() == LinphoneXmlRpcRequest.Status.Failed) { } else if (request.getStatus() == XmlRpcRequest.Status.Failed) {
Log.e(result); Log.e(result);
listener.onError(result); listener.onError(result);
} }
@ -150,12 +150,12 @@ public class XmlRpcHelper {
} }
public void isAccountActivatedAsync(final XmlRpcListener listener, String username) { public void isAccountActivatedAsync(final XmlRpcListener listener, String username) {
LinphoneXmlRpcRequest xmlRpcRequest = new LinphoneXmlRpcRequestImpl("check_account_activated", LinphoneXmlRpcRequest.ArgType.String); XmlRpcRequest xmlRpcRequest = xmlRpcSession.createRequest(XmlRpcRequest.ArgType.String, "check_account_activated");
xmlRpcRequest.setListener(new LinphoneXmlRpcRequestListener() { xmlRpcRequest.setListener(new XmlRpcRequestListener() {
@Override @Override
public void onXmlRpcRequestResponse(LinphoneXmlRpcRequest request) { public void onResponse(XmlRpcRequest request) {
String result = request.getStringResponse(); String result = request.getStringResponse();
if (request.getStatus() == LinphoneXmlRpcRequest.Status.Ok) { if (request.getStatus() == XmlRpcRequest.Status.Ok) {
if ("OK".equals(result)) { if ("OK".equals(result)) {
listener.onAccountActivatedFetched(true); listener.onAccountActivatedFetched(true);
return; return;
@ -164,7 +164,7 @@ public class XmlRpcHelper {
listener.onError(result); listener.onError(result);
} }
listener.onAccountActivatedFetched(false); listener.onAccountActivatedFetched(false);
} else if (request.getStatus() == LinphoneXmlRpcRequest.Status.Failed) { } else if (request.getStatus() == XmlRpcRequest.Status.Failed) {
Log.e(result); Log.e(result);
listener.onError(result); listener.onError(result);
} }
@ -175,17 +175,17 @@ public class XmlRpcHelper {
} }
public void isTrialAccountAsync(final XmlRpcListener listener, String username, String password) { public void isTrialAccountAsync(final XmlRpcListener listener, String username, String password) {
LinphoneXmlRpcRequest xmlRpcRequest = new LinphoneXmlRpcRequestImpl("is_account_trial", LinphoneXmlRpcRequest.ArgType.String); XmlRpcRequest xmlRpcRequest = xmlRpcSession.createRequest(XmlRpcRequest.ArgType.String, "is_account_trial");
xmlRpcRequest.setListener(new LinphoneXmlRpcRequestListener() { xmlRpcRequest.setListener(new XmlRpcRequestListener() {
@Override @Override
public void onXmlRpcRequestResponse(LinphoneXmlRpcRequest request) { public void onResponse(XmlRpcRequest request) {
String result = request.getStringResponse(); String result = request.getStringResponse();
if (request.getStatus() == LinphoneXmlRpcRequest.Status.Ok) { if (request.getStatus() == XmlRpcRequest.Status.Ok) {
if (!"NOK".equals(result) && !"OK".equals(result)) { if (!"NOK".equals(result) && !"OK".equals(result)) {
listener.onError(result); listener.onError(result);
} }
listener.onTrialAccountFetched("OK".equals(result)); listener.onTrialAccountFetched("OK".equals(result));
} else if (request.getStatus() == LinphoneXmlRpcRequest.Status.Failed) { } else if (request.getStatus() == XmlRpcRequest.Status.Failed) {
Log.e(result); Log.e(result);
listener.onError(result); listener.onError(result);
} }
@ -197,12 +197,12 @@ public class XmlRpcHelper {
} }
public void isAccountAsync(final XmlRpcListener listener, String username) { public void isAccountAsync(final XmlRpcListener listener, String username) {
LinphoneXmlRpcRequest xmlRpcRequest = new LinphoneXmlRpcRequestImpl("check_account_activated", LinphoneXmlRpcRequest.ArgType.String); XmlRpcRequest xmlRpcRequest = xmlRpcSession.createRequest(XmlRpcRequest.ArgType.String, "check_account_activated");
xmlRpcRequest.setListener(new LinphoneXmlRpcRequestListener() { xmlRpcRequest.setListener(new XmlRpcRequestListener() {
@Override @Override
public void onXmlRpcRequestResponse(LinphoneXmlRpcRequest request) { public void onResponse(XmlRpcRequest request) {
String result = request.getStringResponse(); String result = request.getStringResponse();
if (request.getStatus() == LinphoneXmlRpcRequest.Status.Ok) { if (request.getStatus() == XmlRpcRequest.Status.Ok) {
if ("OK".equals(result)) { if ("OK".equals(result)) {
listener.onAccountFetched(true); listener.onAccountFetched(true);
return; return;
@ -211,7 +211,7 @@ public class XmlRpcHelper {
listener.onError(result); listener.onError(result);
} }
listener.onAccountFetched(false); listener.onAccountFetched(false);
} else if (request.getStatus() == LinphoneXmlRpcRequest.Status.Failed) { } else if (request.getStatus() == XmlRpcRequest.Status.Failed) {
Log.e(result); Log.e(result);
listener.onError(result); listener.onError(result);
} }
@ -222,12 +222,12 @@ public class XmlRpcHelper {
} }
public void changeAccountEmailAsync(final XmlRpcListener listener, String username, String password, String newEmail) { public void changeAccountEmailAsync(final XmlRpcListener listener, String username, String password, String newEmail) {
LinphoneXmlRpcRequest xmlRpcRequest = new LinphoneXmlRpcRequestImpl("change_email", LinphoneXmlRpcRequest.ArgType.String); XmlRpcRequest xmlRpcRequest = xmlRpcSession.createRequest(XmlRpcRequest.ArgType.String, "change_email");
xmlRpcRequest.setListener(new LinphoneXmlRpcRequestListener() { xmlRpcRequest.setListener(new XmlRpcRequestListener() {
@Override @Override
public void onXmlRpcRequestResponse(LinphoneXmlRpcRequest request) { public void onResponse(XmlRpcRequest request) {
String result = request.getStringResponse(); String result = request.getStringResponse();
if (request.getStatus() == LinphoneXmlRpcRequest.Status.Ok) { if (request.getStatus() == XmlRpcRequest.Status.Ok) {
if (result.startsWith("ERROR_")) { if (result.startsWith("ERROR_")) {
Log.e(result); Log.e(result);
listener.onError(result); listener.onError(result);
@ -235,7 +235,7 @@ public class XmlRpcHelper {
} }
listener.onAccountEmailChanged(result); listener.onAccountEmailChanged(result);
} else if (request.getStatus() == LinphoneXmlRpcRequest.Status.Failed) { } else if (request.getStatus() == XmlRpcRequest.Status.Failed) {
Log.e(result); Log.e(result);
listener.onError(result); listener.onError(result);
} }
@ -248,12 +248,12 @@ public class XmlRpcHelper {
} }
public void changeAccountPasswordAsync(final XmlRpcListener listener, String username, String oldPassword, String newPassword) { public void changeAccountPasswordAsync(final XmlRpcListener listener, String username, String oldPassword, String newPassword) {
LinphoneXmlRpcRequest xmlRpcRequest = new LinphoneXmlRpcRequestImpl("change_password", LinphoneXmlRpcRequest.ArgType.String); XmlRpcRequest xmlRpcRequest = xmlRpcSession.createRequest(XmlRpcRequest.ArgType.String, "change_password");
xmlRpcRequest.setListener(new LinphoneXmlRpcRequestListener() { xmlRpcRequest.setListener(new XmlRpcRequestListener() {
@Override @Override
public void onXmlRpcRequestResponse(LinphoneXmlRpcRequest request) { public void onResponse(XmlRpcRequest request) {
String result = request.getStringResponse(); String result = request.getStringResponse();
if (request.getStatus() == LinphoneXmlRpcRequest.Status.Ok) { if (request.getStatus() == XmlRpcRequest.Status.Ok) {
if (result.startsWith("ERROR_")) { if (result.startsWith("ERROR_")) {
Log.e(result); Log.e(result);
listener.onError(result); listener.onError(result);
@ -261,7 +261,7 @@ public class XmlRpcHelper {
} }
listener.onAccountPasswordChanged(result); listener.onAccountPasswordChanged(result);
} else if (request.getStatus() == LinphoneXmlRpcRequest.Status.Failed) { } else if (request.getStatus() == XmlRpcRequest.Status.Failed) {
Log.e(result); Log.e(result);
listener.onError(result); listener.onError(result);
} }
@ -274,12 +274,12 @@ public class XmlRpcHelper {
} }
public void changeAccountHashPasswordAsync(final XmlRpcListener listener, String username, String oldPassword, String newPassword) { public void changeAccountHashPasswordAsync(final XmlRpcListener listener, String username, String oldPassword, String newPassword) {
LinphoneXmlRpcRequest xmlRpcRequest = new LinphoneXmlRpcRequestImpl("change_hash", LinphoneXmlRpcRequest.ArgType.String); XmlRpcRequest xmlRpcRequest = xmlRpcSession.createRequest(XmlRpcRequest.ArgType.String, "change_hash");
xmlRpcRequest.setListener(new LinphoneXmlRpcRequestListener() { xmlRpcRequest.setListener(new XmlRpcRequestListener() {
@Override @Override
public void onXmlRpcRequestResponse(LinphoneXmlRpcRequest request) { public void onResponse(XmlRpcRequest request) {
String result = request.getStringResponse(); String result = request.getStringResponse();
if (request.getStatus() == LinphoneXmlRpcRequest.Status.Ok) { if (request.getStatus() == XmlRpcRequest.Status.Ok) {
if (result.startsWith("ERROR_")) { if (result.startsWith("ERROR_")) {
Log.e(result); Log.e(result);
listener.onError(result); listener.onError(result);
@ -287,7 +287,7 @@ public class XmlRpcHelper {
} }
listener.onAccountPasswordChanged(result); listener.onAccountPasswordChanged(result);
} else if (request.getStatus() == LinphoneXmlRpcRequest.Status.Failed) { } else if (request.getStatus() == XmlRpcRequest.Status.Failed) {
Log.e(result); Log.e(result);
listener.onError(result); listener.onError(result);
} }
@ -300,12 +300,12 @@ public class XmlRpcHelper {
} }
public void sendRecoverPasswordLinkByEmailAsync(final XmlRpcListener listener, String usernameOrEmail) { public void sendRecoverPasswordLinkByEmailAsync(final XmlRpcListener listener, String usernameOrEmail) {
LinphoneXmlRpcRequest xmlRpcRequest = new LinphoneXmlRpcRequestImpl("send_reset_account_password_email", LinphoneXmlRpcRequest.ArgType.String); XmlRpcRequest xmlRpcRequest = xmlRpcSession.createRequest(XmlRpcRequest.ArgType.String, "send_reset_account_password_email");
xmlRpcRequest.setListener(new LinphoneXmlRpcRequestListener() { xmlRpcRequest.setListener(new XmlRpcRequestListener() {
@Override @Override
public void onXmlRpcRequestResponse(LinphoneXmlRpcRequest request) { public void onResponse(XmlRpcRequest request) {
String result = request.getStringResponse(); String result = request.getStringResponse();
if (request.getStatus() == LinphoneXmlRpcRequest.Status.Ok) { if (request.getStatus() == XmlRpcRequest.Status.Ok) {
if (result.startsWith("ERROR_")) { if (result.startsWith("ERROR_")) {
Log.e(result); Log.e(result);
listener.onError(result); listener.onError(result);
@ -313,7 +313,7 @@ public class XmlRpcHelper {
} }
listener.onRecoverPasswordLinkSent(result); listener.onRecoverPasswordLinkSent(result);
} else if (request.getStatus() == LinphoneXmlRpcRequest.Status.Failed) { } else if (request.getStatus() == XmlRpcRequest.Status.Failed) {
Log.e(result); Log.e(result);
listener.onError(result); listener.onError(result);
} }
@ -324,12 +324,12 @@ public class XmlRpcHelper {
} }
public void sendActivateAccountLinkByEmailAsync(final XmlRpcListener listener, String usernameOrEmail) { public void sendActivateAccountLinkByEmailAsync(final XmlRpcListener listener, String usernameOrEmail) {
LinphoneXmlRpcRequest xmlRpcRequest = new LinphoneXmlRpcRequestImpl("resend_activation_email", LinphoneXmlRpcRequest.ArgType.String); XmlRpcRequest xmlRpcRequest = xmlRpcSession.createRequest(XmlRpcRequest.ArgType.String, "resend_activation_email");
xmlRpcRequest.setListener(new LinphoneXmlRpcRequestListener() { xmlRpcRequest.setListener(new XmlRpcRequestListener() {
@Override @Override
public void onXmlRpcRequestResponse(LinphoneXmlRpcRequest request) { public void onResponse(XmlRpcRequest request) {
String result = request.getStringResponse(); String result = request.getStringResponse();
if (request.getStatus() == LinphoneXmlRpcRequest.Status.Ok) { if (request.getStatus() == XmlRpcRequest.Status.Ok) {
if (result.startsWith("ERROR_")) { if (result.startsWith("ERROR_")) {
Log.e(result); Log.e(result);
listener.onError(result); listener.onError(result);
@ -337,7 +337,7 @@ public class XmlRpcHelper {
} }
listener.onActivateAccountLinkSent(result); listener.onActivateAccountLinkSent(result);
} else if (request.getStatus() == LinphoneXmlRpcRequest.Status.Failed) { } else if (request.getStatus() == XmlRpcRequest.Status.Failed) {
Log.e(result); Log.e(result);
listener.onError(result); listener.onError(result);
} }
@ -348,12 +348,12 @@ public class XmlRpcHelper {
} }
public void sendUsernameByEmailAsync(final XmlRpcListener listener, String email) { public void sendUsernameByEmailAsync(final XmlRpcListener listener, String email) {
LinphoneXmlRpcRequest xmlRpcRequest = new LinphoneXmlRpcRequestImpl("recover_username_from_email", LinphoneXmlRpcRequest.ArgType.String); XmlRpcRequest xmlRpcRequest = xmlRpcSession.createRequest(XmlRpcRequest.ArgType.String, "recover_username_from_email");
xmlRpcRequest.setListener(new LinphoneXmlRpcRequestListener() { xmlRpcRequest.setListener(new XmlRpcRequestListener() {
@Override @Override
public void onXmlRpcRequestResponse(LinphoneXmlRpcRequest request) { public void onResponse(XmlRpcRequest request) {
String result = request.getStringResponse(); String result = request.getStringResponse();
if (request.getStatus() == LinphoneXmlRpcRequest.Status.Ok) { if (request.getStatus() == XmlRpcRequest.Status.Ok) {
if (result.startsWith("ERROR_")) { if (result.startsWith("ERROR_")) {
Log.e(result); Log.e(result);
listener.onError(result); listener.onError(result);
@ -361,7 +361,7 @@ public class XmlRpcHelper {
} }
listener.onUsernameSent(result); listener.onUsernameSent(result);
} else if (request.getStatus() == LinphoneXmlRpcRequest.Status.Failed) { } else if (request.getStatus() == XmlRpcRequest.Status.Failed) {
Log.e(result); Log.e(result);
listener.onError(result); listener.onError(result);
} }
@ -372,12 +372,12 @@ public class XmlRpcHelper {
} }
public void verifySignatureAsync(final XmlRpcListener listener, String payload, String signature) { public void verifySignatureAsync(final XmlRpcListener listener, String payload, String signature) {
LinphoneXmlRpcRequest xmlRpcRequest = new LinphoneXmlRpcRequestImpl("check_payload_signature", LinphoneXmlRpcRequest.ArgType.String); XmlRpcRequest xmlRpcRequest = xmlRpcSession.createRequest(XmlRpcRequest.ArgType.String, "check_payload_signature");
xmlRpcRequest.setListener(new LinphoneXmlRpcRequestListener() { xmlRpcRequest.setListener(new XmlRpcRequestListener() {
@Override @Override
public void onXmlRpcRequestResponse(LinphoneXmlRpcRequest request) { public void onResponse(XmlRpcRequest request) {
String result = request.getStringResponse(); String result = request.getStringResponse();
if (request.getStatus() == LinphoneXmlRpcRequest.Status.Ok) { if (request.getStatus() == XmlRpcRequest.Status.Ok) {
Log.w(result); Log.w(result);
if (result.startsWith("ERROR_")) { if (result.startsWith("ERROR_")) {
Log.e(result); Log.e(result);
@ -386,7 +386,7 @@ public class XmlRpcHelper {
} }
listener.onSignatureVerified("OK".equals(result)); listener.onSignatureVerified("OK".equals(result));
} else if (request.getStatus() == LinphoneXmlRpcRequest.Status.Failed) { } else if (request.getStatus() == XmlRpcRequest.Status.Failed) {
Log.e(result); Log.e(result);
listener.onError(result); listener.onError(result);
} }
@ -398,12 +398,12 @@ public class XmlRpcHelper {
} }
public void getRemoteProvisioningFilenameAsync(final XmlRpcListener listener,String username, String domain, String password) { public void getRemoteProvisioningFilenameAsync(final XmlRpcListener listener,String username, String domain, String password) {
LinphoneXmlRpcRequest xmlRpcRequest = new LinphoneXmlRpcRequestImpl("get_remote_provisioning_filename", LinphoneXmlRpcRequest.ArgType.String); XmlRpcRequest xmlRpcRequest = xmlRpcSession.createRequest(XmlRpcRequest.ArgType.String, "get_remote_provisioning_filename");
xmlRpcRequest.setListener(new LinphoneXmlRpcRequestListener() { xmlRpcRequest.setListener(new XmlRpcRequestListener() {
@Override @Override
public void onXmlRpcRequestResponse(LinphoneXmlRpcRequest request) { public void onResponse(XmlRpcRequest request) {
String result = request.getStringResponse(); String result = request.getStringResponse();
if (request.getStatus() == LinphoneXmlRpcRequest.Status.Ok) { if (request.getStatus() == XmlRpcRequest.Status.Ok) {
if (result.startsWith("ERROR_")) { if (result.startsWith("ERROR_")) {
Log.e(result); Log.e(result);
listener.onError(result); listener.onError(result);
@ -411,7 +411,7 @@ public class XmlRpcHelper {
} }
listener.onRemoteProvisioningFilenameSent(result); listener.onRemoteProvisioningFilenameSent(result);
} else if (request.getStatus() == LinphoneXmlRpcRequest.Status.Failed) { } else if (request.getStatus() == XmlRpcRequest.Status.Failed) {
Log.e(result); Log.e(result);
listener.onError(result); listener.onError(result);
} }

@ -1 +1 @@
Subproject commit e10297ba6df500b3154f539b11e4c44ded4a227a Subproject commit 2a9d4afef2530dac32a07dd60180ef3f929e39b1

View file

@ -19,11 +19,11 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/ */
import org.linphone.core.tutorials.TutorialNotifier;
import android.os.Handler; import android.os.Handler;
import android.widget.TextView; import android.widget.TextView;
import org.linphone.core.tutorials.TutorialNotifier;
/** /**
* Write notifications to a TextView widget. * Write notifications to a TextView widget.
* This is an helper class, not a test activity. * This is an helper class, not a test activity.

View file

@ -18,12 +18,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/ */
package org.linphone.tutorials; package org.linphone.tutorials;
import org.linphone.R;
import org.linphone.core.LinphoneCoreException;
import org.linphone.core.tutorials.TutorialBuddyStatus;
import org.linphone.core.tutorials.TutorialNotifier;
import org.linphone.mediastream.Log;
import android.app.Activity; import android.app.Activity;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
@ -31,6 +25,12 @@ import android.view.View;
import android.widget.Button; import android.widget.Button;
import android.widget.TextView; import android.widget.TextView;
import org.linphone.R;
import org.linphone.core.CoreException;
import org.linphone.core.tutorials.TutorialBuddyStatus;
import org.linphone.core.tutorials.TutorialNotifier;
import org.linphone.mediastream.Log;
/** /**
* Activity for displaying and starting the BuddyStatus example on Android phone. * Activity for displaying and starting the BuddyStatus example on Android phone.
* *
@ -104,7 +104,7 @@ public class TutorialBuddyStatusActivity extends Activity {
buttonCall.setEnabled(true); buttonCall.setEnabled(true);
} }
}); });
} catch (LinphoneCoreException e) { } catch (CoreException e) {
Log.e(e); Log.e(e);
} }
} }

View file

@ -19,40 +19,6 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/ */
import java.nio.ByteBuffer;
import java.util.Timer;
import java.util.TimerTask;
import org.linphone.R;
import org.linphone.UIThreadDispatcher;
import org.linphone.core.LinphoneAddress;
import org.linphone.core.LinphoneAuthInfo;
import org.linphone.core.LinphoneCall;
import org.linphone.core.LinphoneCall.State;
import org.linphone.core.LinphoneCallStats;
import org.linphone.core.LinphoneChatMessage;
import org.linphone.core.LinphoneChatRoom;
import org.linphone.core.LinphoneContent;
import org.linphone.core.LinphoneCore;
import org.linphone.core.LinphoneCore.AuthMethod;
import org.linphone.core.LinphoneCore.EcCalibratorStatus;
import org.linphone.core.LinphoneCore.GlobalState;
import org.linphone.core.LinphoneCore.LogCollectionUploadState;
import org.linphone.core.LinphoneCore.RegistrationState;
import org.linphone.core.LinphoneCore.RemoteProvisioningState;
import org.linphone.core.LinphoneCoreException;
import org.linphone.core.LinphoneCoreFactory;
import org.linphone.core.LinphoneCoreListener;
import org.linphone.core.LinphoneEvent;
import org.linphone.core.LinphoneFriend;
import org.linphone.core.LinphoneFriendList;
import org.linphone.core.LinphoneFriendList.LinphoneFriendListListener;
import org.linphone.core.LinphoneInfoMessage;
import org.linphone.core.LinphoneProxyConfig;
import org.linphone.core.PublishState;
import org.linphone.core.SubscriptionState;
import org.linphone.mediastream.Log;
import android.app.Activity; import android.app.Activity;
import android.os.Bundle; import android.os.Bundle;
import android.view.View; import android.view.View;
@ -61,15 +27,49 @@ import android.widget.Button;
import android.widget.EditText; import android.widget.EditText;
import android.widget.TextView; import android.widget.TextView;
public class TutorialCardDavSync extends Activity implements OnClickListener, LinphoneCoreListener, LinphoneFriendListListener { import org.linphone.R;
import org.linphone.UIThreadDispatcher;
import org.linphone.core.Address;
import org.linphone.core.AuthInfo;
import org.linphone.core.Call;
import org.linphone.core.Call.State;
import org.linphone.core.CallStats;
import org.linphone.core.ChatMessage;
import org.linphone.core.ChatRoom;
import org.linphone.core.Content;
import org.linphone.core.Core;
import org.linphone.core.Core.AuthMethod;
import org.linphone.core.Core.ConfiguringState;
import org.linphone.core.Core.EcCalibratorStatus;
import org.linphone.core.Core.GlobalState;
import org.linphone.core.Core.LogCollectionUploadState;
import org.linphone.core.Core.RegistrationState;
import org.linphone.core.CoreException;
import org.linphone.core.CoreListener;
import org.linphone.core.Event;
import org.linphone.core.Factory;
import org.linphone.core.Friend;
import org.linphone.core.FriendList;
import org.linphone.core.FriendList.FriendListListener;
import org.linphone.core.InfoMessage;
import org.linphone.core.ProxyConfig;
import org.linphone.core.PublishState;
import org.linphone.core.SubscriptionState;
import org.linphone.mediastream.Log;
import java.nio.ByteBuffer;
import java.util.Timer;
import java.util.TimerTask;
public class TutorialCardDavSync extends Activity implements OnClickListener, CoreListener, FriendListListener {
private EditText username, password, ha1, server; private EditText username, password, ha1, server;
private Button synchronize; private Button synchronize;
private TextView logs; private TextView logs;
private Timer timer; private Timer timer;
private LinphoneCore lc; private Core lc;
private LinphoneFriendList lfl; private FriendList lfl;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -85,9 +85,9 @@ public class TutorialCardDavSync extends Activity implements OnClickListener, Li
synchronize = (Button) findViewById(R.id.carddav_synchronize); synchronize = (Button) findViewById(R.id.carddav_synchronize);
synchronize.setOnClickListener(this); synchronize.setOnClickListener(this);
LinphoneCoreFactory.instance().setDebugMode(true, "CardDAV sync tutorial"); Factory.instance().setDebugMode(true, "CardDAV sync tutorial");
try { try {
lc = LinphoneCoreFactory.instance().createLinphoneCore(this, this); lc = Factory.instance().createCore(this, this);
TimerTask lTask = new TimerTask() { TimerTask lTask = new TimerTask() {
@Override @Override
public void run() { public void run() {
@ -104,13 +104,13 @@ public class TutorialCardDavSync extends Activity implements OnClickListener, Li
timer = new Timer("Linphone scheduler"); timer = new Timer("Linphone scheduler");
timer.schedule(lTask, 0, 20); timer.schedule(lTask, 0, 20);
lfl = lc.createLinphoneFriendList(); lfl = lc.createFriendList();
lc.addFriendList(lfl); lc.addFriendList(lfl);
LinphoneFriend lf = lc.createFriendWithAddress("sip:ghislain@sip.linphone.org"); Friend lf = lc.createFriendWithAddress("sip:ghislain@sip.linphone.org");
lf.setName("Ghislain"); lf.setName("Ghislain");
lfl.addLocalFriend(lf); // This is a local friend, it won't be sent to the CardDAV server and will be removed at the next synchronization lfl.addLocalFriend(lf); // This is a local friend, it won't be sent to the CardDAV server and will be removed at the next synchronization
} catch (LinphoneCoreException e) { } catch (CoreException e) {
Log.e(e); Log.e(e);
} }
} }
@ -119,7 +119,7 @@ public class TutorialCardDavSync extends Activity implements OnClickListener, Li
protected void onDestroy() { protected void onDestroy() {
try { try {
lc.removeFriendList(lfl); lc.removeFriendList(lfl);
} catch (LinphoneCoreException e) { } catch (CoreException e) {
Log.e(e); Log.e(e);
} }
timer.cancel(); timer.cancel();
@ -131,7 +131,7 @@ public class TutorialCardDavSync extends Activity implements OnClickListener, Li
public void onClick(View v) { public void onClick(View v) {
String serverUrl = server.getText().toString(); String serverUrl = server.getText().toString();
String serverDomain = serverUrl.replace("http://", "").replace("https://", "").split("/")[0]; // We just want the domain name String serverDomain = serverUrl.replace("http://", "").replace("https://", "").split("/")[0]; // We just want the domain name
LinphoneAuthInfo authInfo = LinphoneCoreFactory.instance().createAuthInfo(username.getText().toString(), null, password.getText().toString(), ha1.getText().toString(), "SabreDAV", serverDomain); AuthInfo authInfo = Factory.instance().createAuthInfo(username.getText().toString(), null, password.getText().toString(), ha1.getText().toString(), "SabreDAV", serverDomain);
lc.addAuthInfo(authInfo); lc.addAuthInfo(authInfo);
lfl.setUri(serverUrl); lfl.setUri(serverUrl);
@ -146,273 +146,273 @@ public class TutorialCardDavSync extends Activity implements OnClickListener, Li
} }
@Override @Override
public void onLinphoneFriendCreated(LinphoneFriendList list, public void onContactCreated(FriendList list,
LinphoneFriend lf) { Friend lf) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
String msg = "Friend created " + lf.getAddress(); String msg = "Friend created " + lf.getAddress();
myLog(msg); myLog(msg);
LinphoneFriend[] friends = list.getFriendList(); Friend[] friends = list.getFriendsLists();
String msg2 = "There are " + friends.length + (friends.length > 1 ? " friends" : " friend") + " in the list"; String msg2 = "There are " + friends.length + (friends.length > 1 ? " friends" : " friend") + " in the list";
myLog(msg2); myLog(msg2);
} }
@Override @Override
public void onLinphoneFriendUpdated(LinphoneFriendList list, public void onContactUpdated(FriendList list,
LinphoneFriend newFriend, LinphoneFriend oldFriend) { Friend newFriend, Friend oldFriend) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
String msg = "Friend updated " + newFriend.getAddress(); String msg = "Friend updated " + newFriend.getAddress();
myLog(msg); myLog(msg);
LinphoneFriend[] friends = list.getFriendList(); Friend[] friends = list.getFriendsLists();
String msg2 = "There are " + friends.length + (friends.length > 1 ? " friends" : " friend") + " in the list"; String msg2 = "There are " + friends.length + (friends.length > 1 ? " friends" : " friend") + " in the list";
myLog(msg2); myLog(msg2);
} }
@Override @Override
public void onLinphoneFriendDeleted(LinphoneFriendList list, public void onContactDeleted(FriendList list,
LinphoneFriend lf) { Friend lf) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
String msg = "Friend removed " + lf.getAddress(); String msg = "Friend removed " + lf.getAddress();
myLog(msg); myLog(msg);
LinphoneFriend[] friends = list.getFriendList(); Friend[] friends = list.getFriendsLists();
String msg2 = "There are " + friends.length + (friends.length > 1 ? " friends" : " friend") + " in the list"; String msg2 = "There are " + friends.length + (friends.length > 1 ? " friends" : " friend") + " in the list";
myLog(msg2); myLog(msg2);
} }
@Override @Override
public void onLinphoneFriendSyncStatusChanged(LinphoneFriendList list, LinphoneFriendList.State status, String message) { public void onSyncStatusChanged(FriendList list, FriendList.State status, String message) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
String msg = "Sync status changed: " + status.toString() + " (" + message + ")"; String msg = "Sync status changed: " + status.toString() + " (" + message + ")";
myLog(msg); myLog(msg);
if (status != LinphoneFriendList.State.SyncStarted) { if (status != FriendList.State.SyncStarted) {
synchronize.setEnabled(true); synchronize.setEnabled(true);
} }
} }
@Override @Override
public void friendListCreated(LinphoneCore lc, LinphoneFriendList list) { public void onFriendListCreated(Core lc, FriendList list) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
String msg = "Friend List added"; String msg = "Friend List added";
myLog(msg); myLog(msg);
LinphoneFriendList[] lists = lc.getFriendLists(); FriendList[] lists = lc.getFriendsLists();
String msg2 = "There are " + lists.length + (lists.length > 1 ? " lists" : " list") + " in the core"; String msg2 = "There are " + lists.length + (lists.length > 1 ? " lists" : " list") + " in the core";
myLog(msg2); myLog(msg2);
} }
@Override @Override
public void friendListRemoved(LinphoneCore lc, LinphoneFriendList list) { public void onFriendListRemoved(Core lc, FriendList list) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
String msg = "Friend List removed"; String msg = "Friend List removed";
myLog(msg); myLog(msg);
LinphoneFriendList[] lists = lc.getFriendLists(); FriendList[] lists = lc.getFriendsLists();
String msg2 = "There are " + lists.length + (lists.length > 1 ? " lists" : " list") + " in the core"; String msg2 = "There are " + lists.length + (lists.length > 1 ? " lists" : " list") + " in the core";
myLog(msg2); myLog(msg2);
} }
@Override @Override
public void networkReachableChanged(LinphoneCore lc, boolean enable) { public void onNetworkReachable(Core lc, boolean enable) {
} }
@Override @Override
public void callStatsUpdated(LinphoneCore lc, LinphoneCall call, public void onCallStatsUpdated(Core lc, Call call,
LinphoneCallStats stats) { CallStats stats) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public void newSubscriptionRequest(LinphoneCore lc, LinphoneFriend lf, public void onNewSubscriptionRequested(Core lc, Friend lf,
String url) { String url) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public void notifyPresenceReceived(LinphoneCore lc, LinphoneFriend lf) { public void onNotifyPresenceReceived(Core lc, Friend lf) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public void dtmfReceived(LinphoneCore lc, LinphoneCall call, int dtmf) { public void onDtmfReceived(Core lc, Call call, int dtmf) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public void notifyReceived(LinphoneCore lc, LinphoneCall call, public void removed(Core lc, Call call,
LinphoneAddress from, byte[] event) { Address from, byte[] event) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public void transferState(LinphoneCore lc, LinphoneCall call, public void onTransferStateChanged(Core lc, Call call,
State new_call_state) { State new_call_state) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public void infoReceived(LinphoneCore lc, LinphoneCall call, public void onInfoReceived(Core lc, Call call,
LinphoneInfoMessage info) { InfoMessage info) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public void subscriptionStateChanged(LinphoneCore lc, LinphoneEvent ev, public void onSubscriptionStateChanged(Core lc, Event ev,
SubscriptionState state) { SubscriptionState state) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public void publishStateChanged(LinphoneCore lc, LinphoneEvent ev, public void onPublishStateChanged(Core lc, Event ev,
PublishState state) { PublishState state) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public void show(LinphoneCore lc) { public void removed( lc) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public void displayStatus(LinphoneCore lc, String message) { public void removed(Core lc, String message) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public void displayMessage(LinphoneCore lc, String message) { public void removed(Core lc, String message) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public void displayWarning(LinphoneCore lc, String message) { public void removed(Core lc, String message) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public void fileTransferProgressIndication(LinphoneCore lc, public void removed(Core lc,
LinphoneChatMessage message, LinphoneContent content, int progress) { ChatMessage message, Content content, int progress) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public void fileTransferRecv(LinphoneCore lc, LinphoneChatMessage message, public void removed(Core lc, ChatMessage message,
LinphoneContent content, byte[] buffer, int size) { Content content, byte[] buffer, int size) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public int fileTransferSend(LinphoneCore lc, LinphoneChatMessage message, public int removed(Core lc, ChatMessage message,
LinphoneContent content, ByteBuffer buffer, int size) { Content content, ByteBuffer buffer, int size) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return 0; return 0;
} }
@Override @Override
public void globalState(LinphoneCore lc, GlobalState state, String message) { public void onGlobalStateChanged(Core lc, GlobalState state, String message) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public void registrationState(LinphoneCore lc, LinphoneProxyConfig cfg, public void onRegistrationStateChanged(Core lc, ProxyConfig cfg,
RegistrationState state, String smessage) { RegistrationState state, String smessage) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public void configuringStatus(LinphoneCore lc, public void onConfiguringStatus(Core lc,
RemoteProvisioningState state, String message) { ConfiguringState state, String message) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public void messageReceived(LinphoneCore lc, LinphoneChatRoom cr, public void onMessageReceived(Core lc, ChatRoom cr,
LinphoneChatMessage message) { ChatMessage message) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public void messageReceivedUnableToDecrypted(LinphoneCore lc, LinphoneChatRoom cr, LinphoneChatMessage message) { public void removed(Core lc, ChatRoom cr, ChatMessage message) {
} }
@Override @Override
public void callState(LinphoneCore lc, LinphoneCall call, State state, public void onCallStateChanged(Core lc, Call call, State state,
String message) { String message) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public void callEncryptionChanged(LinphoneCore lc, LinphoneCall call, public void onCallEncryptionChanged(Core lc, Call call,
boolean encrypted, String authenticationToken) { boolean encrypted, String authenticationToken) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public void notifyReceived(LinphoneCore lc, LinphoneEvent ev, public void onNotifyReceived(Core lc, Event ev,
String eventName, LinphoneContent content) { String eventName, Content content) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public void isComposingReceived(LinphoneCore lc, LinphoneChatRoom cr) { public void onIsComposingReceived(Core lc, ChatRoom cr) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public void ecCalibrationStatus(LinphoneCore lc, EcCalibratorStatus status, public void onEcCalibrationResult(Core lc, EcCalibratorStatus status,
int delay_ms, Object data) { int delay_ms, Object data) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public void uploadProgressIndication(LinphoneCore lc, int offset, int total) { public void onLogCollectionUploadProgressIndication(Core lc, int offset, int total) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public void uploadStateChanged(LinphoneCore lc, public void onLogCollectionUploadStateChanged(Core lc,
LogCollectionUploadState state, String info) { LogCollectionUploadState state, String info) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public void authInfoRequested(LinphoneCore lc, String realm, public void removed(Core lc, String realm,
String username, String domain) { String username, String domain) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public void authenticationRequested(LinphoneCore lc, public void onAuthenticationRequested(Core lc,
LinphoneAuthInfo authInfo, AuthMethod method) { AuthInfo authInfo, AuthMethod method) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }

View file

@ -19,12 +19,6 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/ */
import org.linphone.R;
import org.linphone.core.LinphoneCoreException;
import org.linphone.core.tutorials.TutorialChatRoom;
import org.linphone.core.tutorials.TutorialNotifier;
import org.linphone.mediastream.Log;
import android.app.Activity; import android.app.Activity;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
@ -32,6 +26,12 @@ import android.view.View;
import android.widget.Button; import android.widget.Button;
import android.widget.TextView; import android.widget.TextView;
import org.linphone.R;
import org.linphone.core.CoreException;
import org.linphone.core.tutorials.TutorialChatRoom;
import org.linphone.core.tutorials.TutorialNotifier;
import org.linphone.mediastream.Log;
/** /**
* Activity for displaying and starting the chatroom example on Android phone. * Activity for displaying and starting the chatroom example on Android phone.
* *
@ -92,7 +92,7 @@ public class TutorialChatRoomActivity extends Activity {
buttonCall.setEnabled(true); buttonCall.setEnabled(true);
} }
}); });
} catch (LinphoneCoreException e) { } catch (CoreException e) {
Log.e(e); Log.e(e);
} }
} }

View file

@ -18,12 +18,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/ */
package org.linphone.tutorials; package org.linphone.tutorials;
import org.linphone.R;
import org.linphone.core.LinphoneCoreException;
import org.linphone.core.tutorials.TutorialHelloWorld;
import org.linphone.core.tutorials.TutorialNotifier;
import org.linphone.mediastream.Log;
import android.app.Activity; import android.app.Activity;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
@ -31,6 +25,12 @@ import android.view.View;
import android.widget.Button; import android.widget.Button;
import android.widget.TextView; import android.widget.TextView;
import org.linphone.R;
import org.linphone.core.CoreException;
import org.linphone.core.tutorials.TutorialHelloWorld;
import org.linphone.core.tutorials.TutorialNotifier;
import org.linphone.mediastream.Log;
/** /**
* Activity for displaying and starting the HelloWorld example on Android phone. * Activity for displaying and starting the HelloWorld example on Android phone.
* *
@ -93,7 +93,7 @@ public class TutorialHelloWorldActivity extends Activity {
buttonCall.setEnabled(true); buttonCall.setEnabled(true);
} }
}); });
} catch (LinphoneCoreException e) { } catch (CoreException e) {
Log.e(e); Log.e(e);
} }
} }

View file

@ -18,13 +18,13 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/ */
import org.linphone.R;
import android.app.Activity; import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.view.View; import android.view.View;
import org.linphone.R;
public class TutorialLauncherActivity extends Activity { public class TutorialLauncherActivity extends Activity {
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {

View file

@ -19,18 +19,18 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/ */
import org.linphone.R;
import org.linphone.core.LinphoneCoreException;
import org.linphone.core.tutorials.TutorialNotifier;
import org.linphone.core.tutorials.TutorialRegistration;
import org.linphone.mediastream.Log;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.view.View; import android.view.View;
import android.widget.Button; import android.widget.Button;
import android.widget.TextView; import android.widget.TextView;
import org.linphone.R;
import org.linphone.core.CoreException;
import org.linphone.core.tutorials.TutorialNotifier;
import org.linphone.core.tutorials.TutorialRegistration;
import org.linphone.mediastream.Log;
/** /**
* Activity for displaying and starting the registration example on Android phone. * Activity for displaying and starting the registration example on Android phone.
* *
@ -96,7 +96,7 @@ public class TutorialRegistrationActivity extends TutorialHelloWorldActivity {
tutorial.launchTutorial( tutorial.launchTutorial(
sipAddressWidget.getText().toString(), sipAddressWidget.getText().toString(),
sipPasswordWidget.getText().toString()); sipPasswordWidget.getText().toString());
} catch (LinphoneCoreException e) { } catch (CoreException e) {
Log.e(e); Log.e(e);
outputText.setText(e.getMessage() +"\n"+outputText.getText()); outputText.setText(e.getMessage() +"\n"+outputText.getText());
} }