发送端-推送SDK 有 UI 推送投屏 Android

# 极简接入(Android)

乐播提供了带UI界面的SDK版本,支持APP仅通过一个简单接口就能把SDK集成到自己的APP使用了。 如果这个UI界面不能满足您的需求,可跳过此篇。

# 1 推送投屏极简接入方式

# 1.1 初始化

LelinkSourceSDK.getInstance()
                //FIXME WARN: 这里替换为您申请的AppID & AppSecret,build.gradle替换为您的应用包名
                .setSdkInitInfo(this, getString(R.string.app_id), getString(R.string.app_secret))
                .easyPush(mBrowseContainer);

** 传入参数:**

  • 第一个参数:在开发者中心申请的AppID
  • 第二个参数:在开发者中心申请的AppSecret
  • 第三个参数:设备列表展示所需的ViewGroup(SDK包含设备搜索ui,需要APP层传递一个显示区域的ViewGroup)

# 1.2 投屏监听设置

LelinkSourceSDK.getInstance().setEasyCastListener(mCastListener);

因为搜索列表在SDK实现,当用户点击选中某个设备时,SDK就会触发onCast回调,应用层需要在回调中传入实际需要投屏播放的url

private IEasyCastListener mCastListener = new IEasyCastListener() {

        /**
         * 如果没有触发此回调,则表示此次未搜索到设备或用户未投屏
         * @param lelinkServiceInfo
         * @return
         */
        @Override
        public EasyCastBean onCast(LelinkServiceInfo lelinkServiceInfo) {
            EasyCastBean bean = new EasyCastBean();
            bean.url = videoUrl; //实际需要投屏的url
            return bean;
        }

        /**
         * 如果投屏失败,在搜索页面关闭的时候,会触发回调
         * @param lelinkServiceInfo
         * @param easyCastBean
         * @param what
         * @param extra
         */
        @Override
        public void onCastError(LelinkServiceInfo lelinkServiceInfo, EasyCastBean easyCastBean, int what, int extra) {
        }

        /**
         * 推送成功
         * @param lelinkServiceInfo
         * @param easyCastBean
         */
        @Override
        public void onCastLoading(LelinkServiceInfo lelinkServiceInfo, EasyCastBean easyCastBean) {
        }

        /**
         * 暂停
         * @param lelinkServiceInfo
         * @param easyCastBean
         */
        @Override
        public void onCastPause(LelinkServiceInfo lelinkServiceInfo, EasyCastBean easyCastBean) {
        }

        /**
         * 起播 或 收端暂停之后恢复播放
         * @param lelinkServiceInfo
         * @param easyCastBean
         */
        @Override
        public void onCastStart(LelinkServiceInfo lelinkServiceInfo, EasyCastBean easyCastBean) {
        }

        @Override
        public void onCastPositionUpdate(LelinkServiceInfo lelinkServiceInfo, EasyCastBean easyCastBean, long duration, long position) {
        }

        /**
         * 收端播放结束,如果需要实现下一集,可在之后的onCast回调中提供播放信息
         * @param lelinkServiceInfo
         * @param easyCastBean
         */
        @Override
        public void onCastCompletion(LelinkServiceInfo lelinkServiceInfo, EasyCastBean easyCastBean) {
        }

        /**
         * 搜索退出播放,不同于 onCastCompletion,此时需要恢复APP视频播放
         * @param lelinkServiceInfo
         * @param easyCastBean
         */
        @Override
        public void onCastStop(LelinkServiceInfo lelinkServiceInfo, EasyCastBean easyCastBean) {
        }

        @Override
        public void onDismiss() {
        }
    };



# 2 镜像投屏极简接入方式

# 2.1 初始化

LelinkSourceSDK.getInstance()
                //FIXME WARN: 这里替换为您申请的AppID & AppSecret,build.gradle替换为您的应用包名
                .setSdkInitInfo(this, getString(R.string.app_id), getString(R.string.app_secret))
                .easyMirror(mBrowseContainer);

** 传入参数:**

  • 第一个参数:在开发者中心申请的AppID
  • 第二个参数:在开发者中心申请的AppSecret
  • 第三个参数:设备列表展示所需的ViewGroup(SDK包含设备搜索ui,需要APP层传递一个显示区域的ViewGroup)

# 2.2 投屏监听设置

LelinkSourceSDK.getInstance().setEasyCastListener(mCastListener);

跟推送方式一样,区别是在oncast回调时,设置镜像参数。

    private IEasyCastListener mCastListener = new IEasyCastListener() {
        @Override
        public EasyCastBean onCast(LelinkServiceInfo lelinkServiceInfo) {
            EasyCastBean castBean = new EasyCastBean();
            castBean.mirrorAudioEnable = false;
            return castBean;
        }

        @Override
        public void onCastError(LelinkServiceInfo lelinkServiceInfo, EasyCastBean easyCastBean, int what, int extra) {
        }

        @Override
        public void onCastLoading(LelinkServiceInfo lelinkServiceInfo, EasyCastBean easyCastBean) {
        }

        @Override
        public void onCastPause(LelinkServiceInfo lelinkServiceInfo, EasyCastBean easyCastBean) {
        }

        @Override
        public void onCastStart(LelinkServiceInfo lelinkServiceInfo, EasyCastBean easyCastBean) {
        }

        @Override
        public void onCastPositionUpdate(LelinkServiceInfo lelinkServiceInfo, EasyCastBean easyCastBean, long duration, long position) {
        }

        @Override
        public void onCastCompletion(LelinkServiceInfo lelinkServiceInfo, EasyCastBean easyCastBean) {
        }

        @Override
        public void onCastStop(LelinkServiceInfo lelinkServiceInfo, EasyCastBean easyCastBean) {
        }

        @Override
        public void onDismiss() {
        }
    };