10

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

+0

Siehe: http://stackoverflow.com/questions/33405259/why-sensors-value-is-different-in-different-android-devices/33405362#33405362 –

+0

Genauigkeit ist nicht mein Problem, entweder die Frage war falsch verstanden oder ich habe nicht verstanden, was Sie sagen wollen, können Sie – user2450263

+0

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. –

Antwort

2

diese So stellt sich heraus, ist ein eingetragenes Problem mit Samsung-Geräte, hier ist eine Sammlung von Seiten, die jeder dieser zugewandt helfen könnte:

  1. Verwenden Sie onWindowFocusChanged. Dies ergab für mich Sinn und meine Implementierung in Bezug auf onPause() war erfolgreich bei der Verfolgung derselben.
    Quelle und Erklärung: activity-onpause-to-handle-focus
    Was mir geholfen hat: statt in onPause();

    @Override public void onWindowFocusChanged (boolean hasFocus) { super.onWindowFocusChanged (hasFocus); if (! HasFocus) { clearProximityListeners(); } }

  2. Issue 74464:Activity#onPause called without Activity#onResume, or can Context#registerReceiver failed

  3. Weitere Referenz:
    Von einem ganz anderen Aspekt, Bug auf austragen ... Otto Bus .. Zitat: For us, this only appears on Samsung devices. And after a quick search,...

Bitte bearbeiten, korrigieren Verbessere die Antwort, wenn es noch mehr Klarheit gibt .. hoffe, es spart Zeit.