2017-01-29 1 views
1

私のウォッチフェイスは心拍センサーにアクセスする必要があり、許可を求める前に物理センサーが存在するかどうかを知りたいと思います。許可が(デフォルトである)付与されていない場合は、私は空のセンサーリストともなしデフォルトを取得関連する許可が与えられていない場合、アンドロイドセンサーが存在することを検出します。

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; 

:ドキュメントによると、私は2つの方法でそれを行うことができますセンサー。それは無意味であっても私に強制的に許可を求める(ソニーのSW3はセンサーを持っていないなど)。 「許可が拒否されました」と「センサーが存在しません」を区別する方法はありますか?

答えて

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を探します。

+0

フィードバックに感謝します。それは助けにはなりませんが、リンクのソリューションは私が最初に説明したものとまったく同じです。 「あなたのアプリケーションがボディセンサーの権限を定義していることを確認してください。センサーの存在を確認する前に行うこともできます。それは私が避けようとしていることです。 – fomand

関連する問題