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

BJLiveUI-Android

百家云直播Android SDK简介

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

  • UI库基于CorePPT实现,提供了一个针对教育场景下师生互动模板,主要包括师生一对一音视频互动,多人音视频互动,课件展示、文字聊天等功能,可以快速接入,集成工作量小,适合需要快速上线的同学,该库已开源。ui只是为了方便快速开发使用,ui界面使用不提供接口支持。
  • 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-ui:2.2.2'
}

源码依赖

源码连接

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

kotlin配置

自2.1.1版本开始,新增了kotlin实现的三分屏模板,后续功能迭代基于三分屏模板,竖屏模板原则上不再更新。

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

liveplayer-sdk-ui下使用了$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 出错回调
     */
    LiveSDKWithUI.enterRoom(@NonNull Context context, @NonNull String code, @NonNull String name, @NonNull LiveSDKEnterRoomListener listener)

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


/**
     * 通过参加码进入竖版老模板
     *
     * @param context
     * @param code     参加码
     * @param name     昵称
     * @param listener 出错回调
     */
    LiveSDKWithUI.enterRoomWithVerticalTemplate(@NonNull Context context, @NonNull String code, @NonNull String name,
                                 @NonNull LiveSDKEnterRoomListener listener)

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

/**
     * 通过签名进竖版老模板
     * @param context
     * @param roomId   房间号
     * @param sign     签名
     * @param model    用户model (包含昵称、头像、角色等)
     * @param listener 出错回调
     */
    LiveSDKWithUI.enterRoomWithVerticalTemplate(@NonNull Context context, long roomId,
                                 @NonNull String sign, @NonNull LiveRoomUserModel model, @NonNull LiveSDKEnterRoomListener listener)

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

直播间分享功能

分享功能可以启用也可以不启用,不启用时直播间内不会显示分享图标,反之则会显示。

LiveSDKWithUI.setShareListener(new LiveSDKWithUI.LPShareListener() {
  @Override
  public void onShareClicked(Context context, int i) {
  // i 为LPShareModel里getShareType的值
  }

  @Override
  public ArrayList<? extends LPShareModel> setShareList() {
  // shareModel请继承LPShareModel
  // getShareIconRes() 返回分享图标 resource
  // getShareIconText() 返回分享图标文字 如:微信、朋友圈
  // hasCorner 默认false
  return null;
  }

  @Override
  public void getShareData(Context context, long roomId) {
  // 触发集成方异步获取分享信息
  }
});

单点登录

直播间支持单点登录功能,如果使用同一个user_number进入直播,后进直播间的会踢掉先进的直播间的,此时会有回调

LiveSDKWithUI.setEnterRoomConflictListener(new LiveSDKWithUI.RoomEnterConflictListener() {
  @Override
  public void onConflict(Context context, LPConstants.LPEndType endType, final LiveSDKWithUI.LPRoomExitCallback callback) {
  // 单点登录冲突 endType为冲突方终端类型
  // 回调callback.exit(); 退出直播间
  }
});

离开直播间二次确认

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

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

SDK体验

下图为老师上课视角,包含有PPT展示,老师自己的视频,学生的视频,在线人员列表、PPT管理等按钮

只有老师

横屏

老师和上麦学生

横屏