我的表盘需要使用心率传感器,我想知道在请求许可之前是否存在物理传感器。根据文档,我可以通过两种方式实现:
private SensorManager mSensorManager;
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
List<Sensor> deviceSensors = mSensorManager.getSensorList(Sensor.TYPE_HEART_RATE);
或
boolean heartRateSensorEnabled = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE) != null;
但是,如果未授予权限(默认情况下),我会获得空传感器列表,也没有默认传感器。即使没有意义,这也迫使我请求许可(例如索尼SW3没有传感器)。有没有办法区分&#34;许可被拒绝&#34;并且&#34;没有传感器存在&#34;?
答案 0 :(得分:0)
尝试查看requestPermissions
https://developer.android.com/reference/android/support/v4/app/ActivityCompat.html#requestPermissions(android.app.Activity,java.lang.String[], int)
方法。它有回调ActivityCompat.OnRequestPermissionsResultCallback,如果权限被拒绝则返回。
要检查传感器是否存在,请尝试使用this SO thread中列出传感器的代码并查找TYPE_HEART_RATE。