次のセンサーを組み込んだアプリケーションを実装しました。
- 加速度計
- 磁場
- 方向 (非推奨)
- ジャイロスコープ
- 重力
これは onSensorChanged() メソッドのサンプル コードです。
@Override
public void onSensorChanged(SensorEvent event) {
int type = event.sensor.getType();
if (event.accuracy == SensorManager.SENSOR_STATUS_UNRELIABLE) {
if (type == Sensor.TYPE_GYROSCOPE) {
// Log.e(TAG, "Unreliable gyroscope");
} else if (type == Sensor.TYPE_GRAVITY) {
// Log.e(TAG, "Unreliable gravity");
}
return;
}
if (type == Sensor.TYPE_ACCELEROMETER) {
mmAcceleration = event.values.clone();
} else if (type == Sensor.TYPE_MAGNETIC_FIELD) {
mmGeomagnetic = event.values.clone();
} else if (type == Sensor.TYPE_GYROSCOPE) {
mmRotation = event.values.clone();
} else if (type == Sensor.TYPE_ORIENTATION) {
mmOrientation = event.values.clone();
} else if (type == Sensor.TYPE_GRAVITY) {
mmGravity = event.values.clone();
}
if (mmAcceleration != null && mmGeomagnetic != null
&& mmOrientation != null) {
// Handling the data ...
mmAcceleration = null;
mmGeomagnetic = null;
mmRotation = null;
mmOrientation = null;
mmGravity = null;
}
}
コードを試したデバイスは HTC One S です。3 台の個別のデバイスで試しました。また、Gセンサーを複数回調整してからアプリケーションを開始しましたが、それでも信頼できない結果が得られます. また、調整を試み、電話を再起動してから再度調整するか、再起動後にアプリケーションを直接実行しました。他のセンサーは正常に動作します。また、さまざまな環境 (屋内) を試しましたが、干渉源の近くにはいません。
ジャイロスコープと重力(ジャイロスコープを使用) センサーの信頼できない (SENSOR_STATUS_UNRELIABLE) 結果がまだ得られます。
何がうまくいかないかについて何か提案はありますか?
前もって感謝します。