określonego scenariusza, aby uniknąć problemów:
Zachowanie na aktywność w urządzeniach Samsung różnił się w sposób, który za każdym razem nastąpiła zmiana wykryta, na bliskości, to spowodowało wywołanie onPause()/onResume()
TYLKO na urządzeniach SAMSUNG.Android problem czujnik zbliżeniowy tylko w urządzeniach Samsung
Czyściłem czujniki zbliżeniowe w onPause()
, co spowodowało zachowanie unikalne dla urządzeń Samsung.
Mam nadzieję, że zaoszczędzi to trochę czasu dla każdego, kto stoi w obliczu tego. Usunąłem rozmowę usuwania słuchaczy zbliżeniowych z onPause()
i teraz działa ona zgodnie z oczekiwaniami na wymienionych urządzeniach.
UPDATE:
Co jest wymienione poniżej nie jest jedynym problemem, czujnik zbliżeniowy nie konsekwentnie zachowywać się w ten sposób. Innym problemem jest L-O-C:
if (!mWakeLock.isHeld()) mWakeLock.acquire();
losowo na if()
powraca sztuczne dla wspomnianych urządzeń stąd mWakeLock.acquire()
nie zawsze jest wywoływana.
ewentualnie istotne informacje:
mWakeLock = mPowerManager.newWakeLock(field, getLocalClassName());
gdzie
field = PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK or 32
Mój kod czujnik zbliżeniowy działa nieprawidłowo tylko na
1. Samsung GT-I9082 z Androidem 4.2.2 (API 17) [duos grand]
2. Samsung SM-G925I Android 5.1.1 (API 22) [S6 krawędź]
kod:
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);
problem: Zapisane wartości zwracane przez czujnik zbliżeniowy na obu urządzeniach niestabilne, nawet gdy kładziemy rękę na telefony stale przez kilka sekund; 10-15 bez przenoszenia.
jak:
Samsung 6 edge-
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: wartości wahań różnią się od 0,0 do 5,0 w przeciwieństwie do 8,0 powyżej
Co są inne sposoby lub permutacji kombinację, która może być zastosowane pomyślnie i dokładnie, aby rozwiązać ten problem?
Czy to z powodu różnych czujników; Czujnik zbliżeniowy GP2A i APDS-9930/QPDS-T930 Proximity & Światło?
już spędził trochę czasu na it..in próżny
Patrz: http://stackoverflow.com/questions/33405259/why-sensors-value-is-different-in-different-android-devices/33405362#33405362 –
dokładność nie jest mój problem, czy to pytanie zostało niezrozumiany lub nie rozumiem, co chcesz powiedzieć, czy możesz rozwinąć – user2450263
Uważam, że poza 1 bit wartości sens czujnika zbliżeniowego zależy od ODM, więc fakt, że wartość zmienia się przy zakrywaniu/odkrywaniu, oznacza tylko jest to szczegół implementacji, a nie "nieprawidłowe" zachowanie. –