Android SDK
API and Version Notes

API and Version Notes

Applies to version 1.4.12.

SDK Management

APIReturn value / purpose
GizSDKManager.getConfiguration()GizConfiguration, current SDK configuration
GizSDKManager.isRegistered()Boolean, initialization state
GizSDKManager.deregister()Unit, unregister and release SDK resources
GizSDKManager.setDebug(debug)Unit, configure debug logging
GizSDKManager.getRegisteredDevice(id)GizDevice?, lookup by SDK device ID
GizSDKManager.getProductDataPointConfig(productKey)Suspending, returns String?; may be null on failure
GizSDKManager.cleanCache()Suspending, returns Result<Unit>; also clears offline product configuration

Device Lists and Scanning

Import the extension functions from their respective modules.

import com.gizwits.smart.sdk.GizSDKManager
import com.gizwits.smart.sdk.mqtt.queryBoundDevices
import com.gizwits.smart.sdk.mqtt.refreshBoundDeviceList
import com.gizwits.smart.sdk.bluetooth.subscribeBleScanError
 
// Call in a coroutine. Falls back to cached devices on request failure,
// and returns an empty list when there is no active user session.
val boundDevices = GizSDKManager.queryBoundDevices()
// Trigger a refresh; observe subscribeBoundDeviceList() for results.
GizSDKManager.refreshBoundDeviceList()

subscribeBleScanError() returns Flow<GizConnectException>. See event listeners.

Capabilities, Devices and Users

bleCapability, lanCapability, and mqttCapability are Kotlin extension properties from com.gizwits.smart.sdk.bluetooth, .lan, and .mqtt. Their common interface is BaseCapability.

APINotes
capability.connectAsync()Non-suspending; observe state streams for the connection result
capability.getStatus() / subscribeStatus()CapacityStatus enum; do not compare directly with integers
capability.getIsLogin() / subscribeIsLogin()Handshake state
capability.getDp(dps)Required nullable JsonArray?; returns Result<JsonObject>
device.subscribeProductName() / subscribeDeviceId()Product name / cloud DID StateFlow
device.subscribeDataPointConfig() / subscribeDevicePasscode() / subscribeBoundState()Configuration, device passcode and binding streams
device.startMusicalRhythm(sensitivity, mode, callback)Suspending, returns Result<Unit>; requires recording permission and device support
device.stopMusicalRhythm()Returns Result<Unit>
userManager.subscribeUserState() / getUserTokenStream()User session and authorization streams
userManager.bindDevice(mac, productKey, devAlias, remark)Bind without a device object; returns Result<Unit>
userManager.bindDeviceWithPasscode(deviceId, passcode)Bind using DID and passcode; returns Result<Unit>
userManager.unbindDevice(deviceId) / updateDeviceInfo(did, devAlias, remark)Unbind or update by cloud DID

Here userManager = GizSDKManager.getUserManager(). Call suspending functions in a coroutine and handle results with result.isSuccess, onSuccess, or onFailure.

Provisioning and Module Profiles

  • BLE and AP provisioning use seconds for timeout and require an explicit bindWithUid argument.
  • For an AI module that establishes its own cloud binding, enable bindWithUid and authorize the user before provisioning.
  • ProductInfoStruct.cmbDeviceTypeId enables China Mobile AiJia CMB module discovery.
  • GizBleModuleProfile includes bleModuleVariant and support5GConfig. Protocol selection follows advertisements; 5 GHz provisioning is not supported by every module.
  • AirLink uses GizESPTouchSmartConfig.provideWiFiCredentialsWithAirLink(context, ssid, password, timeout, productKeys, processHandler) from com.gizwits.smart.sdk.esptouch, returning Result<DeviceRegistrationInfo?>. timeout is in seconds, and productKeys filters cloud confirmation. Cancel with stopProvideWiFiCredentialsWithAirLink(). This API has no bindWithUid argument.