Andorid OpenSDK对接文档

以Demo工程搭建为例(IDE为AndroidStudio,AS),为开发者介绍OpenSDK对接过程。

附件:Android OpenSDK组件接口文档

1. OpenSDK安装

  • 下载Android OpenSDK压缩包解压

  • 拷贝libs/armeabi、libs/armeabi-v7a和libs/arm64-v8a目录下的so文件(可根据自己工程需要兼容的手机架构选择要拷贝的so文件)到自己工程对应的目录;

  • 拷贝libs/lechangeSDK.jar文件到自己工程对应的目录下。

添加完成后的AS工程结构如下如所示:

AS工程结构

2. 工程配置

2.1 配置AndroidManifest

在AndroidManifest.xml中需设置相关权限:

<!-- 基础权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 配网所需权限  -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE" />
<!-- 对讲所需权限  -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

注意:请务必设置相关的权限,否则可能导致某些失败:未开启语音权限将导致对讲失败;未开启读写权限导致录像下载失败,无线配网无声音且配网失败等。

2.2 配置build.gradle

在AS工程的app的build.gradle文件中可根据需要选择兼容的架构:

android {
    …
    defaultConfig {
       …
        ndk{
            abiFilters "armeabi","arm64-v8a"//开发者根据实际情况选择要兼容的架构
        }
    }
}

3. 设备添加功能

设备添加是指先给设备配网,然后再将设备绑定到当前账号下的过程。

SDK目前支持的配网方式有:无线配网和Soft AP配网两种(有线不需要配网)。

由于无线添加流程比较复杂,为方便开发者灵活自由的实现设备添加的功能,我们提供两种添加设备的方案:一是直接调用SDK提供的接口,由开发者自己实现设备添加功能;二是使用demo中封装好的设备添加模块,实现快速对接。

备注:

未被绑定的设备添加说明:

1、配网前需明晰当前设备所支持的配网类型,然后选择相应的配网方式。

2、对于无线设备,需要用无线配对功能传递设备Wifi的密码,设备上线后方可添加。

3、对于支持软AP方式添加的设备(设备有热点),需要使用软AP配对功能。

4、对于有线,连上网线后直接查询状态在线即可添加(无配网过程,但网线必须能连接到外网)。

下面分别介绍两类方案的对接流程:

3.1 调用SDK接口无线添加

3.1.1 SmartConfig添加

设备添加步骤:

  • 开发者获取设备ID、给设备配网的wifi ssid和pwd

  • 判断当前设备所支持的配网类型是否为smartConfig

  • 检查设备是否已被绑定

  • 开始无线配网并在局域网内搜索设备初始化信息

  • 搜索到设备后停止配网,停止搜索设备

  • 初始化设备

  • 检查设备是否在线并获取要绑定设备的能力集

  • 绑定设备

设备添加流程1

3.1.2 SoftAp添加

设备添加步骤:

  • 开发者获取设备ID、给设备配网的wifi ssid、pwd和SCCode

  • 判断当前设备所支持的配网类型是否为SoftAP

  • 局域网搜索设备初始化信息

  • 开始SoftAp配网

  • 检查设备是否已被绑定

  • 检查设备是否在线并绑定

设备添加流程2

3.2 集成LCDeviceAddModule

设备添加步骤:

<TextView
    android:id="@+id/tv_add"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />
  • 初始化设备添加模块
try {
        //初始化参数
         CommonParam commonParam = new CommonParam();
         commonParam.setEnvirment(CONST.Envirment.CHINA_PRO.url);
         commonParam.setContext(MainActivity.this.getApplication());
         commonParam.setAppId("…");//开发者自己的appid
         commonParam.setAppSecret("…");//开发者自己的appsecret
        //初始化添加模块
         LCDeviceEngine.newInstance().init(commonParam);
     } catch (Throwable throwable) {
         throwable.printStackTrace();
     }
     findViewById(R.id.tv_add).setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
             try {
               //调用设备添加接口
                 LCDeviceEngine.newInstance().addDevice(MainActivity.this);
             } catch (Exception e) {
                 e.printStackTrace();
             }
         }
     });

