百家云双师课堂
产品文档 直播技术文档 Android 直播带货UI SDK

Android直播带货UI SDK

百家云直播Android SDK简介

百家云直播Android SDK提供了Core (liveplayer-sdk-core)大班课UI (BJLiveUI-Android)专业小班课UI (professional-group-class)直播带货UI (liveplayer-sdk-live-show)

  • UI库基于Core实现,提供了一个带货场景下的模板,主要包括直播间视频和聊天。demo中购物车ui需要自定义可以参考demo实现。
  • Core为核心库,涵盖了直播间几乎所有的功能,包括音视频推拉流、信令服务器通信、聊天服务器通信等功能,该库不含UI资源,如果使用的是eclipse的同学可以将aar其中的jar包拿出来单独使用。

集成SDK

aar依赖

  • 添加maven仓库
maven { url 'http://git.baijiashilian.com/open-android/maven/raw/master/' }
  • 在build.gradle中添加依赖
    最新版本请自取,Change Log
dependencies {
    implementation 'com.baijiayun.live:liveplayer-sdk-live-show:0.0.2'
}

源码依赖

源码连接

dependencies {
    implementation project(':liveplayer-sdk-live-show')
}

kotlin配置

implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "org.jetbrains.anko:anko-commons:$anko_version"

liveplayer-sdk-live-show下使用了$kotlin_version$anko_version两个变量,需要在项目的根目录下的build.gradle下声明这两个变量 具体可以参考build.gradle

设置客户专属域名前缀

专属域名从百家云账号中心获取,需要在进入直播点播和回放之前设置。例如专属域名为 demo123.at.baijiayun.com,则前缀为 demo123,参考 专属域名说明

LiveSDK.customEnvironmentPrefix = "demo123";

API调用说明

进入直播间

  • 通过参加码进入直播间
 /**
     * 通过参加码进入房间
     *
     * @param context
     * @param code     参加码
     * @param name     昵称
     * @param listener 出错回调
     */
    LiveShowSDKWithUI.enterRoom(@NonNull Context context, @NonNull String code, @NonNull String name,
                                 @NonNull LiveSDKEnterRoomListener listener)

    /**
     * 通过参加码进入房间
     *
     * @param context
     * @param code     参加码
     * @param name     昵称
     * @param avatar   用户图像
     * @param listener 出错回调
     */
    LiveShowSDKWithUI.enterRoom(@NonNull Context context, @NonNull String code, @NonNull String name,
                                 @Nullable String avatar, @NonNull LiveSDKEnterRoomListener listener)

  • 通过roomIdsign进入进入直播间
/**
*
* @param context
* @param roomId   房间号
* @param sign     签名
* @param model    用户model (包含昵称、头像、角色等)
* @param listener 出错回调
*/
LiveShowSDKWithUI.enterRoom(context, roomId, sign, model, listener);

Sign原则上由后端计算返给前端,计算规则

自定义界面

  • 购物车

添加购物车fragment,一切自定义ui都基于此fragment不支持传多个

LiveShowSDKWithUI.setShopeFragment(Fragment shopefragment)

移除购物车fragment

//getContext()在shopefragment中获取
if (getContext() instanceof RouterListener) {
    ((RouterListener) getContext()).removeShopFragment();
}

发送自定义信令,参考demo自定义信令

liveRoom.sendBroadcast(PRODUCT_KEY, product, true);

接收自定义信令

 disposables.add(liveRoom.getObservableOfBroadcast()
                .mergeWith(liveRoom.getObservableOfBroadcastCache())
                .filter(lpkvModel -> PRODUCT_KEY.equals(lpkvModel.key))
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(product -> {
                },throwable -> {}));
  • 礼物

设置发送礼物超时时间>10000ms生效

LiveShowSDKWithUI.setGiftSendTimeOut(long timeOutTimeMillis) 

自定义礼物数据

LiveShowSDKWithUI.addGiftItems(List<GiftModel> shareModels) 
LiveShowSDKWithUI.setGiftItems(List<GiftModel> shareModels) 

点击回调

LiveShowSDKWithUI.setOnGiftClickListener(LPRoomGiftClickListener lpRoomGiftClickListener)
  • 分享

自定义分享数据

LiveShowSDKWithUI.addShareItems(List<ShareModel> shareModels) 
LiveShowSDKWithUI.setShareItems(List<ShareModel> shareModels)

点击回调,这里需要使用者自己完成分享

LiveShowSDKWithUI.setOnShareClickListener(LPRoomShareClickListener lpRoomShareClickListener)

离开直播间二次确认

用户在直播间内点击关闭按钮或者点击返回时,会有回调,此时可以友好的提示退出的二次确认

 LiveShowSDKWithUI.setRoomExitListener(new LiveSDKWithUI.LPRoomExitListener() {
   @Override
   public void onRoomExit(Context context, final LiveSDKWithUI.LPRoomExitCallback lpRoomExitCallback) {
   //退出直播间二次确认回调 无二次确认无需设置
   lpRoomExitCallback.exit();
   // or
   lpRoomExitCallback.cancel();
 });

SDK体验

  • 购物车

  • 礼物

  • 点赞