我正在使用 Weemo sdk,到目前为止它看起来非常有前途。然而,我在基于它编写应用程序时遇到了一个问题。我已经向事件总线注册了一个 CallStatusChanged 侦听器,并且当调用者呼叫时,我在接收器上接收事件没有问题。然而,WeemoCall 对象构造得不好,getCallId() 方法返回 0(请参见以下代码)。据我了解,event.getCaller 将返回呼叫者的 id,以便我们稍后可以使用它来建立呼叫。谁能帮我解决这个问题?我附上了调试期间拍摄的调用对象的屏幕截图。

@WeemoEventListener
public void onCallStatusChanged(final CallStatusChangedEvent event){
    String msg = "";
    Log.i(TAG,"onCallStatusChanged" + event.toString());
    switch (event.getCallStatus()){
        case CREATED:
            msg = "call created";
            break;
    ...
        case RINGING:
            msg = "call is ringing";
            Intent i = new Intent(this, VideoCallingActivity.class);
            i.putExtra(INCOMING_CALL_ID_EXTRA, event.getCall().getCallId()); //getCallId returns 0 ?!
            startActivity(i);
            break;
    ...
    }
    Log.i(TAG,msg);
}

enter image description here

有帮助吗?

解决方案

WeemoCall.getCallId() 方法返回一个在内部用作索引的 int。
这样,第一次调用就会有它的 getCallId() 等于 0, ,第二个将等于 1,依此类推。

因此,为了在第二个 Activity 上获取相应的 WeemoCall 对象,您只需执行以下操作:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    int callId = savedInstanceState.getInt(INCOMING_CALL_ID_EXTRA);
    WeemoCall call = Weemo.instance().getCall(callId);
}

您还可以使用此方法返回当前的 WeemoCall:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    WeemoCall call = Weemo.instance().getCurrentCall();
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top