常见问题(Android)

1.SDK正确的使用方式

SDK采用单例模式,请使用 ICDeviceManager.shared() 获取实例

2.iOS SDK、Android SDK和小程序插件的使用方式有何不同

这三个SDK无论在命名还是设计模式上都是一样的,对外暴露的model、枚举、接口等都是一样的。如果开发过其中一端,在另一端开发能很快上手。多人开发中,如果其中一端遇到问题,也可以与另一端的人商议看看是否使用有错。

iOS/Android SDK 功能是最完整的。小程序插件功能相对做了点精简,主要缺少了ota以及算法,体脂数据通过web api请求得到。

3.是否支持Android X?

支持,SDK没有使用到UI相关的库

4.为什么需要定位权限?

这是Android官方的要求,不是沃莱的要求。Android 6.0及以上的系统版本才需要开启定位,记住是开启定位,而不是仅给权限就可以了,定位相关疑问请查阅Android官方: https://developer.android.com/guide/topics/connectivity/bluetooth

5.SDK在什么时候初始化?

建议在app启动的时候就初始化,sdk内的大部分接口在初始化回调 onInitFinish 后才能调用。sdk仅需在app生命周期内初始化一次。注意:在调用初始化接口前,请确保拥有蓝牙和定位权限,如无权限,则申请权限后再调用初始化接口。

6.SDK接口回调都在什么线程?

都在主线程回调

7.SDK初始化后,设备上的蓝牙符号也亮了,为什么没有数据上传?

请确认是否调用了 ICDeviceManager.shared().setDelegate() 设置delegate,所有的数据和状态都通过设置的delegate来进行回调。

8.SDK内的数据是否要经过沃莱服务器?

不会,SDK都是本地解析数据的,不会向沃莱服务器发送数据解析和保存。

9.SDK内部是否保存设备上传的数据?

不会,SDK仅是解析中转数据给app,不会在sdk内部保存,所以app接收到数据后需要自己保存。

10.调用SDK初始化接口后,为什么没有onInitFinish回调?

绝大多数都是因为没有在初始化前设置delegate.

11.调用addDevice添加设备,接口回调提示添加成功,为什么还是没有数据上来?

addDevice 回调的是接口操作代码,并非是连接成功的代码。SDK是支持多设备连接的,所有的设备状态都是通过 onDeviceConnectionChanged 回调。

12.调用addDevice添加设备,为什么接口回调提示ICAddDeviceCallBackCodeFailedAndExist?

这个代码的意思是设备已经添加过了,无需重复添加。如果确认这个设备是要sdk去连接的,收到这个代码后请不要调用 removeDevice ,否则会造成sdk不去连接这个设备。

13.调用addDevice添加设备后,在何时调用removeDevice?

addDevice添加设备成功后,SDK将会自行管理设备的连接,如设备息屏断开连接了,设备亮屏后,SDK会自动连接上设备。如果不需要SDK去连接设备,则调用 removeDevice注意:APP关闭后,SDK内的所有资源都会释放掉,所以重新打开app后需要重新addDevice才会去连接设备。

14.调用scanDevice后,中途关闭蓝牙后再打开蓝牙没有扫描设备回调

因为蓝牙的关闭和打开都是用户手动操作,如果用户在扫描中关闭蓝牙,说明用户不想去扫描了,所以SDK没有去自动扫描。如需求是想在蓝牙打开后继续扫描,可以在 onBleState 回调蓝牙打开状态后,调用 scanDevice

15.调用scanDevice后,何时调用stopScan?

在不需要扫描设备的时候,调用stopScan。调用 scanDevice 后,如不调用 stopScan ,SDK不会停止扫描。

16.updateUserInfo什么时候调用?

用户信息有更新就调用该方法。因为设备在连接上后,SDK会自动下发用户信息。

17.秤上的st单位是什么意思?

秤单位st是一个组合单位,如 190.5lb ,秤上单位是st时,秤显示的是 13:8.5 ,换算方式是整数部分: 190.5 / 14 = 13.6 = 13 ,小数部分: 190.5 – 13 * 14 = 8.5

18.onReceiveWeightData和onReceiveMeasureStepData有什么区别?

onReceiveWeightData 是以前旧的设备上传数据的接口, data内的属性 isStabilizedtrue 时,表示测量结束

onReceiveMeasureStepData 是新的设备上传数据的接口,收到step为 ICMeasureStepMeasureOver 为测量结束

19.历史数据何时回调?

非所有设备都有历史数据,具体哪些设备有历史数据功能,需跟业务确认。对于大部分秤,历史数据大多在一次体重测量完成后上报数据。对于跳绳,历史数据在连接上后就会上报,如有实时数据产生,历史数据上传将会停止。待无实时数据产生后又将继续上传历史数据。

