91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

【音視頻】Android CallKit 開發指南

發布時間:2020-05-28 05:37:19 來源:網絡 閱讀:1655 作者:晨會看看 欄目:移動開發

簡介

CallKit 是融云音視頻通話功能的 UI 界面 SDK。包含了單人、多人音視頻通話的界面的各種場景和功能。您可以快速的集成 CallKit 來實現豐富的音視頻通話界面,并進行自己的 UI 定制開發。同時我們開源了 CallKit,您可以根據您的需要去使用。

GitHub 項目:CallKit 開源代碼

開通方式

音視頻服務開通,請參考音視頻開通方式說明。

使用說明

由于底層引擎技術不同,2.6.0 之后的音視頻 SDK 與 2.6.0 之前的 SDK 中的實時音視頻不能互通。

音視頻 SDK 為商用收費功能,之前的 SDK 中的實時音視頻為免費測試功能,如果您還想使用之前的實時音視頻,可以使用 2.5.2 版本,2.6.0 之后的音視頻服務使用說明如下:

集成說明

1、 首先請參考官網文檔集成 CallKit SDK 。

2、 src/main/java/io/rong/imkit 下面是 Call 界面的源碼,可以自行修改以滿足自己的需求。

3、 打開 src/main/AndroidManifest.xml,下面是 Call 相關的代碼。

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />

Call 用到的權限。

<activity
    android:name="io.rong.imkit.MultiVideoCallActivity"
    android:launchMode="singleTop"
    android:screenOrientation="portrait"
    android:windowSoftInputMode="stateHidden|adjustResize">
    <intent-filter>
        <action android:name="io.rong.intent.action.voip.MULTIVIDEO" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

<activity
    android:name="io.rong.imkit.SingleCallActivity"
    android:launchMode="singleTop"
    android:screenOrientation="portrait"
    android:windowSoftInputMode="stateHidden|adjustResize">
    <intent-filter>
        <action android:name="io.rong.intent.action.voip.SINGLEVIDEO" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
    <intent-filter>
        <action android:name="io.rong.intent.action.voip.SINGLEAUDIO" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>
<activity
    android:name="io.rong.imkit.MultiAudioCallActivity"
    android:launchMode="singleTop"
    android:screenOrientation="portrait"
    android:windowSoftInputMode="stateHidden|adjustResize">
    <intent-filter>
        <action android:name="io.rong.intent.action.voip.MULTIAUDIO" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

<activity android:name="io.rong.imkit.CallSelectMemberActivity" />

Call 功能中使用到的 activity 和 receiver 。

4、 用戶使用 Call 期間融云保持 connected 狀態。

5、 在群組中,啟動視頻通話或音頻通話時,需要設置群組成員信息,通過 getMemberList 方法返回群組成員的 userId 的集合。以確保選擇成員頁面能正確顯示所有群組成員。設置方法如下:

RongCallKit.setGroupMemberProvider(new RongCallKit.GroupMembersProvider() {    @Override

    public ArrayList<String> getMemberList(String groupId, final RongCallKit.OnGroupMembersResult result) {       
    
     //返回群組成員userId的集合

    }
});

發起通話

在私聊或討論組的會話界面,點擊輸入框右側的+號,就可以選擇“語音聊天”和“視頻聊天”了。

【音視頻】Android CallKit 開發指南

或者你可以根據自己的代碼邏輯,在需要的地方調用下面接口發起呼叫。

/**
 * 發起單人通話。
 *
 * @param context   上下文
 * @param targetId  會話 id
 * @param mediaType 會話媒體類型
 */RongCallKit.startSingleCall(Context context, String targetId, CallMediaType mediaType);
 
 /**
 * 發起多人通話
 *
 * @param context          上下文
 * @param conversationType 會話類型
 * @param targetId         會話 id
 * @param mediaType        會話媒體類型
 * @param userIds          參與者 id 列表
 */
 RongCallKit.startMultiCall(Context context, Conversation.ConversationType conversationType, String targetId, CallMediaType mediaType, ArrayList<String> userIds);

CallKit 默認音頻通話最大人數為 20 人,視頻通話最大人數為 9 人。

收到呼入的通話

