diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 983d336cc..c241a7282 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -14,5 +14,7 @@
+
+
\ No newline at end of file
diff --git a/res/raw/linphonerc b/res/raw/linphonerc
index ad8b197a6..bc6ef769f 100644
--- a/res/raw/linphonerc
+++ b/res/raw/linphonerc
@@ -14,13 +14,6 @@ use_ipv6=0
register_only_when_network_is_up=0
default_proxy=0
-[proxy_0]
-reg_proxy=sip:mty11.axtel.net
-reg_identity=sip:???@mty11.axtel.net
-reg_expires=3600
-reg_sendregister=1
-publish=0
-
[rtp]
audio_rtp_port=7076
video_rtp_port=9078
diff --git a/src/org/linphone/Linphone.java b/src/org/linphone/Linphone.java
index b20e3a591..ee0bb6a49 100644
--- a/src/org/linphone/Linphone.java
+++ b/src/org/linphone/Linphone.java
@@ -2,31 +2,121 @@ package org.linphone;
import java.io.File;
+import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.net.URI;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import org.linphone.core.LinphoneAuthInfo;
+import org.linphone.core.LinphoneCore;
+import org.linphone.core.LinphoneCoreFactory;
+import org.linphone.core.LinphoneCoreListener;
+import org.linphone.core.LinphoneProxyConfig;
+import org.linphone.core.LinphoneCore.GeneralState;
+
import android.app.Activity;
import android.os.Bundle;
+import android.util.Log;
-public class Linphone extends Activity {
+public class Linphone extends Activity implements LinphoneCoreListener {
+ static final String TAG="Linphone";
/** Called when the activity is first created. */
- @Override
+ 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 LinphoneCore mLinphoneCore;
+ private LinphoneProxyConfig mProxyConfig;
+ private LinphoneAuthInfo mAuthInfo;
+ Timer mTimer = new Timer("Linphone scheduler");
+
+ @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
+ try {
+ copyAssetsFromPackage();
+
+ mLinphoneCore = LinphoneCoreFactory.instance().createLinphoneCore( this
+ , new File(LINPHONE_RC)
+ , new File(LINPHONE_FACTORY_RC)
+ , null);
+ mAuthInfo = LinphoneCoreFactory.instance().createAuthInfo("jehan", "223299");
+ mLinphoneCore.addAuthInfo(mAuthInfo);
+
+ mProxyConfig = mLinphoneCore.createProxyConfig("sip:jehan@sip.antisip.com", "sip:sip.antisip.com",null);
+ mProxyConfig.enableRegister(true);
+ mLinphoneCore.addtProxyConfig(mProxyConfig);
+ mLinphoneCore.setDefaultProxyConfig(mProxyConfig);
+
+ TimerTask lTask = new TimerTask() {
+
+ @Override
+ public void run() {
+ mLinphoneCore.iterate();
+
+ }
+
+ };
+ mTimer.scheduleAtFixedRate(lTask, 0, 100);
+ } catch (Exception e) {
+ Log.e(TAG,"Cannot start linphone",e);
+ }
+
}
public void copyAssetsFromPackage() throws IOException {
- File lFileToPlay = new File("/data/data/"+this.getPackageName()+"/files/oldphone_mono.wav");
- if (!lFileToPlay.exists()) {
- FileOutputStream lOutputStream = openFileOutput ("oldphone_mono.wav", 0);
- InputStream lInputStream = getResources().openRawResource(R.raw.oldphone_mono);
+ copyIfNotExist(R.raw.oldphone_mono,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);
+ InputStream lInputStream = getResources().openRawResource(ressourceId);
int readByte;
- while (( readByte = lInputStream.read())!=-1) {
- lOutputStream.write(readByte);
+ byte[] buff = new byte[8048];
+ while (( readByte = lInputStream.read(buff))!=-1) {
+ lOutputStream.write(buff,0, readByte);
}
lOutputStream.flush();
lOutputStream.close();
lInputStream.close();
- }
+ }
+
}
+ public void authInfoRequested(LinphoneCore lc, String realm, String username) {
+ // TODO Auto-generated method stub
+
+ }
+ public void byeReceived(LinphoneCore lc, String from) {
+ // TODO Auto-generated method stub
+
+ }
+ public void displayMessage(LinphoneCore lc, String message) {
+ // TODO Auto-generated method stub
+
+ }
+ public void displayStatus(LinphoneCore lc, String message) {
+ // TODO Auto-generated method stub
+
+ }
+ 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 inviteReceived(LinphoneCore lc, String from) {
+ // TODO Auto-generated method stub
+
+ }
+ public void show(LinphoneCore lc) {
+ // TODO Auto-generated method stub
+
+ }
}
\ No newline at end of file
diff --git a/src/org/linphone/core/LinphoneAuthInfo.java b/src/org/linphone/core/LinphoneAuthInfo.java
index 0b8865f42..2a5dbaf2d 100644
--- a/src/org/linphone/core/LinphoneAuthInfo.java
+++ b/src/org/linphone/core/LinphoneAuthInfo.java
@@ -21,3 +21,5 @@ package org.linphone.core;
public interface LinphoneAuthInfo {
}
+
+
diff --git a/src/org/linphone/core/LinphoneAuthInfoImpl.java b/src/org/linphone/core/LinphoneAuthInfoImpl.java
new file mode 100644
index 000000000..15a064ec9
--- /dev/null
+++ b/src/org/linphone/core/LinphoneAuthInfoImpl.java
@@ -0,0 +1,13 @@
+package org.linphone.core;
+
+class LinphoneAuthInfoImpl implements LinphoneAuthInfo {
+ protected final long nativePtr;
+ private native long newLinphoneAuthInfo(String username, String userid, String passwd, String ha1,String realm);
+ private native void delete(long ptr);
+ protected LinphoneAuthInfoImpl(String username,String password) {
+ nativePtr = newLinphoneAuthInfo(username,null,password,null,null);
+ }
+ protected void finalize() throws Throwable {
+ delete(nativePtr);
+ }
+}
diff --git a/src/org/linphone/core/LinphoneCore.java b/src/org/linphone/core/LinphoneCore.java
index f10cf0df3..8dccff830 100644
--- a/src/org/linphone/core/LinphoneCore.java
+++ b/src/org/linphone/core/LinphoneCore.java
@@ -18,8 +18,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
package org.linphone.core;
-import java.io.File;
-import java.net.URI;
+
public interface LinphoneCore {
/*
@@ -51,8 +50,16 @@ public interface LinphoneCore {
}
- public LinphoneProxyConfig createProxyConfig(URI identity,URI proxy,URI route);
+ /**
+ * @param identity sip uri sip:jehan@linphone.org
+ * @param proxy sip uri (sip:linphone.org)
+ * @param route optionnal sip usi (sip:linphone.org)
+ * @return
+ */
+ public LinphoneProxyConfig createProxyConfig(String identity,String proxy,String route) throws LinphoneCoreException;
+ public void addtProxyConfig(LinphoneProxyConfig proxyCfg) throws LinphoneCoreException;
+
public void setDefaultProxyConfig(LinphoneProxyConfig proxyCfg);
/**
diff --git a/src/org/linphone/core/LinphoneCoreException.java b/src/org/linphone/core/LinphoneCoreException.java
index 069e114a0..abec2943e 100644
--- a/src/org/linphone/core/LinphoneCoreException.java
+++ b/src/org/linphone/core/LinphoneCoreException.java
@@ -18,6 +18,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
package org.linphone.core;
+@SuppressWarnings("serial")
public class LinphoneCoreException extends Exception {
public LinphoneCoreException() {
diff --git a/src/org/linphone/core/LinphoneCoreFactory.java b/src/org/linphone/core/LinphoneCoreFactory.java
index 6a8c69493..265ba65dd 100644
--- a/src/org/linphone/core/LinphoneCoreFactory.java
+++ b/src/org/linphone/core/LinphoneCoreFactory.java
@@ -19,10 +19,11 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
package org.linphone.core;
import java.io.File;
+import java.io.IOException;
public class LinphoneCoreFactory {
static {
- System.loadLibrary("liblinphone");
+ System.loadLibrary("linphone");
}
static LinphoneCoreFactory theLinphoneCoreFactory = new LinphoneCoreFactory();
@@ -31,11 +32,11 @@ public class LinphoneCoreFactory {
return theLinphoneCoreFactory;
}
public LinphoneAuthInfo createAuthInfo(String username,String password) {
- throw new RuntimeException("Not Implemented yet");
+ return new LinphoneAuthInfoImpl(username,password) ;
}
- public LinphoneCore createLinphoneCore(LinphoneCoreListener listener, File userConfig,File factoryConfig,Object userdata) {
- throw new RuntimeException("Not Implemented yet");
+ public LinphoneCore createLinphoneCore(LinphoneCoreListener listener, File userConfig,File factoryConfig,Object userdata) throws IOException {
+ return new LinphoneCoreImpl(listener,userConfig,factoryConfig,userdata);
}
diff --git a/src/org/linphone/core/LinphoneCoreImpl.java b/src/org/linphone/core/LinphoneCoreImpl.java
index 958a66b9a..f922cef08 100644
--- a/src/org/linphone/core/LinphoneCoreImpl.java
+++ b/src/org/linphone/core/LinphoneCoreImpl.java
@@ -20,35 +20,36 @@ package org.linphone.core;
import java.io.File;
import java.io.IOException;
-import java.net.URI;
-public class LinphoneCoreImpl implements LinphoneCore {
+
+class LinphoneCoreImpl implements LinphoneCore {
private final LinphoneCoreListener mListener;
private final long nativePtr;
private native long newLinphoneCore(LinphoneCoreListener listener,String userConfig,String factoryConfig,Object userdata);
private native void iterate(long nativePtr);
+ private native void setDefaultProxyConfig(long nativePtr,long proxyCfgNativePtr);
+ private native int addProxyConfig(long nativePtr,long proxyCfgNativePtr);
+ private native void addAuthInfo(long nativePtr,long authInfoNativePtr);
LinphoneCoreImpl(LinphoneCoreListener listener, File userConfig,File factoryConfig,Object userdata) throws IOException {
mListener=listener;
nativePtr = newLinphoneCore(listener,userConfig.getCanonicalPath(),factoryConfig.getCanonicalPath(),userdata);
}
public void addAuthInfo(LinphoneAuthInfo info) {
- // TODO Auto-generated method stub
-
+ addAuthInfo(nativePtr,((LinphoneAuthInfoImpl)info).nativePtr);
}
- public LinphoneProxyConfig createProxyConfig(URI identity, URI proxy,URI route) {
+ public LinphoneProxyConfig createProxyConfig(String identity, String proxy,String route) throws LinphoneCoreException {
return new LinphoneProxyConfigImpl(identity, proxy, route);
}
public LinphoneProxyConfig getDefaultProxyConfig() {
- // TODO Auto-generated method stub
- return null;
+ throw new RuntimeException("not implemenetd yet");
}
public void invite(String url) {
- // TODO Auto-generated method stub
+ throw new RuntimeException("not implemenetd yet");
}
public void iterate() {
@@ -56,8 +57,13 @@ public class LinphoneCoreImpl implements LinphoneCore {
}
public void setDefaultProxyConfig(LinphoneProxyConfig proxyCfg) {
- // TODO Auto-generated method stub
-
+ setDefaultProxyConfig(nativePtr,((LinphoneProxyConfigImpl)proxyCfg).nativePtr);
}
-
+ public void addtProxyConfig(LinphoneProxyConfig proxyCfg) throws LinphoneCoreException{
+ if (addProxyConfig(nativePtr,((LinphoneProxyConfigImpl)proxyCfg).nativePtr) !=0) {
+ throw new LinphoneCoreException("bad proxy config");
+ }
+ }
+
+
}
diff --git a/src/org/linphone/core/LinphoneProxyConfig.java b/src/org/linphone/core/LinphoneProxyConfig.java
index fb8b68eb3..b4b5fd8b8 100644
--- a/src/org/linphone/core/LinphoneProxyConfig.java
+++ b/src/org/linphone/core/LinphoneProxyConfig.java
@@ -22,4 +22,5 @@ public interface LinphoneProxyConfig {
void enableRegister(boolean value);
+
}
diff --git a/src/org/linphone/core/LinphoneProxyConfigImpl.java b/src/org/linphone/core/LinphoneProxyConfigImpl.java
index 84e470045..0fa1a85b7 100644
--- a/src/org/linphone/core/LinphoneProxyConfigImpl.java
+++ b/src/org/linphone/core/LinphoneProxyConfigImpl.java
@@ -18,37 +18,38 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
package org.linphone.core;
-import java.net.URI;
-public class LinphoneProxyConfigImpl implements LinphoneProxyConfig {
- final long nativePtr;
- protected LinphoneProxyConfigImpl(URI identity,URI proxy,URI route) {
- nativePtr = createAndAdd();
- edit(nativePtr);
- setIdentity(nativePtr,identity.getScheme()+":"+identity.getHost());
- done(nativePtr);
+class LinphoneProxyConfigImpl implements LinphoneProxyConfig {
+
+ protected final long nativePtr;
+ protected LinphoneProxyConfigImpl(String identity,String proxy,String route) throws LinphoneCoreException {
+ nativePtr = newLinphoneProxyConfig();
+ setIdentity(nativePtr,identity);
+ if (setProxy(nativePtr,proxy)!=0) {
+ throw new LinphoneCoreException("Bad proxy address ["+proxy+"]");
+ }
}
protected void finalize() throws Throwable {
- deleteNative(nativePtr);
+ delete(nativePtr);
}
- private native long createAndAdd();
- private native long deleteNative(long ptr);
+ private native long newLinphoneProxyConfig();
+ private native void delete(long ptr);
- private native void edit(long ptr);
- private native void done(long ptr);
+ //private native void edit(long ptr);
+ //private native void done(long ptr);
private native void setIdentity(long ptr,String identity);
- /*private native void setProxy(long ptr,String identity);*/
+ private native int setProxy(long ptr,String proxy);
private native void enableRegister(long ptr,boolean value);
public void enableRegister(boolean value) {
- edit(nativePtr);
+ //edit(nativePtr);
enableRegister(nativePtr,value);
- done(nativePtr);
+ //done(nativePtr);
}
}