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-data
android:name="design_width"
android:value="1080" />
<meta-data
android: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() {
@Override
public void onOtherClientEnter(Activity activity) {
if (activity != null) {
activity.finish();
}
}
});
}
2、跳转直播播放页面
//设置跳转到临境直播时对应的参数
LivePullIntentDataOptions options = new LivePullIntentDataOptions();
options.setLiveLjCode("");//可选: 设置ljCode
options.setLiveRoomCode("");//设置直播室roomCode
options.setLivePlayPwd("");//设置直播观看密码
options.setUserId("");//设置用户userId
options.setUserName("");//设置用户名
options.setUserAvatar("");//设置用户头像url
options.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;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WXLoginManager.getWXApi().handleIntent(getIntent(), this);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
WXLoginManager.getWXApi().handleIntent(intent, this);
}
@Override
public void onReq(BaseReq req) {
switch (req.getType()) {
case ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX:
break;
case ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX:
break;
default:
break;
}
}
@Override
public 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 -->
<activity
android: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