From a16ef1961d673914602086b29b6901f2305ddc6a Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Tue, 16 Mar 2010 18:15:00 +0100 Subject: [PATCH] add about menu --- AndroidManifest.xml | 5 ++ res/drawable/linphone_3_250x130.png | Bin 0 -> 34220 bytes res/layout/about.xml | 7 +++ res/layout/dialer.xml | 26 +++++----- res/values/strings.xml | 2 + src/org/linphone/AboutActivity.java | 31 ++++++++++++ src/org/linphone/DialerActivity.java | 47 ++++++++++-------- src/org/linphone/LinphoneActivity.java | 4 ++ .../linphone/LinphonePreferencesActivity.java | 6 ++- src/org/linphone/NetworkManager.java | 7 ++- src/org/linphone/core/LinphoneAddress.java | 6 ++- .../linphone/core/LinphoneAddressImpl.java | 5 ++ src/org/linphone/core/LinphoneCore.java | 9 ++++ src/org/linphone/core/LinphoneCoreImpl.java | 13 +++++ 14 files changed, 130 insertions(+), 38 deletions(-) create mode 100644 res/drawable/linphone_3_250x130.png create mode 100644 res/layout/about.xml create mode 100644 src/org/linphone/AboutActivity.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index a4a4a194e..3af217811 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -40,6 +40,11 @@ + + + + + diff --git a/res/drawable/linphone_3_250x130.png b/res/drawable/linphone_3_250x130.png new file mode 100644 index 0000000000000000000000000000000000000000..020e943b633517d68f8bb96cf16684e53f6bec66 GIT binary patch literal 34220 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 YA5`04!RMw^0ssI207*qoM6N<$g8Jj;v;Y7A literal 0 HcmV?d00001 diff --git a/res/layout/about.xml b/res/layout/about.xml new file mode 100644 index 000000000..bdb5351a5 --- /dev/null +++ b/res/layout/about.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/res/layout/dialer.xml b/res/layout/dialer.xml index a39483f34..f270162bb 100644 --- a/res/layout/dialer.xml +++ b/res/layout/dialer.xml @@ -11,7 +11,7 @@ android:hint="sip:" android:layout_width="fill_parent" android:lines="1" android:layout_weight="0.2"> + android:layout_width="fill_parent" android:text="<-" android:layout_weight="0.8" android:textSize="20sp" android:textStyle="bold"> @@ -25,41 +25,41 @@ android:layout_weight="1" android:id="@+id/DialerRow01" android:layout_width="fill_parent"> + android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="0.33" android:textStyle="bold" android:textSize="20sp"> + android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="0.33" android:textStyle="bold" android:textSize="20sp"> + android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="0.33" android:textStyle="bold" android:textSize="20sp"> + android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="0.33" android:textStyle="bold" android:textSize="20sp"> + android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="0.33" android:textStyle="bold" android:textSize="20sp"> + android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="0.33" android:textStyle="bold" android:textSize="20sp"> + android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="0.33" android:textStyle="bold" android:textSize="20sp"> + android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="0.33" android:textStyle="bold" android:textSize="20sp"> + android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="0.33" android:textStyle="bold" android:textSize="20sp"> + android:id="@+id/ButtonStar" android:layout_weight="0.33" android:textStyle="bold" android:textSize="20sp"> + android:layout_height="fill_parent" android:text="0+" android:id="@+id/Button00" android:layout_weight="0.33" android:textStyle="bold" android:textSize="20sp"> + android:text="#" android:layout_weight="0.33" android:textStyle="bold" android:textSize="20sp"> diff --git a/res/values/strings.xml b/res/values/strings.xml index a5cc7cbf4..6a5fe0d9a 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1,5 +1,6 @@ + Linphone 3.1.2 SIP (rfc 3261) Compatible Internet phone \n http://www.linphone.org About Audio Exit @@ -24,4 +25,5 @@ %s, do you want to return to the settings page ? Cannot initiate a new call because a call is already engaged History +Cannot build destination address from [%s] diff --git a/src/org/linphone/AboutActivity.java b/src/org/linphone/AboutActivity.java new file mode 100644 index 000000000..e860ed064 --- /dev/null +++ b/src/org/linphone/AboutActivity.java @@ -0,0 +1,31 @@ +/* +AboutActivity.java +Copyright (C) 2010 Belledonne Communications, Grenoble, France + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ +package org.linphone; + +import android.app.Activity; +import android.os.Bundle; + + + +public class AboutActivity extends Activity { + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.about); + } +} diff --git a/src/org/linphone/DialerActivity.java b/src/org/linphone/DialerActivity.java index 759c06e16..5537ba0d3 100644 --- a/src/org/linphone/DialerActivity.java +++ b/src/org/linphone/DialerActivity.java @@ -20,6 +20,7 @@ package org.linphone; import org.linphone.core.LinphoneAddress; import org.linphone.core.LinphoneCore; +import org.linphone.core.LinphoneCoreException; import org.linphone.core.LinphoneCoreFactory; import org.linphone.core.LinphoneCoreListener; import org.linphone.core.LinphoneProxyConfig; @@ -107,7 +108,15 @@ public class DialerActivity extends Activity implements LinphoneCoreListener { mErase.setOnClickListener(new OnClickListener() { public void onClick(View v) { - mAddress.getEditableText().delete(mAddress.getEditableText().length()-1, mAddress.getEditableText().length()); + if (mAddress.length() >0) { + int lBegin = mAddress.getSelectionStart(); + if (lBegin == -1) { + lBegin = mAddress.getEditableText().length()-1; + } + if (lBegin >0) { + mAddress.getEditableText().delete(lBegin-1,lBegin); + } + } } }); @@ -124,24 +133,18 @@ public class DialerActivity extends Activity implements LinphoneCoreListener { toast.show(); return; } - String lRawAddress = mAddress.getText().toString(); - String lCallingUri=null; - if (lRawAddress.startsWith("sip:")) { - lCallingUri=lRawAddress; - } else { - LinphoneProxyConfig lProxy = lLinphoneCore.getDefaultProxyConfig(); - String lDomain=null; - String lNormalizedNumber=lRawAddress; - if (lProxy!=null) { - lNormalizedNumber = lProxy.normalizePhoneNumber(lNormalizedNumber); - lDomain = lProxy.getDomain(); - } - LinphoneAddress lAddress = LinphoneCoreFactory.instance().createLinphoneAddress(lNormalizedNumber - , lDomain - , mDisplayName); - lCallingUri = lAddress.toUri(); + LinphoneAddress lAddress; + try { + lAddress = lLinphoneCore.interpretUrl( mAddress.getText().toString()); + } catch (LinphoneCoreException e) { + Toast toast = Toast.makeText(DialerActivity.this + ,String.format(getString(R.string.warning_wrong_destination_address),mAddress.getText().toString()) + , Toast.LENGTH_LONG); + toast.show(); + return; } - lLinphoneCore.invite(lCallingUri); + lAddress.setDisplayName(mDisplayName); + lLinphoneCore.invite(lAddress); } }); @@ -303,7 +306,11 @@ public class DialerActivity extends Activity implements LinphoneCoreListener { } case GSTATE_CALL_IN_CONNECTED: case GSTATE_CALL_OUT_CONNECTED: { - routeAudioToReceiver(); + if (mSpeaker.isChecked()) { + routeAudioToSpeaker(); + } else { + routeAudioToReceiver(); + } setVolumeControlStream(AudioManager.STREAM_VOICE_CALL); break; } @@ -321,7 +328,7 @@ public class DialerActivity extends Activity implements LinphoneCoreListener { } } public void inviteReceived(LinphoneCore lc, String from) { - // TODO Auto-generated method stub + // TODO Auto-generated method stub } public void show(LinphoneCore lc) { diff --git a/src/org/linphone/LinphoneActivity.java b/src/org/linphone/LinphoneActivity.java index f649ff749..8b9e8dc12 100644 --- a/src/org/linphone/LinphoneActivity.java +++ b/src/org/linphone/LinphoneActivity.java @@ -160,6 +160,10 @@ public class LinphoneActivity extends TabActivity implements SensorEventListener case R.id.menu_exit: finish(); break; + case R.id.menu_about: + Intent intent = new Intent(Intent.ACTION_MAIN); + intent.setClass(this, AboutActivity.class); + startActivity(intent); default: Log.e(LinphoneService.TAG, "Unknown menu item ["+item+"]"); break; diff --git a/src/org/linphone/LinphonePreferencesActivity.java b/src/org/linphone/LinphonePreferencesActivity.java index 8c04785cc..2c57729cf 100644 --- a/src/org/linphone/LinphonePreferencesActivity.java +++ b/src/org/linphone/LinphonePreferencesActivity.java @@ -33,13 +33,15 @@ public class LinphonePreferencesActivity extends PreferenceActivity { } @Override - protected void onStop() { - super.onStop(); + protected void onPause() { + super.onPause(); + if (isFinishing()) { try { LinphoneActivity.instance().initFromConf(); } catch (LinphoneException e) { Log.e(LinphoneService.TAG, "cannot update config",e); } + } } } diff --git a/src/org/linphone/NetworkManager.java b/src/org/linphone/NetworkManager.java index 1f07bad54..e47b6f5ca 100644 --- a/src/org/linphone/NetworkManager.java +++ b/src/org/linphone/NetworkManager.java @@ -35,8 +35,11 @@ public class NetworkManager extends BroadcastReceiver { NetworkInfo lNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO); Log.i(LinphoneService.TAG, "Network info ["+lNetworkInfo+"]"); Boolean lNoConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY,false); - //Boolean lIsFailOver = intent.getBooleanExtra(ConnectivityManager.EXTRA_IS_FAILOVER,false); - if (lNoConnectivity| ((lNetworkInfo.getState() == NetworkInfo.State.DISCONNECTED) /*&& !lIsFailOver*/)) { + if (!LinphoneService.isready()) { + Log.i(LinphoneService.TAG, "Linphone service not ready"); + return; + } + if (lNoConnectivity| ((lNetworkInfo.getState() == NetworkInfo.State.DISCONNECTED) /*&& !lIsFailOver*/)) { LinphoneService.instance().getLinphoneCore().setNetworkStateReachable(false); } else if (lNetworkInfo.getState() == NetworkInfo.State.CONNECTED){ LinphoneService.instance().getLinphoneCore().setNetworkStateReachable(true); diff --git a/src/org/linphone/core/LinphoneAddress.java b/src/org/linphone/core/LinphoneAddress.java index 619bd4fb8..86271674c 100644 --- a/src/org/linphone/core/LinphoneAddress.java +++ b/src/org/linphone/core/LinphoneAddress.java @@ -34,7 +34,11 @@ public interface LinphoneAddress { * @return null if not set */ public String getDomain(); - + /** + * set display name + * @param name + */ + public void setDisplayName(String name); /** * @return an URI version of the address that can be used to place a call using {@link LinphoneCore#invite(String)} */ diff --git a/src/org/linphone/core/LinphoneAddressImpl.java b/src/org/linphone/core/LinphoneAddressImpl.java index fd80db86e..50036ac7d 100644 --- a/src/org/linphone/core/LinphoneAddressImpl.java +++ b/src/org/linphone/core/LinphoneAddressImpl.java @@ -29,6 +29,8 @@ public class LinphoneAddressImpl implements LinphoneAddress { private native String getUserName(long ptr); private native String getDomain(long ptr); private native String toUri(long ptr); + private native String setDisplayName(long ptr,String name); + protected LinphoneAddressImpl(String username,String domain,String displayName) { nativePtr = newLinphoneAddressImpl("sip:"+username+"@"+domain, displayName); @@ -56,5 +58,8 @@ public class LinphoneAddressImpl implements LinphoneAddress { public String toUri() { return toUri(nativePtr); } + public void setDisplayName(String name) { + setDisplayName(nativePtr,name); + } } diff --git a/src/org/linphone/core/LinphoneCore.java b/src/org/linphone/core/LinphoneCore.java index 753dfa12f..4245c5518 100644 --- a/src/org/linphone/core/LinphoneCore.java +++ b/src/org/linphone/core/LinphoneCore.java @@ -90,6 +90,8 @@ public interface LinphoneCore { public void invite(String uri); + public void invite(LinphoneAddress to); + public void terminateCall(); /** * get the remote address in case of in/out call @@ -151,6 +153,13 @@ public interface LinphoneCore { * @param isMuted */ public void muteMic(boolean isMuted); + /** + * Build an address according to the current proxy config. In case destination is not a sip uri, the default proxy domain is automatically appended + * @param destination + * @return + * @throws If no LinphonrAddress can be built from destination + */ + public LinphoneAddress interpretUrl(String destination) throws LinphoneCoreException; } diff --git a/src/org/linphone/core/LinphoneCoreImpl.java b/src/org/linphone/core/LinphoneCoreImpl.java index eda069112..173d5846c 100644 --- a/src/org/linphone/core/LinphoneCoreImpl.java +++ b/src/org/linphone/core/LinphoneCoreImpl.java @@ -52,6 +52,8 @@ class LinphoneCoreImpl implements LinphoneCore { private native void setSoftPlayLevel(long nativeptr, float gain); private native float getSoftPlayLevel(long nativeptr); private native void muteMic(long nativePtr,boolean isMuted); + private native long interpretUrl(long nativePtr,String destination); + private native void inviteAddress(long nativePtr,long to); LinphoneCoreImpl(LinphoneCoreListener listener, File userConfig,File factoryConfig,Object userdata) throws IOException { @@ -169,4 +171,15 @@ class LinphoneCoreImpl implements LinphoneCore { public void muteMic(boolean isMuted) { muteMic(nativePtr,isMuted); } + public LinphoneAddress interpretUrl(String destination) throws LinphoneCoreException { + long lAddress = interpretUrl(nativePtr,destination); + if (lAddress != 0) { + return new LinphoneAddressImpl(lAddress); + } else { + throw new LinphoneCoreException("Cannot interpret ["+destination+"]"); + } + } + public void invite(LinphoneAddress to) { + inviteAddress(nativePtr,((LinphoneAddressImpl)to).nativePtr); + } }