android 如何在 PJSIP 中知道来电是否有视频

How to know incoming call have video or not in PJSIP in android

我在 android 开发 PJSIP,如何检查来电是音频还是视频??怎么鉴别?我使用了下面的代码,但它不起作用

 @Override
    public void onIncomingCall(OnIncomingCallParam prm) {
        System.out.println("======== Incoming call ======== ");
        MyCall call = new MyCall(this, prm.getCallId());
        try {
            CallSetting setting = call.getInfo().getSetting();
            Log.d(" Log APP ", "onIncomingCall: Audio " + setting.getAudioCount() + "  Video" + setting.getVideoCount());
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

但是音频和视频计数总是1但是我打电话的时候把视频放0了

 MyCall call = new MyCall(account);
        CallOpParam prm = new CallOpParam();
        CallSetting setting = new CallSetting();
        setting.setAudioCount(1);
        setting.setVideoCount(0);
        prm.setOpt(setting);
        try {
            call.makeCall(buddy_uri, prm);
        } catch (Exception e) {
            call.delete();
            e.printStackTrace();
            return;
        }

请告诉我如何识别来电是否有视频。?

您需要检查远程详细信息: sipCall.getInfo().getRemVideoCount()

其中 "sipCall" 是您的 "call (MyCall)" 对象。

经过大量研究,我发现 PJSIP 协议不提供来电视频计数。 CallSetting 是所有用户自己设置的。 Asterisk 服务器不会将呼叫设置发送到接收端。但是 Asterisk id 提供了有关媒体支持的信息

callInfo.getRemOfferer() 
// It returns a boolean value if true then server support video calling. 

所以你可以使用这样的逻辑

long videoCount = (callInfo.getRemOfferer()) ? callInfo.getRemVideoCount() : callInfo.getSetting().getVideoCount();
// if server support video call then check remote server video count value its retrun value in 0,1 format if server not support then chek call setting 

í如果视频计数为 1,则表示这是视频通话。

有关详细信息,请查看此 PJSIP Call Setting