1. 程式人生 > >Android學習之騰訊互動直播開發經驗小結

Android學習之騰訊互動直播開發經驗小結

最近外派到XXX公司做一個帶直播功能的pad專案,整合的是騰訊的互動直播,今天寫了一下經驗小結,方便以後使用。

互動直播整合流程:

1:需要到騰訊雲直播平臺下載SDK,注意點,現在騰訊SDK的下載需要經過實名制認證的賬戶才具有下載資格許可權,只有通過騰訊資格認證稽核才行,當然下載之前最好將互動直播的開發指南好好閱讀幾遍,會增強我們對直播的瞭解能力。

2:下載完SDK之後,我們就開始了對SDK的整合配置,這個很簡單,主要包括對jar包和so的匯入,jar放置於Libs資料夾下,so包放置於JniLibs資料夾下,怎麼add 到gradle不做過多說明。

3:需要相容IM SDK,請保證開發環境在Android 4.0以上,因此minSdkVersion應該設定在14,事實上,現在開發中更低版本的手機已經不做考慮。

4:許可權設定

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH"
/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.BROADCAST_STICKY" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.READ_LOGS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

5:程式碼混淆

-keep class com.tencent.**{*;}
-dontwarn com.tencent.**

-keep class tencent.**{*;}
-dontwarn tencent.**

-keep class qalsdk.**{*;}
-dontwarn qalsdk.**

6:賬號登陸整合講解,騰訊為開發者提供了兩種賬號登陸,這個需要在註冊應用的時候進行配置。

獨立模式:使用者帳號資訊由開發者儲存,使用者身份驗證(比如註冊與驗密)也由開發者負責;

託管模式:由騰訊為開發者提供帳號的密碼註冊、儲存和密碼驗證,以及第三方openid和token的託管驗證服務。

獨立模式簡而言之就是我們擁有自己的賬戶體系以及管理後臺,但我們在登陸時,後臺需要跟騰訊互動,返回usersig,留作我們登陸IMSDK之用。

託管模式就是我們不需要擁有自己自己賬戶體系,騰旭會提供一些列的賬戶服務。包括驗證TLS服務。

直播注意點:

1:華為pad執行隨心播1.8版本,直播會崩潰,後來簡化直播的佈局層級,防止巢狀過多,以及在JniLibs裡面增加了armeabi_v7a的so包即可。

2:登入的時候從伺服器獲取sig,以及使用者id,呼叫mLoginHeloper.imLogin(“test_s_” + id, userSig)方法登入IMSDK

3:通過介面獲取到房間號(直播用),群組ID(即時通訊用),在CurLiveInfo實體類裡賦值,在LiveDetailActivity裡面呼叫。

4:群組ID和房間號的呼叫,在LiveDetailActivity裡面呼叫mEnterRoomHelper.startEnterRoom()方法,裡面呼叫joinLive(CurLiveInfo.getRoomNum())
—>呼叫 joinIMChatRoom(CurLiveInfo.getGroupId())方法—>applyJoinGroup()成功後—> joinAVRoom(CurLiveInfo.getRoomNum())加入房間—>EnterAVRoom(avRoomNum);加入房間,群組流程結束。

5:即時通訊,在LiveDetailActivity的onSendBtnClick呼叫 sendText(String msg) 傳送訊息,文字解析在handleTextMessage()方法裡
注意訊息要符合後臺訊息解析格式,否則傳送不成功

6:定製訊息通訊處理,在重寫的EnterRoomComplete()方法裡 mLiveHelper.initTIMListener(CurLiveInfo.getGroupId()),就不需要去實現TIMMessageListener介面,
所有的訊息處理都在LiveHelper的onNewMessages()做處理。呼叫parseIMMessage(List list)進行解析。裡面包含了TIMElemType.GroupSystem(系統訊息),
TIMElemType.Custom(定製訊息),TIMElemType.Text(文字訊息)等訊息的處理,當然訊息種類肯定還有很多,包括語音,圖片等。定製訊息都在TIMElemType.Custom中做處理。
定製訊息解析在handleCustomMsg(TIMElem elem, String identifier, String nickname)方法中做處理。具體操作動作需要根據解析做相應處理。

7:對視訊小視窗的位置修改,修改AVUIControl類中的 void layoutVideoView(boolean virtical)方法,mGlVideoView[0]是直播介面,可通過
mGlVideoView[0].layout(0, 0, width, height)修改大小,mGlVideoView[0].setBackgroundColor(Color.BLACK)修改預設背景。小視窗只需要通過修改dimens中的
small_area_margin_bottom,small_area_margin_top,small_area_height,small_area_width來修改寬高,大小,預設在介面的右側。

8:對於Android開直播的處理這裡不做介紹,參照具體實際對demo做相應修改即可。

9:直播心跳動畫,demo有整合,這裡做一下講解,動畫不做講解,點選心跳需要通過介面post給後臺,
然後後臺可以做相應點贊人數,狀態處理。

10:直播新增彈幕外掛,這裡採用烈焰彈幕外掛compile ‘com.github.ctiao:DanmakuFlameMaster:0.4.6’,整合與使用不做多說,很好整合。參考http://blog.csdn.net/benhuo931115/article/details/51056646

11:直播介面手勢修改亮度與音量,這裡是對直播控制元件中的view做滑動處理,左邊滑動是對亮度調節,右邊滑動是對音量調節,具體參考網上部落格而寫的,功能已實現,參考https://github.com/ZaneLove/GestureDetector

功能程式碼肯定是不能拿出來的,這些經驗還是可以分享的,這樣以後整合會少走一點坑!