1

光センサーの変化をリッスンしてその値を読み取るコードがあります。

SensorManager sensorManager  = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
mLightSensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);

//light sensor listener
private SensorEventListener lightSensorEventListener = new SensorEventListener(){

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
        // TODO Auto-generated method stub
    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        // TODO Auto-generated method stub
            //my reading code
    }

この単純なコード セグメントは、Nexus S、Nexus One、Galaxy Nexus で、画面のオン/オフに関係なく正常に動作します。

しかし、HTC One X で実行すると、画面がオフになっていると動作しないことがわかりました。つまり、画面がオフの場合、センサーはトリガーされないようです。ただし、画面がオンの場合は正常に機能し、正しい読み取り値が得られます。

ハードウェアの問題なのでどうしようもないのではないかと思います。それとも単なる設定の問題?設定で自動輝度をオンにしましたが、役に立ちませんでした。ありがとう!

4

1 に答える 1

1

画面がオフの状態でセンサーが機能する必要はありません。通常、光センサーは画面の明るさを調整するために使用されるため、デバイス メーカーが画面をオフにした状態で光センサーを有効にしないことは合理的です。

そうは言っても、センサーを画面オフで動作させる方法である部分的な wake lock を取得してみてください (少なくとも加速度計の場合)。

    PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
    PowerManager.WakeLock lock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Light sensor");
    wl.acquire();

wake lock パーミッションを取得していることを確認します。

作業が終わったら、必ずウェイク ロックを解除してください。

于 2012-10-11T05:33:36.837 に答える