問題を回避するための具体的なシナリオ:
Samsung デバイスでのアクティビティの動作は、変化が検出されるたびに、近接に関して、onPause()/onResume()
SAMSUNG デバイスでのみ呼び出しが行われるという点で異なっていました。
onPause()
Samsung デバイスに固有の動作が発生する近接センサーをクリアしていました。
これが、これに直面している人の時間を節約できることを願っています。近接リスナーをクリアする呼び出しを削除したonPause()
ところ、上記のデバイスで期待どおりに動作するようになりました。
アップデート:
以下に記載されていることだけが問題ではありません。近接センサーは一貫してそのように動作しません。もう 1 つの問題は loc です。
if (!mWakeLock.isHeld()) mWakeLock.acquire();
ランダムに、if()
上記のデバイスに対して false が返されるため、mWakeLock.acquire()
常に呼び出されるとは限りません。
おそらく関連する情報:
mWakeLock = mPowerManager.newWakeLock(field, getLocalClassName());
どこ
field = PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK or 32
私の近接センサー コードは、
1. Samsung GT-I9082 Android 4.2.2 (API 17) [duos grand]
2. Samsung SM-G925I Android 5.1.1 (API 22) [s6 edge]でのみ正しく動作しません。
コード:
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
sensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
...new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_PROXIMITY) {
if (event.values[0] <= 5) { //Sleep
turnOffScreen();
} else { //Wake
turnOnScreen();
}...
// registering listener with SensorManager.SENSOR_DELAY_NORMAL);
問題:
両方のデバイスの近接センサーによって返されるログに記録された値は、数秒間絶えず電話に手を置いている場合でも変動します。それを動かさずに10-15。
のような:
サムスン 6 エッジ -
02-10 20:12:36.532: D/SensorManager(3467): Proximity, val = 8.0 [far]
02-10 20:12:36.532: D/SensorManager(29335): Proximity, val = 8.0 [far]
02-10 20:12:36.532: D/DisplayPowerController(3467): [sensor] setProximitySensorEnabled::unregisterListener
02-10 20:12:36.532: D/PowerManagerService(3467): [s] DisplayPowerCallbacks : onProximityNegative()
02-10 20:12:36.562: I/Sensors(3467): Proximity old sensor_state 33554560, new sensor_state : 33554432 en : 0
02-10 20:12:36.632: I/Sensors(3467): Proximity old sensor_state 33554944, new sensor_state : 33555072 en : 1
02-10 20:12:36.642: D/SensorManager(29335): registerListener :: 5, TMD4903 Proximity Sensor, 200000, 0,
02-10 20:12:36.652: D/SensorManager(29335): Proximity, val = 8.0 [far]
02-10 20:12:36.662: I/Sensors(3467): ProximitySensor - 8(cm)
02-10 20:12:36.672: D/SensorManager(29335): Proximity, val = 8.0 [far]
02-10 20:12:41.752: I/Sensors(3467): Proximity old sensor_state 33554560, new sensor_state : 33554432 en : 0
02-10 20:12:41.822: I/Sensors(3467): Proximity old sensor_state 33554432, new sensor_state : 33554560 en : 1
02-10 20:12:41.842: D/SensorManager(29335): registerListener :: 5, TMD4903 Proximity Sensor, 200000, 0,
02-10 20:12:41.842: D/SensorManager(29335): Proximity, val = 8.0 [far]
02-10 20:12:41.872: I/Sensors(3467): ProximitySensor - 8(cm)
02-10 20:12:41.872: D/SensorManager(29335): Proximity, val = 8.0 [far]
02-10 20:12:50.482: I/Sensors(3467): ProximitySensor - 0(cm)
02-10 20:12:50.482: D/SensorManager(29335): Proximity, val = 0.0 [close]
02-10 20:12:50.482: D/DisplayPowerController(3467): [sensor] setProximitySensorEnabled::registerListener
02-10 20:12:50.482: D/SensorManager(3467): registerListener :: 5, TMD4903 Proximity Sensor, 200000, 0,
02-10 20:12:50.482: D/SensorManager(3467): Proximity, val = 0.0 [close]
02-10 20:12:50.482: D/PowerManagerService(3467): [s] DisplayPowerCallbacks : onProximityPositive()
02-10 20:12:50.482: D/PowerManagerService(3467): [s] DisplayPowerCallbacks : onProximityPositive()
Samsung Duos: 上記の 8.0 とは異なり、0.0 と 5.0 では変動値が異なります
この問題を解決するためにうまく正確に適用できる他の方法または順列の組み合わせは何ですか?
センサーが異なるためですか?GP2A近接センサーとAPDS-9930/QPDS-T930近接&光?
すでにかなりの時間を費やしました..無駄に