哪个传感器负责 Kotlin 中的罗盘功能?

Which sensor is responsible for compass functionality in Kotlin?

我的应用程序中有一个指南针页面,但据我所知,有些设备不支持指南针(没有内置传感器)

我在这里尝试做的是将用户导航到另一个页面,以防他们的设备中没有传感器,如下所示:

val msensorManager = getSystemService(SENSOR_SERVICE) as SensorManager
    if (msensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER).size > 0) {

    } else {

    }

但我不确定哪种传感器类型负责罗盘功能

以上代码正确吗?

对于指南针功能,您必须检查 Sensor.TYPE_MAGNETIC_FIELD:

sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
if (sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) != null){
    // Success! There's a magnetometer.
} else {
    // Failure! No magnetometer.
}