如果 App 在前臺或者在后臺且并沒有被系統回收時,當收到呼叫,會自動彈出通話界面。如果 App 已經被回收,2.6.0 以上的版本需要集成遠程推送。這樣即使被回收了也能收到 Call 的推送消息,點擊推送消息啟動 App 會自動彈出通話界面。詳細請參考遠程推送集成文檔。

通話回調接口

IRongCallListener 是通話狀態的監聽類,CallKit 的 RongCallProxy.java 已經實現了該監聽,并且會回調到 BaseCallActivity 中的各個方法,您可以繼承 BaseCallActivity,根據需要復寫其中的對應方法,即可獲取對應的通話回調。

public class MyCallActivity extends BaseCallActivity {

    @Override
    public void onCallOutgoing(RongCallSession callProfile, SurfaceView localVideo) {       
     super.onCallOutgoing(callProfile, localVideo);        
     
         /**
         * 此處添加你的代碼邏輯。
         **/
    }   
    
     @Override
    public void onCallDisconnected(RongCallSession callProfile, RongCallCommon.CallDisconnectedReason reason) {        
     super.onCallDisconnected(callProfile, reason);      
     
       /**
         * 此處添加你的代碼邏輯。
         **/
    }    
    
    @Override
    public void onOutgoingCallRinging() {        
    super.onOutgoingCallRinging();       
    
         /**
         * 此處添加你的代碼邏輯。
         **/
    }    
    
    @Override
    public void onIncomingCallRinging() {       
     super.onIncomingCallRinging();     
     
        /**
         * 此處添加你的代碼邏輯。
         **/
    }    
    
    @Override
    public void onCallConnected(RongCallSession callProfile, SurfaceView localVideo) {        
    super.onCallConnected(callProfile, localVideo);       
    
        /**
         * 此處添加你的代碼邏輯。
         **/
    }   
    
     @Override
    public void onError(RongCallCommon.CallErrorCode errorCode) {        
    super.onError(errorCode);      
    
        /**
         * 此處添加你的代碼邏輯。
         **/
    }
}

如果上述方法不適合,您還可以通過修改 RongCallProxy.java 的代碼,實現自己應用的監聽。示例如下:

public class RongCallProxy implements IRongCallListener {

    private IRongCallListener mCallListener;  // 增加一個監聽。

    /*設置自己應用的監聽*/
    public void setAppCallListener(IRongCallListener listener) {        
    this.mAppCallListener = listener;
    }  
    
     /*修改對應的通話狀態回調的方法,使其回調到您設置的應用自身的監聽*/
    @Override
    public void onCallOutgoing(RongCallSession callSession, SurfaceView localVideo) {       
     if (mCallListener != null) {
          mCallListener.onCallOutgoing(callSession, localVideo);
        }        
        /*增加的代碼,回調應用設置的監聽*/
        if(mAppCallListener != null) {
          mAppCallListener.onCallOutgoing(callSession, localVideo);
        }
      }
      ... // 根據您的需要,同樣的方式修改其它通話狀態回調函數。
    }

修改完上述方法后,在您的應用里調用 setAppCallListener() 設置您自己的監聽。

通話界面的控制

由于通話界面的需求是多種多樣的,融云設計了一套通用的 UI 界面,開源供用戶使用。對于普通用戶來說,CallKit 應該滿足需求;而對于有特殊需要的用戶,可以自己來修改 CallKit 的源代碼來滿足需求。

需要提醒開發者的是,如果您在開發過程中,沒有集成融云 SDK 中的聊天會話界面 (ConversationFragment),您還需將 RongCallModule 中的變量 mViewLoaded 在該類的 onCreate 方法中設置為 True。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

弥勒县| 牡丹江市| 班戈县| 华安县| 鹤山市| 青铜峡市| 延边| 治多县| 湟源县| 沐川县| 甘孜县| 云阳县| 龙川县| 广灵县| 凤山市| 盐源县| 乌拉特后旗| 永寿县| 南丰县| 无极县| 北碚区| 台北县| 万安县| 三亚市| 东至县| 辽阳县| 恭城| 兴化市| 綦江县| 堆龙德庆县| 衢州市| 从江县| 安龙县| 会宁县| 泊头市| 凌海市| 农安县| 公主岭市| 射阳县| 吴江市| 淄博市|