1

我正在使用 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);
}

在此处输入图像描述

4

1 回答 1

3

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

因此,为了在您的第二个活动中获取相应的 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();
}
于 2014-07-31T08:23:02.883 回答