如何检测设备是不是有传感器可以在 Kotlin 中使用指南针?

Posted

技术标签:

【中文标题】如何检测设备是不是有传感器可以在 Kotlin 中使用指南针?【英文标题】:How to detect if the device has sensor to use compass in Kotlin?如何检测设备是否有传感器可以在 Kotlin 中使用指南针? 【发布时间】:2021-11-15 05:29:43 【问题描述】:

有些设备没有内置传感器来使用指南针

如果手机不支持此功能,我在这里要做的是导航或向用户显示消息

我正在尝试这个:

sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager
    sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION)
    if (sensor !== null) 
        val intent = Intent(this, MainActivity::class.java)
        startActivity(intent)
    else
        val intent = Intent(this, SetProfileActivity::class.java)
        startActivity(intent)
    

但每次都会出现这个错误:

sensorManager.getDefault…(Sensor.TYPE_ORIENTATION) must not be null

我做错了什么?

【问题讨论】:

仍在寻找答案.. 【参考方案1】:

我只是偶然发现了同样的问题。

这是我找到并为我工作的解决方案:

val pm: PackageManager = context.packageManager
if (!pm.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) 
  // This device does not have a compass, turn off the compass feature

【讨论】:

以上是关于如何检测设备是不是有传感器可以在 Kotlin 中使用指南针?的主要内容,如果未能解决你的问题,请参考以下文章

给定 APK 文件,我如何检测应用程序是不是是用 Kotlin 编写的?

Android 检测运动

iBeacon,是不是可以获得 BLE 设备列表?

如何在 Kotlin 中使用协程将图像保存在设备中

如何在 Kotlin 中接收和解析 HTTP Json 文件

如何检测转数?用啥类型的传感器啊?