Android学习之腾讯互动直播开发经验小结

时间:2022-07-08 16:25:14

最近外派到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

功能代码肯定是不能拿出来的,这些经验还是可以分享的,这样以后集成会少走一点坑!