美文网首页
pjsip开发——Buddy

pjsip开发——Buddy

作者: samychen | 来源:发表于2018-02-25 12:36 被阅读0次

    PJSUA2的功能是围绕Buddy类为中心展开的。该类表示一个远端链接。

    要使用Buddy类,需要根据需求实现其子类,如:

    class MyBuddy extends Buddy {
        public BuddyConfig cfg;
    
        MyBuddy(BuddyConfig config) {
            super();
            cfg = config;
        }
    
        String getStatusText() {
            BuddyInfo bi;
    
            try {
                bi = getInfo();
            } catch (Exception e) {
                return "?";
            }
    
            String status = "";
            if (bi.getSubState() == pjsip_evsub_state.PJSIP_EVSUB_STATE_ACTIVE) {
                if (bi.getPresStatus().getStatus() ==
                        pjsua_buddy_status.PJSUA_BUDDY_STATUS_ONLINE) {
                    status = bi.getPresStatus().getStatusText();
                    if (status == null || status.length() == 0) {
                        status = "Online";
                    }
                } else if (bi.getPresStatus().getStatus() ==
                        pjsua_buddy_status.PJSUA_BUDDY_STATUS_OFFLINE) {
                    status = "Offline";
                } else {
                    status = "Unknown";
                }
            }
            return status;
        }
    
        @Override
        public void onBuddyState() {
            MyApp.observer.notifyBuddyState(this);
        }
    
    }
    

    在子类中,应用程序可以实现好友回调,以获得好友状态更改的通知。

    订阅好友的状态

    要订阅好友的状态,需添加好友对象并订阅好友的状态。下面的代码片段实现这些示例:

    try {
                        bud.subscribePresence(true);
                    } catch (Exception e) {
                    }
    

    可以在onBuddyState()回调中获得好友的状态改变。

    响应订阅请求

    默认情况下,会自动接受对帐户传入的(存在)订阅。您可能想要更改此行为,例如仅仅好友列表中的一个好友时自动接受订阅,以及任何其他用户提示是否希望接受请求的消息。

    这可以通过重写Account类的onIncomingSubscribe()方法来实现。

    更改帐户的在线状态

    要更改帐户的状态,可使用Account.setOnlineStatus()函数设置帐户的在线状态。

    当更改存在状态时,帐户将根据自身配置将新状态发布给所有在线用户,使用PUBLISH请求或NOTIFY请求,或同时使用上述两个请求。

    即时通讯

    可以使用Buddy.sendInstantMessage()发送IM。传出即时消息的传输状态在Account类的Account.onInstantMessageStatus()回调方法中给出。

    除了发送即时消息,还可使用Buddy.sendTypingIndication()向远程伙伴发送打字提示。

    接收IM和不在呼叫范围内的打字提示将在回调函数Account.onInstantMessage()和Account.onTypingIndication()中给出(报告)。

    或者,可使用Call.sendInstantMessage()和Call.sendTypingIndication()在呼叫中发送IM和键入指示。

    关于上述详细类信息参考可以参照官方文档pjsip-book

    相关文章

      网友评论

          本文标题:pjsip开发——Buddy

          本文链接:https://www.haomeiwen.com/subject/lavcxftx.html