Android接入说明文档

接入临境直播观看 SDK 首先遵循以下步骤:

  • 配置 SDK 集成环境
  • 按照以下接入文档集成代码

SDK 集成环境配置

开发与运行环境

  • Android Studio
  • 支持 Android 4.0 及以上系统版本; 支持 armv5/armv7a/arm64/x86/x86_64 以及虚拟机运行。

配置工程

  • Project build.gradle allprojects->repositories 中添加云学堂 maven地址

    1. maven { url 'https://devinner.yunxuetang.com.cn/nexus/content/repositories/releases/' }
  • 引入直播SDK版本:

    1. compile 'com.yxt.sdk.library_live:live_pull:1.16.6'
    2. compile 'com.yxt.sdk.library:library_baidu_player:2.2.3'
    3. compile 'com.yxt.sdk.library:library_rongyun_chat:1.3'

声明SDK需要的权限

  • 在AndroidManifest.xml中设置权限:
  1. <uses-permission android:name="android.permission.READ_LOGS" />
  2. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  3. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  4. <uses-permission android:name="android.permission.INTERNET" />
  5. <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  6. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  7. <uses-permission android:name="android.permission.READ_PHONE_STATE"/>

SDK集成步骤

1、Application中配置代码

  • 初始化临境直播
  1. /**
  2. * 初始化临境直播SDK
  3. * @param context
  4. * @param isTestEnvironment 是否为测试环境;true:测试环境;false:正式环境
  5. */
  6. public static void initPull(Context context, boolean isTestEnvironment) {
  7. LivePullOptions options = new LivePullOptions();//设置初始化参数
  8. options.setTestEnvironment(isTestEnvironment);//**重要**: 是否为测试环境;true:测试环境;false:正式环境
  9. options.setThirdParty(true);
  10. options.setShowDisconnectedAlert(true);//是否提示断网提示,true:提示;false:不提示
  11. options.setShowMobileAlert(true);//是否提示正在使用4G网络提示,true:提示;false:不提示
  12. options.setShowBindTip(false);//是否显示绑定微信或手机号码viewtrue:显示;false:不提示 默认不显示, 当设置为显示时,需要参考 第三项 "绑定微信功能接入"
  13. //可选,设置Toolbar颜色,高度,背景,字体大小
  14. LiveUiConfig liveUiConfig = new LiveUiConfig();
  15. liveUiConfig.setStatusBarColor(R.color.appStatusBarColor);
  16. liveUiConfig.setToolbarHeight(R.dimen.appToolbarHeight);
  17. liveUiConfig.setToolbarColor(R.color.appToolbarColor);
  18. liveUiConfig.setToolbarBackIcon(R.mipmap.ic_launcher_live_pull);
  19. liveUiConfig.setToolbarTitleSize(R.dimen.appToolbarTitleSize);
  20. liveUiConfig.setToolbarTitleColor(R.color.appToolbarTitleColor);
  21. options.setLiveUiConfig(liveUiConfig);
  22. LivePullManager.init(context, options);
  23. LiveTipManager.setShowTipView(true); //是否显示打赏按钮,默认不显示打赏按钮,true:显示打赏按钮;false:不显示
  24. //打赏按钮的回调事件, 显示打赏按钮时 需要设置打赏按钮回调
  25. LiveTipManager.registerTipListener(new LiveTipManager.OnTipListener() {
  26. @Override
  27. public void onTipClick(Context context) {
  28. ToastUtil.makeText(context, "onTipClick", Toast.LENGTH_LONG).show();
  29. }
  30. });
  31. //可选: 直播互踢时,回调给产线,方便产线跳转至登录页面
  32. LivePullManager.registerOtherClientEnterLiveListener(new OtherClientEnterLiveListener() {
  33. @Override
  34. public void onOtherClientEnter(Activity activity) {
  35. if (activity != null) {
  36. activity.finish();
  37. }
  38. }
  39. });
  40. }

2、跳转直播播放页面

  1. //设置跳转到临境直播时对应的参数
  2. LivePullIntentDataOptions options = new LivePullIntentDataOptions();
  3. options.setLiveLjCode("");//可选: 设置ljCode
  4. options.setLiveRoomCode("");//设置直播室roomCode
  5. options.setLivePlayPwd("");//设置直播观看密码
  6. options.setUserId("");//设置用户userId
  7. options.setUserName("");//设置用户名
  8. options.setUserAvatar("");//设置用户头像url
  9. options.setUserLoginName("");//可选: 设置用户登录名
  10. options.setUserPoint(0);//设置用户积分
  11. //跳转到相应临境直播播放页面,contextActivity的实例
  12. LivePullManager.intentToLjLive(context, options);