4. OpenSDK初始化

LCOpenSDK_Api是SDK内部与开放平台进行rest交互的封装类,应作为第一个调用的接口,在调用其他接口前进行初始化和设置参数。

初始化流程如下:

OpenSDK初始化

备注:OpenSDK初始化需要开发者先自行向开放平台获取Token。

5. 播放功能

SDK支持的播放类型主要有:实时预览、设备录像回放、云录像回放,都需要在使用SDK播放功能前,在布局文件中创建一个播放父窗口:

<!--  播放窗口容器 -->
<FrameLayout
    android:id="@+id/live_window"
    android:layout_width="match_parent"
    android:layout_height="200dp">
    <!-- 渲染内容 -->
    <FrameLayout
        android:id="@+id/live_window_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
    </FrameLayout>

备注:SDK里完成播放功能的类采用继承FrameLayout的方式实现,所以需要一个父窗口容器。

初始化播放父窗口,计算出渲染内容FrameLayout的高度:

//初始化布局
FrameLayout fr_window = findViewById(R.id.live_window);
FrameLayout getFr_window_content = findViewById(R.id.live_window_content);
//以9:16的比例计算出fr_window的高度
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(fr_window.getLayoutParams());
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
layoutParams.width =metrics.widthPixels;//屏幕宽度
layoutParams.height = metrics.heightPixels*9/16;
layoutParams.setMargins(0, 0, 0, 0);
fr_window.setLayoutParams(layoutParams);

5.1 实时预览

实时预览的主要步骤有:

  • 创建布局并初始化(参考2.4)

  • 初始化播放类LCOpenSDK_PlayWindow

  • 给LCOpenSDK_PlayWindow类添加事件监听和收拾监听

  • 获取播放参数(开发者获取设备信息)

  • 开始/停止播放

  • 释放资源

预览流程为:

实时预览

示例代码:

//初始化playwindow
LCOpenSDK_PlayWindow playWindow = new LCOpenSDK_PlayWindow();
playWindow.initPlayWindow(this, (ViewGroup) findViewById(R.id.live_window_content), 0, true);
//开发者实现事件监听并将监听设给playWindow
LCOpenSDK_EventListener listener = new LCOpenSDK_EventListener(){...}//开发者实现事件监听回调
playWindow.setWindowListener(listener);
//开启收拾监听
playWindow.openTouchListener();
/**
 * 开始预览
 * 1、准备预览参数
 * 2、开启预览
 * 3、在LCOpenSDK_EventListener回调中处理预览结果
 * 4、停止预览
 * 5、释放资源
 */
LCOpenSDK_ParamReal paramReal = new LCOpenSDK_ParamReal()
playWindow.playRtspReal(paramReal);
playWindow.stopRtspReal(true);
playWindow.uninitPlayWindow();

5.2 设备录像回放

