仅在三星设备中存在 Android 接近传感器问题

标签 android android-sensors samsung-mobile proximity proximitysensor

具体场景避免问题:
三星设备中 Activity 的行为有所不同,每次检测到变化时,对于接近度,它都会导致调用 onPause()/onResume() 仅在三星设备上。

我在 onPause() 中清除了接近传感器,这导致了三星设备独有的行为。

希望这可以为遇到此问题的任何人节省一些时间。我从 onPause() 中删除了清除邻近监听器的调用,现在它在上述设备上按预期工作。

更新:

下面提到的并不是唯一的问题,接近传感器并不总是以这种方式运行。另一个问题是 l-o-c:

if (!mWakeLock.isHeld()) mWakeLock.acquire();

对于上述设备,if() 随机返回 false,因此 mWakeLock.acquire() 并不总是被调用。

可能相关的信息:

mWakeLock = mPowerManager.newWakeLock(field, getLocalClassName()); 

在哪里

field = PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK or 32

我的接近传感器代码仅在
上不正确 1. 三星 GT-I9082 Android 4.2.2 (API 17) [duos grand]
2. 三星 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 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 Duo:与上面的 8.0 不同,波动值在 0.0 和 5.0 上不同

  • 还有哪些方法或排列组合可以成功准确地解决这个问题?

  • 是不是传感器不同? GP2A 接近传感器和 APDS-9930/QPDS-T930 接近和光 ?

已经花了很多时间..徒劳

最佳答案

事实证明这是三星设备的一个注册问题,这里是一组页面,可以帮助任何面临此问题的人:

  1. 使用 onWindowFocusChanged .这对我来说很有意义,并且我与 onPause() 相关的实现在遵循相同的情况下是成功的。
    来源和解释:activity-onpause-to-handle-focus
    对我有什么帮助:而不是在 onPause() 中;

    @覆盖 public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); 如果(!有焦点){ clearProximityListeners(); } }

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

  3. 更多引用:
    从完全不同的方面来看,注销时存在 Bug...Otto bus.. 引用:For us, this only appears on Samsung devices. And after a quick search,...

如果答案更清晰,请编辑、更正、改进答案。希望能节省一些时间。

关于仅在三星设备中存在 Android 接近传感器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35318649/

相关文章:

android - 如何在flutter中将ImageCache保存到磁盘?

javascript - 删除 Android 应用程序 WebView 中的导航栏

android - 使用麦克风作为声音冲击传感器

android - 为什么当可穿戴设备处于环境模式时不调用 onSensorChange

在三星默认浏览器上测试网站

android - Facebook SDK : Why does Profile. getCurrentProfile() 总是第一次返回 null?

Android 自然传感器方向帮助

android - 我如何为所有 Android 设备开发应用程序?我可以在适用于大多数设备的模拟器上设置什么设置?

android - 尝试在空对象引用上调用虚拟方法 'void android.widget.Editor$SelectionModifierCursorController.hide()'

android - PCM 流/麦克风卡顿