我在我的应用中使用Sinch SDK进行视频通话。该应用程序有一个MainActivity.java,可以打开几个片段。应用程序的结构/流程如下:
Login Fragment将唯一的userName发送给MainActivity。 MainActivity执行以下代码以登录Sinch Video SDK
getSinchServiceInterface().setStartListener(this);
if (!getSinchServiceInterface().isStarted()) {
getSinchServiceInterface().startClient(userName);
}
MainActivity.java打开ProfileFragment.java。在此片段中,用户输入被调用者设备的名称。
ProfileFragment.java将 callee userName发送到MainActivity。 MainActivity执行以下代码来调用被调用者设备
getSinchServiceInterface().callUserVideo(calleeUserName);
执行此操作后,当被叫设备接听电话时,来电设备不会收到任何回叫。因此,作为一种解决方法,我会监控SinchService 中的 onLogMessage(),以查找 onSessionEstablished 标记。
当在SinchService.java中的onLogMessage中收到提到的标记时,我执行以下代码。
Call call = getSinchServiceInterface().getCall(mCalleeID);
if (call != null) {
if (!mAddedListener) {
call.addCallListener(new SinchCallListener());
mAddedListener = true;
}
if (call.getState() == CallState.ESTABLISHED) {
openVideoCallFragment(mCallId);
}
} else {
Log.e(TAG, "Started with invalid callId, aborting.");
}
但是,执行此方法后,它只会提供以下日志消息:
Started with invalid callId, aborting.
我不知道如何解决这个问题,或者我怎么知道被叫方设备何时接听电话。
我的MainActivity.java扩展了Sinch SDK示例应用程序中提供的BaseActivity.java。