Как определить, есть ли у устройства датчик для использования компаса в Kotlin?

#java #android #kotlin #sensors #compass

Вопрос:

Есть некоторые устройства, в которых нет встроенного датчика для использования компаса

то, что я пытаюсь здесь сделать, — это перейти или показать сообщение пользователю, если телефон не поддерживает эту функцию

я пытаюсь это сделать:

 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. все еще в поисках ответа ..

Ответ №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
}