Camera SDK Integration

1. Overview

This document mainly introduces how to integrate the Camera Vertical Category SDK.

2. Prerequisites

  1. Confirm completion of Preparation
  2. Confirm completion of Environment Build

3. Features

3.1 Core Functions

  1. Supports Aqara camera pairing
  2. Supports Aqara camera real-time preview, playback, two-way audio, and other playback capabilities
  3. Supports Aqara camera control and settings

3.2 SDK Size

Dependency Description Size
Camera Playback Playback, P2P About 24MB
Camera Control & Settings Settings items and control capabilities About 22MB
Other third-party open-source components Components required for SDK operation About 24MB
Total - About 70MB

Note: About 70MB is the maximum incremental size of SDK integration, which occurs when there is no overlap between the third-party app’s dependencies and those of the SDK. In most cases, it will be smaller.

3.3 Supported Device Categories

See Camera SDK Supported Device List for details.

3.4 Build Environment Requirements

Parameter Version Description
minSdkVersion 26 Android 8.0
targetSdkVersion 36 Recommended to keep consistent with the sample project
Java 17 /

4. Integration

4.1 Open the Android Studio Project

4.2 Edit build.gradle in the app Directory

After completing Environment Build, add the camera and related dependencies:

dependencies {
    // Core / CommonUI (already introduced in Environment Build)
    implementation 'com.lumi.external:core:2.2.62'
    implementation 'com.lumi.commonui:ui:1.5.33'

    // Pairing SDK (required for camera onboarding)
    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'

    // Camera SDK
    implementation 'com.lumi.sdk:camera:3.2.584'

    // Device control / routing / settings
    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'
}

Use the version numbers from the sample project or The Latest Version of the SDK. When integrating multiple business SDKs, it is recommended to configure packagingOptions and zxing conflict exclusion together; see Environment Build.

Recommended configuration:

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 Edit AndroidManifest.xml

Declare permissions commonly used by camera features (some permissions may also be merged automatically from the SDK AAR):

<!-- Network permissions -->
<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" />

<!-- Storage permissions (screenshot and recording save) -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<!-- Bluetooth / location permissions (used for pairing) -->
<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" />

<!-- Microphone permission (two-way audio) -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />

Face management, image sharing, and similar capabilities require a FileProvider configuration:

<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 Initialization

See Environment Build - Unified Initialization.

Before camera onboarding, make sure the following are configured correctly:

  • positionInfo (home / position ID)
  • coapServer (device onboarding domain matching the current service region)
  • country / area / supportDeviceArea (it is recommended to determine country first, then look up the corresponding values; see Region Comparison Table)
  • sdkChannel (channel identifier; some settings capabilities depend on this parameter)

4.5 Unified RxJava Error Handling

The Camera SDK uses a large amount of RxJava. It is recommended to handle uncaught exceptions uniformly in Application to avoid individual exceptions crashing the app:

override fun onCreate() {
    super.onCreate()
    RxJavaPlugins.setErrorHandler {
        it.printStackTrace()
    }
}

5. Code Obfuscation

-keep class com.lumi.ed.** {*;}
-keep class tv.danmaku.ijk.media.player.** {*;}
-keep class com.p2p.pppp_api.** {*;}
-keep class com.lumi.rm.** {*;}
lumi LogoCopyright © 2023 Lumi United Technology Co., Ltd. all right reserved,powered by GitbookFile Modify: 2026-08-11 17:03:05

results matching ""

    No results matching ""