设备录像回放的主要步骤有:

  • 创建布局并初始化(参考2.4)

  • 初始化播放类LCOpenSDK_PlayWindow

  • 给LCOpenSDK_PlayWindow类添加事件监听和收拾监听

  • 获取回放参数(开发者获取设备录像信息

  • 开始/停止回放

  • 释放资源

回放流程为:

本地录像

示例代码:

//初始化playwindow
LCOpenSDK_PlayWindow playWindow = new LCOpenSDK_PlayWindow();
playWindow.initPlayWindow(this, (ViewGroup) findViewById(R.id.live_window_content), 0, true);
//开发者实现事件监听并将监听设给playWindow
LCOpenSDK_EventListener listener = new LCOpenSDK_EventListener(){...}//开发者实现事件监听回调
playWindow.setWindowListener(listener);
//开启收拾监听
playWindow.openTouchListener();
/**
 * 开始回放
 * 1、准备回放参数
 * 2、开启回放
 * 3、在LCOpenSDK_EventListener回调中处理回放结果
 * 4、停止回放
 * 5、释放资源
 */
LCOpenSDK_ParamDeviceRecord paramDeviceRecord = new LCOpenSDK_ParamDeviceRecord(...);//开发者从录像列表中获取
playWindow.playRtspPlayback(paramDeviceRecord);
playWindow.stopRtspPlayback(true);
playWindow.uninitPlayWindow();

5.3 云录像回放

云录像回放的主要步骤有:

  • 创建布局并初始化(参考2.4)

  • 初始化播放类LCOpenSDK_PlayWindow

  • 给LCOpenSDK_PlayWindow类添加事件监听和收拾监听

  • 获取回放参数(开发者获取设备云录像信息

  • 开始/停止回放

  • 释放资源

云录像回放流程为:

云录像

示例代码:

//初始化playwindow
LCOpenSDK_PlayWindow playWindow = new LCOpenSDK_PlayWindow();
playWindow.initPlayWindow(this, (ViewGroup) findViewById(R.id.live_window_content), 0, true);
//开发者实现事件监听并将监听设给playWindow
LCOpenSDK_EventListener listener = new LCOpenSDK_EventListener(){...}//开发者实现事件监听回调
playWindow.setWindowListener(listener);
//开启收拾监听
playWindow.openTouchListener();
/**
 * 开始回放
 * 1、准备回放参数
 * 2、开启回放
 * 3、在LCOpenSDK_EventListener回调中处理回放结果
 * 4、停止回放
 * 5、释放资源
 */
LCOpenSDK_ParamCloudRecord paramCloudRecord = new LCOpenSDK_ParamCloudRecord(...)//开发者从云录像列表中获取
playWindow.playCloud(paramCloudRecord);
playWindow.stopCloud(true);
playWindow.uninitPlayWindow();

备注: 1、播放窗口监听回调类很重要,是上层与底层的直接回调交互类。 2、LCOpenSDK_EventListener类请参考OpenSDK接口文档。

6. 语音对讲功能

OpenSDK目前的对讲需要在成功开启预览的情况下才能对讲,对讲功能的主要步骤如下:

  • 获取对讲参数

  • 判断当前设备是否有对讲能力

  • 为对讲设置监听

  • 开始对讲

  • 停止对讲

对讲流程为:

语音对讲

示例代码:

//关闭预览声音
playWindow.stopAudio();
//设置对讲监听
LCOpenSDK_Talk.setListener(new LCOpenSDK_TalkerListener());
//准备对讲参数(开发者获取当前正在预览的设备信息)
LCOpenSDK_ParamTalk paramTalk = new LCOpenSDK_ParamTalk(...);
//开始对讲
LCOpenSDK_Talk.playTalk(paramTalk);
//停止对讲
LCOpenSDK_Talk.stopTalk();
//释放对讲监听
LCOpenSDK_Talk.setListener(null);
//开启预览声音
playWindow.playAudio();

7. 下载功能

SDK支持的下载包括设备SD卡录像下载和云录像下载两种,下面分别介绍两种下载功能的流程。

7.1 设备录像下载

设备录像下载的主要步骤为:

  • 获取设备录像列表

  • 初始化设备录像下载参数

  • 设置下载监听

  • 开始下载

设备录像下载流程:

设备录像下载

示例代码:

//获取设备录像列表(开发者自己请求获取)
//QueryLocalRecordNum 查询某一条件下的设备录像数目
//QueryLocalRecords 查询设备录像记录
//设置下载监听(开发者重写LCOpenSDK_DownloadListener类方法)
LCOpenSDK_Download.setListener(new LCOpenSDK_DownloadListener());
//开始下载(开发者准备下载参数)
LCOpenSDK_Download.startDownload(...);

7.2 设备云录像下载

云录像下载的主要步骤为:

  • 获取云录像列表

  • 初始化云录像下载参数

  • 设置下载监听

  • 开始下载

云录像下载流程:

云录像下载

示例代码:

//获取云录像列表(开发者自己请求获取)
//QueryCloudRecordNum 查询某一条件的云录像数目
//QueryCloudRecords 查询云录像记录
//设置下载监听(开发者重写LCOpenSDK_DownloadListener类方法)
LCOpenSDK_Download.setListener(new LCOpenSDK_DownloadListener());
//开始下载(开发者准备下载参数)
LCOpenSDK_Download.startDownload(...);

results matching ""

    No results matching ""