摄像机垂直品类SDK集成
一、概述
本文主要介绍如何集成摄像机垂直品类 SDK。
二、前提条件
三、功能特性
3.1 主体功能
- 支持 Aqara 摄像机配网
- 支持 Aqara 摄像机实时预览、回放、双向语音等播放能力
- 支持 Aqara 摄像机控制与设置
3.2 SDK大小
| 依赖库 | 说明 | 大小 |
|---|---|---|
| 摄像机播放 | 播放、P2P | 约 24MB |
| 摄像机控制、设置 | 设置项与控制能力 | 约 22MB |
| 其他第三方开源组件 | SDK 运行所必须的组件 | 约 24MB |
| 合计 | - | 约 70MB |
注意:约 70MB 为集成 SDK 最大增量,即第三方 App 的依赖和 SDK 的第三方依赖毫无交集时。通常情况下,会小于该值。
3.3 支持设备品类
详情查看摄像机SDK支持设备清单
3.4 编译环境要求
| 参数 | 版本号 | 描述 |
|---|---|---|
| minSdkVersion | 26 | Android 8.0 |
| targetSdkVersion | 36 | 建议与示例工程保持一致 |
| Java | 17 | / |
四、集成
4.1 打开 Android Studio 项目
4.2 编辑app目录下build.gradle
在完成环境搭建后,补充摄像机及相关依赖:
dependencies {
// Core / CommonUI(环境搭建中已引入)
implementation 'com.lumi.external:core:2.2.62'
implementation 'com.lumi.commonui:ui:1.5.33'
// 配网 SDK(摄像机入网需要)
implementation 'com.lumi.module.access:access:3.5.82'
implementation 'com.lumi.module.smart_connect:connect:4.0.37'
implementation 'com.lumi.module:scanQR:1.0.14'
implementation 'com.lumi.module:devicekit:1.0.23'
// 摄像机 SDK
implementation 'com.lumi.sdk:camera:3.2.584'
// 设备控制 / 路由 / 设置
implementation 'com.lumi.sdk:rmextra:2.0.10'
implementation 'com.lumi.sdk:device-router:1.0.10'
implementation 'com.lumi.sdk:module-setting:2.0.35'
}
版本号请以示例工程或SDK最新版本为准。集成多业务 SDK 时,建议同步配置
packagingOptions与 zxing 冲突排除,参见环境搭建。
建议同步配置:
android {
packagingOptions {
jniLibs {
pickFirsts += ['lib/arm64-v8a/libc++_shared.so', 'lib/armeabi-v7a/libc++_shared.so']
}
}
}
configurations.configureEach {
exclude group: 'com.google.zxing', module: 'core'
}
4.3 编辑AndroidManifest.xml
声明摄像机业务常用权限(部分权限也可能由 SDK AAR 自动合并):
<!-- 网络权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<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.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 蓝牙 / 定位权限(配网使用) -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 麦克风权限(双向语音) -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
人脸管理、图片分享等能力需要配置 FileProvider:
<application>
...
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/lm_rm_extra_file_paths" />
</provider>
</application>
res/xml/lm_rm_extra_file_paths.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<paths>
<cache-path path="" name="camera_photos"/>
<external-path path="" name="camera_photos" />
<files-path path="" name="camera_photos" />
<root-path path="" name="camera_photos" />
<external-files-path name="share_files" path="."/>
</paths>
</resources>
4.4 初始化
参见环境搭建-统一初始化。
摄像机入网前请确保已正确配置:
positionInfo(家庭 / 位置 ID)coapServer(与当前服务地区匹配的设备入网域名)country/area/supportDeviceArea(建议先确定country再反查,参见地区对照表)sdkChannel(渠道标识,部分设置能力依赖该参数)
4.5 RxJava 统一错误处理
摄像机 SDK 中使用了大量 RxJava,建议在 Application 中统一处理未捕获异常,避免个别异常导致应用崩溃:
override fun onCreate() {
super.onCreate()
RxJavaPlugins.setErrorHandler {
it.printStackTrace()
}
}
五、代码混淆
-keep class com.lumi.ed.** {*;}
-keep class tv.danmaku.ijk.media.player.** {*;}
-keep class com.p2p.pppp_api.** {*;}
-keep class com.lumi.rm.** {*;}