Проблема с датчиком приближения Android только в устройствах Samsung

Конкретный сценарий, чтобы избежать проблем:
Поведение активности в устройствах Samsung отличалось тем, что каждый раз, когда обнаруживалось изменение, для близости это приводило к вызовуonPause()/onResume() ТОЛЬКО на устройствах SAMSUNG.

Я очищал датчики приближения вonPause() что привело к поведению, уникальному для устройств Samsung.

Надеюсь, это сэкономит время для тех, кто сталкивается с этим. Я удалил вызов очистки слушателей близости отonPause() и теперь он работает, как ожидалось, на упомянутых устройствах.

ОБНОВИТЬ:

То, что упомянуто ниже, не единственная проблема, датчик приближения не всегда ведет себя таким образом. Другая проблема - это л-о-с:

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) [великий дуэт]
2. Samsung SM-G925I Android 5.1.1 (API 22) [край s6]

код:

 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 не двигая его.
Подобно:
Samsung 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: значения колебаний отличаются на 0,0 и 5,0 в отличие от 8,0 выше

Какие есть другие способы или комбинации перестановок, которые можно успешно и точно применять для решения этой проблемы?

Это из-за разных датчиков; Датчик приближения GP2A и APX-9930 / QPDS-T930 Proximity & Light?

уже потратил немало времени на это .. зря

Ответы на вопрос(1)

Ваш ответ на вопрос