iPhoneアプリのAndroidポートを最近リリースしました。このアプリはデジタルコンパスに依存しています。これはほとんどのデバイスでうまくいきましたが、コンパスが動作していないところがいくつかあります。説明のために、デバイスが私たちに何らかのonSensorChanged()メッセージを与えていないようです。コンパスが一部のデバイスで動作しない
問題のように見えるのデバイスのカップルです:アンドロイド2.2で HTCの欲望 モトローラドロイドのAndroid 2.2.3
に彼らはコンパス作業罰金を利用する他のアプリと主張しています。
我々が使用してコンパスを開始:
磁力計と加速度計は、プログラム起動時に初期化されif (magnetometer != null && accelerometer != null)
{
if (compassOn)
{
sensorManager.registerListener(this, accelerometer, (int) (1000000/kSensorUpdateFrequencyFast));
sensorManager.registerListener(this, magnetometer, (int) (1000000/kSensorUpdateFrequencyFast));
}
else
{
sensorManager.registerListener(this, accelerometer, (int) (1000000/kSensorUpdateFrequencySlow));
sensorManager.registerListener(this, magnetometer, (int) (1000000/kSensorUpdateFrequencySlow));
}
}
を使用して:
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
magnetometer = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
今すぐ上記のコードは、いずれかの加速度計場合、登録が起こらないことが示されました== nullまたは磁力計== null。私は磁力計がヌルでないと確信しています。なぜなら、それが私たちのコンパス機能を隠すからです。だから、おそらく加速度計は、これらの携帯電話でnullですか?
私のonSensorChanged()のコードはかなり標準的で、Web上で見つかる無数の例に基づいています。
なぜコンパスコードがこれらのデバイスで動作していないのでしょうか?
上で作業を開始し、標準の定数を使用すると:問題を抱えている人たち(?すべての)ほとんどは2.2.x.上にあるようです – btschumy
私はまた、いくつかのコード例でセンサーが取得されることに気付きました。 リストsendorList = sensorManager.getSensorList(Sensor.TYPE_MAGNETIC_FIELD); センサ磁力計= sensorList.get(0); getDefaultSensor()ではなく、これが役に立ちますか? – btschumy