pjsip开发——Buddy

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 14,777评论 0 15
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,241评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,844评论 25 709
  • 此刻的我,只是这样安静的敲打着手机键盘。这些日子以来的辛苦,压着我始终踹不过气来。沉重的负担,心里的不愉快,...
    心若飞扬阅读 1,481评论 0 0
  • 怎么不说说你自己? 你知道,我并不喜欢跟外人说起自己。 外人是什么意思? 外人就是除我之外的所有人。
    怪人王大先生阅读 1,283评论 0 0

友情链接更多精彩内容