Android 接入场景

临境直播观看 SDK 的接入可以通过两种场景;
一、原生场景:直接从 App 原生进入直播观看;
二、H5 嵌入场景:从嵌套在 webview 的 H5 中,进入直播观看;

原生场景

原生场景接入方式

  • 首先接入临境直播观看 SDK,并配置相应环境,具体请参见 Android 接入说明文档。
  • 直接在需要跳转的 Activity 里面添加如下代码:
  1. //设置跳转到临境直播时对应的参数
  2. LivePullIntentDataOptions options = new LivePullIntentDataOptions();
  3. options.setLiveRoomCode("");//设置直播室roomCode
  4. options.setLivePlayPwd("");//设置直播观看密码
  5. options.setUserId("");//设置用户userId
  6. options.setUserAvatar("");//设置用户头像url
  7. options.setUserName("");//设置用户名
  8. options.setUserLoginName("");//可选: 设置用户登录名
  9. options.setUserPoint(0);//设置用户积分
  10. //跳转到相应临境直播播放页面,contextActivity的实例
  11. LivePullManager.intentToLjLive(context, options);

H5嵌入场景

H5嵌入场景接入方式

  • 首先接入临境直播观看 SDK,并配置相应环境,具体请参见 Android 接入说明文档。
  • 定义类 WebViewActivity 继承 Activity;
  • 在 WebViewActivity 中对应布局文件 activity_webview.xml 中引入 webview [此处的 webview 需要使用临境直播观看 SDK 中带的 YXTX5WebView ];
  • 在 WebViewActivity 取到 YXTX5WebView 实例声明为 myWebView;
  • h5的直播列表需要在这个 myWebView 里面加载;
  • 给这个 webview 添加协议代理回调;
  1. myWebView.registerProtocolCallBack(new OnProxyCallBack(){
  2. @Override
  3. public void biz_util_open(View webView, ProtocolModel protocolModel) throws JSONException {
  4. switch (getProtoPrm(protocolModel.getParam(), "name")) {
  5. case "yxt_app_live_open":
  6. openLive(context,getProtoPrm(protocolModel.getParam(), "roomid"), getProtoPrm(protocolModel.getParam(), "password"));
  7. break;
  8. }
  9. }
  10. })
  11. public static String getProtoPrm(String p, String key) {
  12. String res = "";
  13. try {
  14. JSONObject j = new JSONObject(p);
  15. res = j.optString(key, "");
  16. } catch (Exception e) {
  17. }
  18. return res;
  19. }
  • 当获取到协议之后需要获取用户可用积分;
  1. // 正式api地址
  2. public static final String DEFAULT_FORMAL_BASE_API = "https://api-qida.yunxuetang.cn/v1/qdl/";
  3. // 测试api地址
  4. public static final String DEFAULT_TEST_BASE_API = "https://devinner.yunxuetang.com.cn/qidaliveapi/v1/";
  5. /**
  6. * API用于获取用户可用积分
  7. */
  8. public static final String GETVALIDPOINTS = API地址 + "live/getvalidpoints";
  9. public static void openLive(final Context mContext, final String roomId, final String playPwd) {
  10. Alert.getInstance().showDialog();//此处是显示等待的loading效果 需自己实现
  11. //此处为通过JavaAPI获取当前用户的可用积分,用于观看直播时对主播进行礼物赠送是的兑换
  12. //HttpUtil需要自己实现 此处就是简单的get请求
  13. //注意该请求头中需要携带以下参数
  14. //1."Source" "506"
  15. //2."Token" tokenh5localstorage获取
  16. HttpUtil.get(GETVALIDPOINTS, new JsonHttpHandler() {
  17. @Override
  18. public void onSuccessJSONObject(int statusCode, JSONObject response) {
  19. super.onSuccessJSONObject(statusCode, response);
  20. //此处是获取到后台返回的积分是个jsonobject 此处需要在自己的http框架中解析得
  21. //此处跳转直播
  22. //设置跳转到临境直播时对应的参数
  23. LivePullIntentDataOptions options = new LivePullIntentDataOptions();
  24. options.setLivePlayPwd(playPwd);//设置直播观看密码
  25. options.setLiveRoomCode(roomId);//设置直播室roomCode
  26. options.setUserAvatar("");//设置用户头像url
  27. options.setUserId("");//设置用户userId
  28. options.setUserLoginName("");//设置用户登录名
  29. options.setUserPoint(response.optInt("validPoints", 0));//设置用户积分
  30. //跳转到相应临境直播播放页面,contextActivity的实例
  31. LivePullManager.intentToLjLive(context, options);
  32. }
  33. @Override
  34. public void onFailure(int statusCode, String responseString) {
  35. super.onFailure(statusCode, responseString);
  36. //获取失败,此处跳转直播积分为0
  37. LivePullIntentDataOptions options = new LivePullIntentDataOptions();
  38. options.setLivePlayPwd(playPwd);//设置直播观看密码
  39. options.setLiveRoomCode(roomId);//设置直播室roomCode
  40. options.setUserAvatar("");//设置用户头像url
  41. options.setUserId("");//设置用户userId
  42. options.setUserLoginName("");//设置用户登录名
  43. options.setUserPoint(0);//设置用户积分
  44. }
  45. @Override
  46. public void onFinish() {
  47. super.onFinish();
  48. Alert.getInstance().hideDialog();//此处是隐藏
  49. 等待的loading效果 需自己实现
  50. }
  51. });
  52. }

关于作者

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