20.跳绳电量是否支持主动读取?

目前不支持主动读取,跳绳的电量目前的做法是每次都随实时数据上传,电量更新也会比主动读取更加及时。

21.setUserList和updateUserInfo的区别

updateUserInfo 表示当前用户的信息

setUserList 表示用户列表,下发给设备在离线时做用户识别用。

22.setUserList最多支持多少个用户?

最多支持8个,请确保weight有值,否则在离线时设备无法识别用户。识别逻辑:在用户列表中有且仅有一个用户体重与当前测量的体重在正负2kg以内的为同一个用户。

23.SDK是否支持OTA?

SDK有OTA的功能,但是不是所有设备都支持ota。升级接口 upgradeDevice

24.upgradeDevice调用后,超时时间是多久?

SDK目前没做超时限制,SDK的逻辑是避免出现问题,会一直尝试让设备ota成功。所以app可以根据设备正常的ota所需时间来定义OTA结束的超时时间。

25.upgradeDevice调用后,设备已在升级中,用户关掉蓝牙后再打开蓝牙,SDK没有继续升级.

SDK逻辑:如设备在升级中,但是用户确关闭蓝牙,这说明用户不想升级下去,SDK不会继续去升级。如果APP想继续升级,可以重新调用 upgradeDevice

26.为什么onReceiveWeightHistoryData回调的历史数据没有体脂信息?

因为秤上传的是体重和阻抗数据,而体脂数据跟用户信息相关。所以SDK把数据给到APP,APP根据自己的逻辑去对数据进行认领。认领后可以调用 getBodyFatAlgorithmsManager 里的 reCalcBodyFatWithWeightData 进行体脂数据计算。

27.reCalcBodyFatWithWeightData里面的信息哪些是要填的?

对于4电极单频:

  • weightData:要赋值 weight_kg、imp、bfa_type、electrode
  • userInfo:要赋值 height、age、sex、peopleType

对于4电极双频:

  • weightData:要赋值 weight_kg、imp、imp2、bfa_type、electrode
  • userInfo:要赋值 height、age、sex、peopleType

对于8电极单频:

  • weightData:要赋值 weight_kg、imp、imp2、imp3、imp4、imp5、bfa_type、electrode
  • userInfo:要赋值 height、age、sex、peopleType

对于8电极双频:

  • weightData:要赋值 weight_kg、impendences、bfa_type、electrode
  • userInfo:要赋值 height、age、sex、peopleType

通用:

  • weightData:要赋值 weight_kg、impendences、bfa_type、electrode
  • userInfo:要赋值 height、age、sex、peopleType

28.BLE+WIFI设备的数据上传逻辑是怎样的?

如BLE连接上了,数据将从蓝牙发送,不会从WIFI发送。如果BLE没连接上,数据将从WIFI上传.

29.广播设备是否支持切换单位和下发用户信息?

目前的大部分广播设备只支持数据上报,不支持下发。

30.跳绳停止后,为什么热量消耗还是会变化?

热量消耗的计算原理是把跳绳的时长与体重经过算法运算得到。目前虽然跳绳停止了,但是跳绳的时长还是在增加,所以热量消耗还是会变化。

31.OTA回调失败或成功后没有回调设备断开

这是因为无论是回调失败还是成功,都说明OTA流程结束了,这个是最高的事件优先级,收到这两个状态说明设备一定是断开的了,再回调断开状态已无意义

32.SDK支持什么架构?

arm64-v8a、armeabi、armeabi-v7a、x86、x86_64

33.App不需要支持那么多的架构,如何精简?

可在gradle中的defaultConfig增加

android{
    ...
    defaultConfig{
        ...
        ndk {
            abiFilters 'armeabi', 'arm64-v8a'
        }
    }
}

abiFilters 后面的就是app打包需要的架构,可自行根据所需配置

34.蓝牙和定位权限都给了,SDK也初始化了,为什么还是扫描不到设备?

目前遇到的大多数原因是因为定位关了,蓝牙操作不但要定位权限,还要定位打开。

35.需要显示肌肉量,但是ICWeightData里,只有肌肉率?

肌肉量可以通过肌肉率和体重换算得到,如: 肌肉量 = 肌肉率 * 体重(kg) . 其他体脂数据如含水量,脂肪量也是如此。

GUANGDONG WELLAND TECHNOLOGY CO.,LTD All Right ReservedUpdate time: 2024-02-05 08:57:53

results matching ""

    No results matching ""

    results matching ""

      No results matching ""