Android接入说明文档
接入临境直播观看 SDK 首先遵循以下步骤:
- 配置 SDK 集成环境
- 按照以下接入文档集成代码
SDK 集成环境配置
开发与运行环境
- Android Studio
- 支持 Android 5.0 及以上系统版本; 支持 armeabi/armeabi-v7a/arm64-v8a 运行。
配置工程
配置maven仓库
//在项目主工程的 build.gradle 引入融云maven仓库maven { url "https://maven.rongcloud.cn/repository/maven-releases/" }
引入直播SDK版本:
//版本见上面implementation 'com.yxt.opensdk.library_live:live_pull:x.x.x'implementation 'com.yxt.opensdk.library:library_baidu_player:x.x.x'implementation 'com.yxt.opensdk.library:library_rongyun_chat:x.x.x'
声明SDK需要的权限
- 在AndroidManifest.xml中设置权限和适配参数:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.READ_PHONE_STATE"/><meta-dataandroid:name="design_width"android:value="1080" /><meta-dataandroid:name="design_height"android:value="1920" />
SDK集成步骤
1、Application中配置代码
- 初始化临境直播
/*** 初始化临境直播SDK* @param context* @param isTestEnvironment 是否为测试环境;true:测试环境;false:正式环境*/public static void initPull(Context context, boolean isTestEnvironment) {LivePullOptions options = new LivePullOptions();//设置初始化参数options.setTestEnvironment(false);//**重要**: 是否为测试环境;true:测试环境;false:正式环境options.setThirdParty(true);options.setSDK(false);options.setShowDisconnectedAlert(true);//是否提示断网提示,true:提示;false:不提示options.setShowMobileAlert(true);//是否提示正在使用4G网络提示,true:提示;false:不提示options.setShowBindTip(false);//是否显示绑定微信或手机号码view,true:显示;false:不提示 默认不显示, 当设置为显示时,需要参考 第三项 "绑定微信功能接入"/***视频裁剪模式(可选)*DEFAULT* 默认方式,此模式会按照直播自身需求设置VideoType* 1) 竖屏推流时,按照CENTER_CROP模式* 2) 横屏推流时,按照CENTER_INSIDE模式**CENTER_CROP*裁剪,保持视频内容的宽高比。视频与屏幕宽高不一致时,会裁剪部分视频内容**CENTER_INSIDE*填充,保持视频内容的宽高比。视频与屏幕宽高不一致时,会留有黑边**/options.setVideoScaleType(VideoScaleType.DEFAULT);//可选,设置Toolbar颜色,高度,背景,字体大小LiveUiConfig liveUiConfig = new LiveUiConfig();liveUiConfig.setStatusBarColor(R.color.appStatusBarColor);liveUiConfig.setToolbarHeight(R.dimen.appToolbarHeight);liveUiConfig.setToolbarColor(R.color.appToolbarColor);liveUiConfig.setToolbarBackIcon(R.mipmap.ic_launcher_live_pull);liveUiConfig.setToolbarTitleSize(R.dimen.appToolbarTitleSize);liveUiConfig.setToolbarTitleColor(R.color.appToolbarTitleColor);options.setLiveUiConfig(liveUiConfig);LivePullManager.init(context, options);//可选: 直播互踢时,回调LivePullManager.registerOtherClientEnterLiveListener(new OtherClientEnterLiveListener() {@Overridepublic void onOtherClientEnter(Activity activity) {if (activity != null) {activity.finish();}}});}
2、跳转直播播放页面
//设置跳转到临境直播时对应的参数LivePullIntentDataOptions options = new LivePullIntentDataOptions();options.setLiveLjCode("");//可选: 设置ljCodeoptions.setLiveRoomCode("");//设置直播室roomCodeoptions.setLivePlayPwd("");//设置直播观看密码options.setUserId("");//设置用户userIdoptions.setUserName("");//设置用户名options.setUserAvatar("");//设置用户头像urloptions.setUserLoginName("");//可选: 设置用户登录名options.setUserPoint(0);//设置用户积分//跳转到相应临境直播播放页面,context为Activity的实例LivePullManager.intentToLjLive(context, options);
3、绑定微信功能接入
设置微信绑定功能需要添加以下操作:
注:若不需要微信绑定功能,不需要接入改板块内容。
1. 在微信开放平台申请相应appId;
2. 在Application中初始化微信
public static void initWXLogin(Context context) {WXLoginManager.initWXAppId(context, AppConfig.WX_APP_ID);}
3. 在项目包名的根目录下添加包名wxapi,并在包名下添加 WXEntryActivity.java;如图:

4. WXEntryActivity.java代码如下:
package com.yxt.live.pull.wxapi;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import com.tencent.mm.opensdk.constants.ConstantsAPI;import com.tencent.mm.opensdk.modelbase.BaseReq;import com.tencent.mm.opensdk.modelbase.BaseResp;import com.tencent.mm.opensdk.modelmsg.SendAuth;import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;import com.yxt.sdk.live.pull.manager.WXLoginManager;public class WXEntryActivity extends Activity implements IWXAPIEventHandler {private static final int RETURN_MSG_TYPE_LOGIN = 1;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);WXLoginManager.getWXApi().handleIntent(getIntent(), this);}@Overrideprotected void onNewIntent(Intent intent) {super.onNewIntent(intent);setIntent(intent);WXLoginManager.getWXApi().handleIntent(intent, this);}@Overridepublic void onReq(BaseReq req) {switch (req.getType()) {case ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX:break;case ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX:break;default:break;}}@Overridepublic void onResp(BaseResp resp) {switch (resp.errCode) {case BaseResp.ErrCode.ERR_OK:processCode(resp.getType(), resp);break;case BaseResp.ErrCode.ERR_USER_CANCEL:case BaseResp.ErrCode.ERR_AUTH_DENIED:case BaseResp.ErrCode.ERR_UNSUPPORT:afterLoginFailed();break;default:afterLoginFailed();break;}}private void afterLoginFailed() {WXLoginManager.afterWXLoginFailed();WXEntryActivity.this.finish();}private void processCode(int type, BaseResp resp) {switch (type) {case RETURN_MSG_TYPE_LOGIN:String code = ((SendAuth.Resp) resp).code;WXLoginManager.getWXLoginInfo(code);WXEntryActivity.this.finish();break;}}}
5. 主项目的 AndroidManifest.xml 中添加以下代码:
<!--注册微信回调 WXEntryActivity --><activityandroid:name=".wxapi.WXEntryActivity"android:exported="true"android:label="@string/app_name"android:launchMode="singleTop"android:theme="@android:style/Theme.Translucent" />
混淆配置
-keep class com.yxt.**{ *; }-dontwarn com.yxt.**-dontwarn com.baidu.**-keep class com.baidu.** { *;}-dontwarn io.rong.**-keep class io.rong.** { *;}-keep class skin.support.**{ *; }-dontwarn skin.support.**
常见问题
1、直播SDK 可以按需初始化,不必要在Application里初始化, 可以在用时初始化,但是一定要确保在进入直播观看页面时初始化过
建议方案:
添加一个flag: isLiveInitted = false
然后 进入直播页面前,都调用一次initLive()private static boolean isLiveInitted = false;public static void initLive() {if (!isLiveInitted) {isLiveInitted = true}//按照上面文档初始化// xxx}
关于作者
江苏云学堂网络科技有限公司开发人员,如有问题请发送邮件至
cuiqq@yxt.com
lingy@yxt.com