diff --git a/res/raw/linphonerc b/res/raw/linphonerc index bc6ef769f..fc3658fbf 100644 --- a/res/raw/linphonerc +++ b/res/raw/linphonerc @@ -22,9 +22,11 @@ video_jitt_comp=60 nortp_timeout=30 [sound] -playback_dev_id=AU: Audio Unit -ringer_dev_id=AU: Audio Unit -capture_dev_id=AU: Audio Unit +playback_dev_id=ANDROID SND: Android Sound card +ringer_dev_id=ANDROID SND: Android Sound card +capture_dev_id=ANDROID SND: Android Sound card +remote_ring=/data/data/org.linphone/files/ringback.wav +local_ring=/data/data/org.linphone/files/oldphone_mono.wav [audio_codec_0] mime=speex @@ -39,7 +41,7 @@ enabled=0 [audio_codec_2] mime=speex rate=8000 -enabled=0 +enabled=1 [audio_codec_3] mime=GSM @@ -54,7 +56,7 @@ enabled=0 [audio_codec_5] mime=GSM rate=8000 -enabled=0 +enabled=1 [audio_codec_6] mime=PCMU diff --git a/src/org/linphone/Linphone.java b/src/org/linphone/Linphone.java index ee0bb6a49..22281a218 100644 --- a/src/org/linphone/Linphone.java +++ b/src/org/linphone/Linphone.java @@ -26,10 +26,11 @@ public class Linphone extends Activity implements LinphoneCoreListener { /** Called when the activity is first created. */ private static String LINPHONE_FACTORY_RC = "/data/data/org.linphone/files/linphonerc"; private static String LINPHONE_RC = "/data/data/org.linphone/files/.linphonerc"; - private static String RINGBACK_SND = "/data/data/org.linphone/files/oldphone_mono.wav"; + private static String RING_SND = "/data/data/org.linphone/files/oldphone_mono.wav"; + private static String RINGBACK_SND = "/data/data/org.linphone/files/ringback.wav"; private LinphoneCore mLinphoneCore; - private LinphoneProxyConfig mProxyConfig; + private LinphoneProxyConfig mProxyConfig; private LinphoneAuthInfo mAuthInfo; Timer mTimer = new Timer("Linphone scheduler"); @@ -62,19 +63,23 @@ public class Linphone extends Activity implements LinphoneCoreListener { }; mTimer.scheduleAtFixedRate(lTask, 0, 100); + + + } catch (Exception e) { Log.e(TAG,"Cannot start linphone",e); } } public void copyAssetsFromPackage() throws IOException { - copyIfNotExist(R.raw.oldphone_mono,RINGBACK_SND); + copyIfNotExist(R.raw.oldphone_mono,RING_SND); + copyIfNotExist(R.raw.ringback,RINGBACK_SND); copyIfNotExist(R.raw.linphonerc,LINPHONE_FACTORY_RC); } private void copyIfNotExist(int ressourceId,String target) throws IOException { File lFileToCopy = new File(target); if (!lFileToCopy.exists()) { - FileOutputStream lOutputStream = openFileOutput (lFileToCopy.getName(), 0); + FileOutputStream lOutputStream = openFileOutput (lFileToCopy.getName(), 0); InputStream lInputStream = getResources().openRawResource(ressourceId); int readByte; byte[] buff = new byte[8048]; @@ -100,16 +105,22 @@ public class Linphone extends Activity implements LinphoneCoreListener { } public void displayStatus(LinphoneCore lc, String message) { - // TODO Auto-generated method stub + Log.i(TAG, message); } public void displayWarning(LinphoneCore lc, String message) { // TODO Auto-generated method stub } - public void generalState(LinphoneCore lc, GeneralState state) { - // TODO Auto-generated method stub - + public void generalState(LinphoneCore lc, LinphoneCore.GeneralState state) { + Log.i(TAG, "new state ["+state+"]"); + + switch(state) { + case GSTATE_REG_OK: { + mLinphoneCore.invite("simon.morlat"); + } + } + } public void inviteReceived(LinphoneCore lc, String from) { // TODO Auto-generated method stub diff --git a/src/org/linphone/core/LinphoneCore.java b/src/org/linphone/core/LinphoneCore.java index 8dccff830..8df865468 100644 --- a/src/org/linphone/core/LinphoneCore.java +++ b/src/org/linphone/core/LinphoneCore.java @@ -24,30 +24,37 @@ public interface LinphoneCore { /* * linphone core states */ - interface GeneralState { + public enum GeneralState { /* states for GSTATE_GROUP_POWER */ - static int GSTATE_POWER_OFF =0; /* initial state */ - static int GSTATE_POWER_STARTUP=1; - static int GSTATE_POWER_ON=2; - static int GSTATE_POWER_SHUTDOWN=3; + GSTATE_POWER_OFF(0), /* initial state */ + GSTATE_POWER_STARTUP(1), + GSTATE_POWER_ON(2), + GSTATE_POWER_SHUTDOWN(3), /* states for GSTATE_GROUP_REG */ - static int GSTATE_REG_NONE=10; /* initial state */ - static int GSTATE_REG_OK=11; - static int GSTATE_REG_FAILED=12; + GSTATE_REG_NONE(10), /* initial state */ + GSTATE_REG_OK(11), + GSTATE_REG_FAILED(12), /* states for GSTATE_GROUP_CALL */ - static int GSTATE_CALL_IDLE=20; /* initial state */ - static int GSTATE_CALL_OUT_INVITE=21; - static int GSTATE_CALL_OUT_CONNECTED=22; - static int GSTATE_CALL_IN_INVITE=23; - static int GSTATE_CALL_IN_CONNECTED=24; - static int GSTATE_CALL_END=25; - static int GSTATE_CALL_ERROR=26; - static int GSTATE_INVALID=27; - /** - * get new state {@link: } - */ - public int getNewState(); -} + GSTATE_CALL_IDLE(20), /* initial state */ + GSTATE_CALL_OUT_INVITE(21), + GSTATE_CALL_OUT_CONNECTED(22), + GSTATE_CALL_IN_INVITE(23), + GSTATE_CALL_IN_CONNECTED(24), + GSTATE_CALL_END(25), + GSTATE_CALL_ERROR(26), + GSTATE_INVALID(27); + private final int mValue; + + GeneralState(int value) { + mValue = value; + } + public static GeneralState fromInt(int value) { + for (GeneralState state: GeneralState.values()) { + if (state.mValue == value) return state; + } + throw new RuntimeException("sate not found ["+value+"]"); + } + } /** @@ -69,7 +76,7 @@ public interface LinphoneCore { void addAuthInfo(LinphoneAuthInfo info); - public void invite(String url); + public void invite(String uri); public void iterate(); } diff --git a/src/org/linphone/core/LinphoneCoreImpl.java b/src/org/linphone/core/LinphoneCoreImpl.java index f922cef08..444091ac8 100644 --- a/src/org/linphone/core/LinphoneCoreImpl.java +++ b/src/org/linphone/core/LinphoneCoreImpl.java @@ -31,6 +31,7 @@ class LinphoneCoreImpl implements LinphoneCore { private native void setDefaultProxyConfig(long nativePtr,long proxyCfgNativePtr); private native int addProxyConfig(long nativePtr,long proxyCfgNativePtr); private native void addAuthInfo(long nativePtr,long authInfoNativePtr); + private native void invite(long nativePtr,String uri); LinphoneCoreImpl(LinphoneCoreListener listener, File userConfig,File factoryConfig,Object userdata) throws IOException { mListener=listener; nativePtr = newLinphoneCore(listener,userConfig.getCanonicalPath(),factoryConfig.getCanonicalPath(),userdata); @@ -48,8 +49,8 @@ class LinphoneCoreImpl implements LinphoneCore { throw new RuntimeException("not implemenetd yet"); } - public void invite(String url) { - throw new RuntimeException("not implemenetd yet"); + public void invite(String uri) { + invite(nativePtr,uri); } public void iterate() { diff --git a/src/org/linphone/core/LinphoneCoreListener.java b/src/org/linphone/core/LinphoneCoreListener.java index e8a0279f3..f48f8a9eb 100644 --- a/src/org/linphone/core/LinphoneCoreListener.java +++ b/src/org/linphone/core/LinphoneCoreListener.java @@ -36,14 +36,16 @@ public interface LinphoneCoreListener { public void authInfoRequested(LinphoneCore lc,String realm,String username); /**< Callback that notifies various events with human readable text. * @return */ - public void displayStatus(LinphoneCore lc,String message);; + public void displayStatus(LinphoneCore lc,String message); /**< Callback to display a message to the user * @return */ public void displayMessage(LinphoneCore lc,String message); /** Callback to display a warning to the user * @return */ public void displayWarning(LinphoneCore lc,String message); - /**< State notification callback - * @return */ + /** State notification callback + * @param state LinphoneCore.GeneralState + * @return + * */ public void generalState(LinphoneCore lc,LinphoneCore.GeneralState state); }