3、绑定微信功能接入

设置微信绑定功能需要添加以下操作:

注:若不需要微信绑定功能,不需要接入改板块内容。

1. 在微信开放平台申请相应appId;
2. 在Application中初始化微信

  1. public static void initWXLogin(Context context) {
  2. WXLoginManager.initWXAppId(context, AppConfig.WX_APP_ID);
  3. }

3. 在项目包名的根目录下添加包名wxapi,并在包名下添加 WXEntryActivity.java;如图:

4. WXEntryActivity.java代码如下:

  1. package com.yxt.live.pull.wxapi;
  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.util.Log;
  6. import com.tencent.mm.opensdk.constants.ConstantsAPI;
  7. import com.tencent.mm.opensdk.modelbase.BaseReq;
  8. import com.tencent.mm.opensdk.modelbase.BaseResp;
  9. import com.tencent.mm.opensdk.modelmsg.SendAuth;
  10. import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
  11. import com.yxt.sdk.live.pull.manager.WXLoginManager;
  12. public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
  13. private static final int RETURN_MSG_TYPE_LOGIN = 1;
  14. @Override
  15. public void onCreate(Bundle savedInstanceState) {
  16. super.onCreate(savedInstanceState);
  17. WXLoginManager.getWXApi().handleIntent(getIntent(), this);
  18. }
  19. @Override
  20. protected void onNewIntent(Intent intent) {
  21. super.onNewIntent(intent);
  22. setIntent(intent);
  23. WXLoginManager.getWXApi().handleIntent(intent, this);
  24. }
  25. @Override
  26. public void onReq(BaseReq req) {
  27. switch (req.getType()) {
  28. case ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX:
  29. break;
  30. case ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX:
  31. break;
  32. default:
  33. break;
  34. }
  35. }
  36. @Override
  37. public void onResp(BaseResp resp) {
  38. switch (resp.errCode) {
  39. case BaseResp.ErrCode.ERR_OK:
  40. processCode(resp.getType(), resp);
  41. break;
  42. case BaseResp.ErrCode.ERR_USER_CANCEL:
  43. case BaseResp.ErrCode.ERR_AUTH_DENIED:
  44. case BaseResp.ErrCode.ERR_UNSUPPORT:
  45. afterLoginFailed();
  46. break;
  47. default:
  48. afterLoginFailed();
  49. break;
  50. }
  51. }
  52. private void afterLoginFailed() {
  53. WXLoginManager.afterWXLoginFailed();
  54. WXEntryActivity.this.finish();
  55. }
  56. private void processCode(int type, BaseResp resp) {
  57. switch (type) {
  58. case RETURN_MSG_TYPE_LOGIN:
  59. String code = ((SendAuth.Resp) resp).code;
  60. WXLoginManager.getWXLoginInfo(code);
  61. WXEntryActivity.this.finish();
  62. break;
  63. }
  64. }
  65. }

5. 主项目的 AndroidManifest.xml 中添加以下代码:

  1. <!--注册微信回调 WXEntryActivity -->
  2. <activity
  3. android:name=".wxapi.WXEntryActivity"
  4. android:exported="true"
  5. android:label="@string/app_name"
  6. android:launchMode="singleTop"
  7. android:theme="@android:style/Theme.Translucent" />

防混淆设置

  1. -keep class com.yxt.sdk.ui.**{ *; }
  2. -dontwarn com.yxt.sdk.live.**
  3. -keep class com.yxt.sdk.live.** { *;}
  4. -dontwarn com.baidu.**
  5. -keep class com.baidu.** { *;}
  6. -dontwarn io.rong.**
  7. -keep class io.rong.** { *;}
  8. -dontwarn okhttp3.**
  9. -keep class okhttp3.** { *;}
  10. -dontwarn okio.**
  11. -keep class okio.** { *;}

常见问题

1、直播SDK 可以按需初始化,不必要在Application里初始化, 可以在用时初始化,但是一定要确保在进入直播观看页面时初始化过

  • 建议方案:
    添加一个flag: isLiveInitted = false
    然后 进入直播页面前,都调用一次initLive()

    1. private static boolean isLiveInitted = false;
    2. public static void initLive() {
    3. if (!isLiveInitted) {
    4. isLiveInitted = true
    5. }
    6. //按照上面文档初始化
    7. // xxx
    8. }

关于作者

江苏云学堂网络科技有限公司开发人员,如有问题请发送邮件至
cuiqq@yxt.com
shiq@yxt.com