You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中调用Java静态方法Sensor.getMaxLengthValuesArray失败怎么办?

问题解决方法

核心原因说明

  • 第一,方法API级别限制:Sensor.getMaxLengthValuesArray()是Android 12(API级别31)才新增的系统API,只要满足以下任意一种情况就会调用失败:
    • 项目build.gradle中配置的compileSdk低于31,编译阶段就无法识别该静态方法
    • 运行代码的WearOS设备系统版本低于Android 12,运行阶段找不到对应方法
  • 第二,Kotlin空安全校验问题:你声明的mSensor是可空类型Sensor?,而该静态方法要求第一个入参为非空的Sensor实例,直接传可空变量会触发Kotlin编译报错。

修复方案

  1. 先调整项目编译配置,将compileSdk升级到31或更高版本,确保编译阶段可以识别该API
  2. 代码中新增版本判断和非空校验逻辑,参考写法如下:
import android.os.Build
import android.os.Build.VERSION_CODES

// ... 其余原有导入和类代码不变

fun myCode() {
    // 仅当运行设备系统版本≥API 31时执行该方法
    if (Build.VERSION.SDK_INT >= VERSION_CODES.S) {
        // 先校验mSensor非空再传入
        mSensor?.let { validSensor ->
            val num = Sensor.getMaxLengthValuesArray(validSensor, Build.VERSION.SDK_INT)
            // 此处补充后续业务逻辑即可
        }
    } else {
        // 此处补充低版本系统的兼容逻辑
    }
}
  1. 如果是Release包运行异常,检查混淆配置文件,不要对android.hardware.Sensor类的公共方法做混淆裁剪。

内容的提问来源于stack exchange,提问作者이준학

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:54:05