Spezifische Szenarios Probleme zu vermeiden:
Verhalten für Aktivität in Samsung-Geräten in der Art und Weise anders war, dass jedes Mal, wenn eine Änderung festgestellt, für die Nähe war, führte es in einem Aufruf onPause()/onResume()
NUR auf SAMSUNG-Geräten.Android Annäherungssensor Problem nur in Samsung-Geräten
Ich löschte die Näherungssensoren in onPause()
, was zu einem Verhalten führte, das für Samsung-Geräte einzigartig ist.
Ich hoffe, das spart etwas Zeit für jeden, der damit konfrontiert ist. Ich entfernte den Anruf des Löschens von Näherungshörern von onPause()
und jetzt funktioniert es wie erwartet auf den erwähnten Geräten.
UPDATE:
Was unten erwähnt ist nicht das einzige Problem ist, wird der Annäherungssensor nicht konsequent auf diese Weise verhalten. Das andere Problem ist ein l-o-c:
if (!mWakeLock.isHeld()) mWakeLock.acquire();
Randomly, die if()
false zurückgibt für die genannten Geräte wird daher mWakeLock.acquire()
nicht immer genannt.
möglicherweise relevante Informationen:
mWakeLock = mPowerManager.newWakeLock(field, getLocalClassName());
wo
field = PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK or 32
Code Meine Näherungssensor falsch nur auf
1. Samsung GT-I9082 Android 4.2.2 (API funktioniert 17) [duos grand]
2. Samsung SM-G925I Android 5.1.1 (API 22) [s6 Rand]
der Code:
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);
das Problem: protokollierten Werte durch Näherungssensor auf beiden Geräten zurück schwanken, auch wenn wir mit der Hand über die Telefone platzieren ständig für ein paar Sekunden; 10-15 ohne es zu bewegen.
Like:
Samsung 6 Kanten-
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: Die Fluktuationswerte unterscheiden sich in 0.0 und 5.0 im Gegensatz zu 8.0 über
Was gibt es andere Möglichkeiten oder Permutation-Kombinationen, die sein kann, erfolgreich und genau angewendet, um dieses Problem zu lösen?
Liegt es an verschiedenen Sensoren; GP2A Proximity Sensor und APDS-9930/QPDS-T930 Proximity & Licht?
bereits ausgegeben haben einige Zeit auf it..in vergeblich
Siehe: http://stackoverflow.com/questions/33405259/why-sensors-value-is-different-in-different-android-devices/33405362#33405362 –
Genauigkeit ist nicht mein Problem, entweder die Frage war falsch verstanden oder ich habe nicht verstanden, was Sie sagen wollen, können Sie – user2450263
erarbeiten Ich denke es ist, dass jenseits 1 Bit Wert die Bedeutung des Näherungssensors bis zum ODM ist, so dass der Wert variiert, während abgedeckt/aufgedeckt bedeutet das ist ein Implementierungsdetail und kein "inkorrektes" Verhalten. –