pjsip開發(fā)——Buddy

PJSUA2的功能是圍繞Buddy類為中心展開的。該類表示一個遠(yuǎn)端鏈接。

要使用Buddy類,需要根據(jù)需求實現(xiàn)其子類,如:

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);
    }

}

在子類中,應(yīng)用程序可以實現(xiàn)好友回調(diào),以獲得好友狀態(tài)更改的通知。

訂閱好友的狀態(tài)

要訂閱好友的狀態(tài),需添加好友對象并訂閱好友的狀態(tài)。下面的代碼片段實現(xiàn)這些示例:

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

可以在onBuddyState()回調(diào)中獲得好友的狀態(tài)改變。

響應(yīng)訂閱請求

默認(rèn)情況下,會自動接受對帳戶傳入的(存在)訂閱。您可能想要更改此行為,例如僅僅好友列表中的一個好友時自動接受訂閱,以及任何其他用戶提示是否希望接受請求的消息。

這可以通過重寫Account類的onIncomingSubscribe()方法來實現(xiàn)。

更改帳戶的在線狀態(tài)

要更改帳戶的狀態(tài),可使用Account.setOnlineStatus()函數(shù)設(shè)置帳戶的在線狀態(tài)。

當(dāng)更改存在狀態(tài)時,帳戶將根據(jù)自身配置將新狀態(tài)發(fā)布給所有在線用戶,使用PUBLISH請求或NOTIFY請求,或同時使用上述兩個請求。

即時通訊

可以使用Buddy.sendInstantMessage()發(fā)送IM。傳出即時消息的傳輸狀態(tài)在Account類的Account.onInstantMessageStatus()回調(diào)方法中給出。

除了發(fā)送即時消息,還可使用Buddy.sendTypingIndication()向遠(yuǎn)程伙伴發(fā)送打字提示。

接收IM和不在呼叫范圍內(nèi)的打字提示將在回調(diào)函數(shù)Account.onInstantMessage()和Account.onTypingIndication()中給出(報告)。

或者,可使用Call.sendInstantMessage()和Call.sendTypingIndication()在呼叫中發(fā)送IM和鍵入指示。

關(guān)于上述詳細(xì)類信息參考可以參照官方文檔pjsip-book

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 點擊查看原文 Web SDK 開發(fā)手冊 SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個完善的 IM 系統(tǒng)...
    layjoy閱讀 14,320評論 0 15
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,678評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,271評論 25 708
  • 此刻的我,只是這樣安靜的敲打著手機鍵盤。這些日子以來的辛苦,壓著我始終踹不過氣來。沉重的負(fù)擔(dān),心里的不愉快,...
    心若飛揚閱讀 210評論 0 0
  • 怎么不說說你自己? 你知道,我并不喜歡跟外人說起自己。 外人是什么意思? 外人就是除我之外的所有人。
    怪人王大先生閱讀 165評論 0 0

友情鏈接更多精彩內(nèi)容