Par*_*rth 9 android proximity android-sensors samsung-mobile proximitysensor
避免问题的具体方案:
三星设备中的活动行为与每次检测到更改时的行为不同,对于接近,它onPause()/onResume()仅导致在SAMSUNG设备上进行呼叫.
我正在清理接近传感器onPause(),导致三星设备独有的行为.
希望这可以为任何正面对此的人节省一些时间.我删除了清除邻近侦听器的调用,onPause()现在它在所提到的设备上按预期工作.
更新:
下面提到的不是唯一的问题,接近传感器不一致地以这种方式表现.另一个问题是一个地方:
if (!mWakeLock.isHeld()) mWakeLock.acquire();
随机地,if()因此mWakeLock.acquire()并不总是调用所提及的设备的返回false .
可能相关的信息:
mWakeLock = mPowerManager.newWakeLock(field, getLocalClassName());
Run Code Online (Sandbox Code Playgroud)
哪里
field = PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK or 32
Run Code Online (Sandbox Code Playgroud)
我的接近传感器代码仅在
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);
Run Code Online (Sandbox Code Playgroud)
问题:
两个设备上的接近传感器返回的记录值会有波动,即使我们将手放在手机上持续几秒钟也是如此; 10-15没有移动它.
喜欢:
三星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()
Run Code Online (Sandbox Code Playgroud)
三星Duos:与上面的8.0不同,波动值在0.0和5.0之间不同
有哪些其他方法或排列组合可以成功和准确地应用于解决此问题?
是因为传感器不同; GP2A接近传感器和APDS-9930/QPDS-T930接近和光?
我已经花了很长时间才这样做......徒劳无功
事实证明,这是三星设备的一个已注册问题,以下是一系列页面,可以帮助任何面临此问题的人:
使用onWindowFocusChanged。这对我来说很有意义,我与 onPause() 相关的实现也成功地遵循了同样的原则。
来源和解释:activity-onpause-to-handle-focus
对我有帮助的是:而不是 in onPause();
@Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if(!hasFocus){clearProximityListeners(); } }
问题 74464:在没有 Activity#onResume 的情况下调用 Activity#onPause,或者 Context#registerReceiver 失败
更多参考:
从完全不同的方面来看,注销上的错误...奥托总线..引用:对于我们来说,这只出现在三星设备上。经过快速搜索后,...
如果答案更清晰,请编辑、更正、改进答案。希望它可以节省一些时间。
| 归档时间: |
|
| 查看次数: |
1693 次 |
| 最近记录: |