* #24121 First integration of IM working
diff --git a/src/com/savoirfairelinux/sflphone/service/CallManagerCallBack.java b/src/com/savoirfairelinux/sflphone/service/CallManagerCallBack.java
index 921997b..c0390e3 100644
--- a/src/com/savoirfairelinux/sflphone/service/CallManagerCallBack.java
+++ b/src/com/savoirfairelinux/sflphone/service/CallManagerCallBack.java
@@ -15,6 +15,7 @@
static public final String NEW_CALL_CREATED = "new-call-created";
static public final String CALL_STATE_CHANGED = "call-state-changed";
static public final String INCOMING_CALL = "incoming-call";
+ static public final String INCOMING_TEXT = "incoming-text";
public CallManagerCallBack(Context context) {
mContext = context;
@@ -49,6 +50,12 @@
}
@Override
+ public void on_incoming_message(String ID, String from, String msg){
+ Log.w(TAG,"on_incoming_message:"+msg);
+ sendIncomingTextMessage(ID, from, msg);
+ }
+
+ @Override
public void on_conference_removed(String confID){
Log.w(TAG,"CONFERENCE REMOVED:"+confID);
}
@@ -89,4 +96,17 @@
intent.putExtra("com.savoirfairelinux.sflphone.service.newcall", bundle);
LocalBroadcastManager.getInstance(mContext).sendBroadcast(intent);
}
+
+ private void sendIncomingTextMessage(String id, String from, String msg) {
+ Bundle bundle = new Bundle();
+
+ bundle.putString("CallID", id);
+ bundle.putString("From", from);
+ bundle.putString("Msg", msg);
+ Intent intent = new Intent(INCOMING_TEXT);
+ intent.putExtra(SIGNAL_NAME, INCOMING_TEXT);
+ intent.putExtra("com.savoirfairelinux.sflphone.service.newtext", bundle);
+ LocalBroadcastManager.getInstance(mContext).sendBroadcast(intent);
+
+ }
}
diff --git a/src/com/savoirfairelinux/sflphone/service/ConfigurationManagerJNI.java b/src/com/savoirfairelinux/sflphone/service/ConfigurationManagerJNI.java
index 765a8bf..310e5d8 100644
--- a/src/com/savoirfairelinux/sflphone/service/ConfigurationManagerJNI.java
+++ b/src/com/savoirfairelinux/sflphone/service/ConfigurationManagerJNI.java
@@ -199,6 +199,10 @@
SFLPhoneserviceJNI.ConfigurationManagerJNI_setIsAlwaysRecording(swigCPtr, this, rec);
}
+ public void setRecordingCall(String id) {
+ SFLPhoneserviceJNI.ConfigurationManagerJNI_setRecordingCall(swigCPtr, this, id);
+ }
+
public SWIGTYPE_p_int32_t getHistoryLimit() {
return new SWIGTYPE_p_int32_t(SFLPhoneserviceJNI.ConfigurationManagerJNI_getHistoryLimit(swigCPtr, this), true);
}
diff --git a/src/com/savoirfairelinux/sflphone/service/ISipClient.aidl b/src/com/savoirfairelinux/sflphone/service/ISipClient.aidl
index b845f66..068b2c1 100644
--- a/src/com/savoirfairelinux/sflphone/service/ISipClient.aidl
+++ b/src/com/savoirfairelinux/sflphone/service/ISipClient.aidl
@@ -3,4 +3,5 @@
interface ISipClient {
void incomingCall(in Intent call);
void callStateChanged(in Intent callState);
+ void incomingText(in Intent msg);
}
\ No newline at end of file
diff --git a/src/com/savoirfairelinux/sflphone/service/ISipService.aidl b/src/com/savoirfairelinux/sflphone/service/ISipService.aidl
index eb76ffb..2450f97 100644
--- a/src/com/savoirfairelinux/sflphone/service/ISipService.aidl
+++ b/src/com/savoirfairelinux/sflphone/service/ISipService.aidl
@@ -17,8 +17,18 @@
void setAccountDetails(in String accountId, in Map accountDetails);
void setAudioPlugin(in String callID);
String getCurrentAudioOutputPlugin();
+
+ /* History */
List getHistory();
+ /* Recording */
+ void setRecordPath(in String path);
+ String getRecordPath();
+ void setRecordingCall(in String id);
+
+ /* IM */
+ void sendTextMessage(in String callID, in String message, in String from);
+
void registerClient(in ISipClient callback);
void transfer(in String callID, in String to);
diff --git a/src/com/savoirfairelinux/sflphone/service/SipService.java b/src/com/savoirfairelinux/sflphone/service/SipService.java
index ef04a4c..03b5233 100644
--- a/src/com/savoirfairelinux/sflphone/service/SipService.java
+++ b/src/com/savoirfairelinux/sflphone/service/SipService.java
@@ -66,7 +66,7 @@
private ManagerImpl managerImpl;
private boolean isPjSipStackStarted = false;
ISipClient client;
-
+
int clients = 0;
private BroadcastReceiver IncomingReceiver = new BroadcastReceiver() {
@@ -79,13 +79,14 @@
try {
if (intent.getAction().contentEquals(ConfigurationManagerCallback.ACCOUNT_STATE_CHANGED)) {
Log.i(TAG, "Received" + intent.getAction());
- }else if (intent.getAction().contentEquals(ConfigurationManagerCallback.ACCOUNTS_LOADED)) {
+ } else if (intent.getAction().contentEquals(ConfigurationManagerCallback.ACCOUNTS_LOADED)) {
Log.i(TAG, "Received" + intent.getAction());
- }else if (intent.getAction().contentEquals(ConfigurationManagerCallback.ACCOUNTS_CHANGED)) {
+ } else if (intent.getAction().contentEquals(ConfigurationManagerCallback.ACCOUNTS_CHANGED)) {
Log.i(TAG, "Received" + intent.getAction());
- }
-
- if (intent.getAction().contentEquals(CallManagerCallBack.INCOMING_CALL)) {
+ } else if(intent.getAction().contentEquals(CallManagerCallBack.INCOMING_TEXT)) {
+ Log.i(TAG, "Received" + intent.getAction());
+ client.incomingText(intent);
+ } else if (intent.getAction().contentEquals(CallManagerCallBack.INCOMING_CALL)) {
Log.i(TAG, "Received" + intent.getAction());
client.incomingCall(intent);
} else if (intent.getAction().contentEquals(CallManagerCallBack.CALL_STATE_CHANGED)) {
@@ -127,7 +128,8 @@
callFilter.addAction(ConfigurationManagerCallback.ACCOUNT_STATE_CHANGED);
callFilter.addAction(ConfigurationManagerCallback.ACCOUNTS_CHANGED);
callFilter.addAction(ConfigurationManagerCallback.ACCOUNTS_LOADED);
-
+ callFilter.addAction(CallManagerCallBack.INCOMING_TEXT);
+
LocalBroadcastManager.getInstance(this).registerReceiver(IncomingReceiver, callFilter);
getExecutor().execute(new StartRunnable());
}
@@ -438,7 +440,7 @@
CurrentAudioPlugin runInstance = new CurrentAudioPlugin();
getExecutor().execute(runInstance);
while (!runInstance.isDone()) {
- Log.e(TAG,"Waiting for Nofing");
+ Log.e(TAG, "Waiting for Nofing");
}
return (String) runInstance.getVal();
}
@@ -456,7 +458,7 @@
AccountList runInstance = new AccountList();
getExecutor().execute(runInstance);
while (!runInstance.isDone()) {
- Log.e(TAG,"Waiting for Nofing");
+ Log.e(TAG, "Waiting for Nofing");
}
StringVect swigvect = (StringVect) runInstance.getVal();
@@ -488,7 +490,7 @@
getExecutor().execute(runInstance);
clients++;
while (!runInstance.isDone()) {
- Log.e(TAG,"Waiting for Details "+clients);
+ Log.w(TAG, "Waiting for Details " + clients);
}
clients--;
StringMap swigmap = (StringMap) runInstance.getVal();
@@ -528,14 +530,13 @@
return configurationManagerJNI.addAccount(map);
}
}
-
final StringMap swigmap = AccountDetailsHandler.convertFromNativeToSwig((HashMap<String, String>) map);
AddAccount runInstance = new AddAccount(swigmap);
getExecutor().execute(runInstance);
while (!runInstance.isDone()) {
- Log.e(TAG,"Waiting for Nofing");
+ Log.e(TAG, "Waiting for Nofing");
}
String accountId = (String) runInstance.getVal();
@@ -573,7 +574,7 @@
History runInstance = new History();
getExecutor().execute(runInstance);
while (!runInstance.isDone()) {
- Log.e(TAG,"Waiting for Nofing");
+ Log.w(TAG, "Waiting for getHistory");
}
VectMap swigmap = (VectMap) runInstance.getVal();
@@ -759,7 +760,7 @@
ConfList runInstance = new ConfList();
getExecutor().execute(runInstance);
while (!runInstance.isDone()) {
- Log.e(TAG,"Waiting for Nofing");
+ Log.w(TAG, "Waiting for getConferenceList");
}
StringVect swigvect = (StringVect) runInstance.getVal();
@@ -789,5 +790,61 @@
return null;
}
+ @Override
+ public String getRecordPath() throws RemoteException {
+ class RecordPath extends SipRunnableWithReturn {
+
+ @Override
+ protected String doRun() throws SameThreadException {
+ Log.i(TAG, "SipService.getRecordPath() thread running...");
+ return configurationManagerJNI.getRecordPath();
+ }
+ }
+
+ RecordPath runInstance = new RecordPath();
+ getExecutor().execute(runInstance);
+ while (!runInstance.isDone()) {
+ Log.w(TAG, "Waiting for getRecordPath");
+ }
+ String path = (String) runInstance.getVal();
+
+ return path;
+ }
+
+ @Override
+ public void setRecordingCall(final String id) throws RemoteException {
+ getExecutor().execute(new SipRunnable() {
+ @Override
+ protected void doRun() throws SameThreadException, RemoteException {
+ Log.i(TAG, "SipService.setRecordingCall() thread running...");
+ callManagerJNI.setRecordingCall(id);
+ }
+ });
+
+ }
+
+ @Override
+ public void setRecordPath(final String path) throws RemoteException {
+ getExecutor().execute(new SipRunnable() {
+ @Override
+ protected void doRun() throws SameThreadException, RemoteException {
+ Log.i(TAG, "SipService.setRecordingCall() thread running...");
+ configurationManagerJNI.setRecordPath(path);
+ }
+ });
+ }
+
+ @Override
+ public void sendTextMessage(final String callID, final String message, final String from) throws RemoteException {
+ getExecutor().execute(new SipRunnable() {
+ @Override
+ protected void doRun() throws SameThreadException, RemoteException {
+ Log.i(TAG, "SipService.sendTextMessage() thread running...");
+ callManagerJNI.sendTextMessage(callID, message, from);
+ }
+ });
+
+ }
+
};
}