首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅在三星设备中发布Android邻近传感器问题

仅在三星设备中发布Android邻近传感器问题
EN

Stack Overflow用户
提问于 2016-02-10 15:02:55
回答 1查看 4.2K关注 0票数 10

避免问题的特定场景:

三星设备的活动行为是不同的,每次检测到变化时,在邻近的情况下,只能在三星设备上打电话给onPause()/onResume()

我当时正在清除onPause()中的近距离传感器,这导致了三星设备特有的行为。

希望这能为面临这一切的人节省点时间。我删除了从onPause()中清除邻近侦听器的调用,现在它在上述设备上按预期工作。

更新:

下面提到的并不是唯一的问题,接近传感器并不是一贯的行为方式。另一个问题是国际合作组织:

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

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

可能相关的信息:

代码语言:javascript
复制
mWakeLock = mPowerManager.newWakeLock(field, getLocalClassName()); 

哪里

代码语言:javascript
复制
field = PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK or 32

我的邻近传感器代码仅在上不正确地工作

  1. 三星GT-I 9082 Android 4.2.2 (API 17) duos grand
  2. 三星SM-G925I安卓5.1.1 (API 22) s6 edge

代码:

代码语言:javascript
复制
 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边缘-

代码语言:javascript
复制
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()

三星Duos:波动值分别为0.0和5.0,与上文8.0不同

  • 有什么其他的方法或排列组合可以成功和准确地应用于解决这一问题?
  • 这是因为不同的传感器: GP2A接近传感器和APDS-9930/QPDS 930接近和轻?

已经花了不少时间在it..in上

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-29 10:49:11

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

  1. 使用onWindowFocusChanged。这对我来说是有意义的,我与onPause()相关的实现也成功地遵循了同样的原则。 资料来源和解释:活动-暂停-处理-焦点 帮助我的是:而不是在onPause()中;@Override void onWindowFocusChanged(boolean ){ super.onWindowFocusChanged( hasFocus);if(!hasFocus){ clearProximityListeners();}}
  2. 发出74464:Activity#onPause调用而没有Activity#onResume,或者Context#registerReceiver是否失败?
  3. 更多参考资料: 从完全不同的角度来看,unregister...Otto总线上的Bug ..。报价:对我们来说,这只出现在三星设备上。在快速搜索之后..。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35318649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档