Android 接近传感器 [独特问题 - 传感器未检测到手机附近已经存在的物体]

Posted

技术标签:

【中文标题】Android 接近传感器 [独特问题 - 传感器未检测到手机附近已经存在的物体]【英文标题】:Android Proximity Sensor [Unique Issue - Sensor Not Detecting Objects Already Near The Phone] 【发布时间】:2016-04-12 07:25:42 【问题描述】:

我正在根据用户的巨大请求更新我的应用程序。发生某些事情后,我的应用程序会打开屏幕,现在我正在集成“袖珍模式”功能。所以基本上,如果用户在他/她的口袋里有手机或设备,我想通过接近传感器检测到这一点并据此采取行动。但是我遇到了很多麻烦..

所以我像往常一样注册传感器和一切。我想指出的一件事是我告诉 PowerManager 对象注册为 Proximity_Screen_Off_Wake_Lock。这意味着每次检测到附近有物体时屏幕都会自动关闭。

powerManager.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, "ProximityScreenOff");

基本上,当设备放在桌子上并且我将手指移到传感器上时,屏幕会按预期关闭。

当我的活动启动并且我已经将手指放在传感器上(或者放在口袋里 - 相同)时,问题就开始了。所以传感器不会检测到任何已经在手机附近的东西。如果我将手指移开一点,屏幕将再次打开。

有什么我可以做的,所以我会得到我想要的行为 - 即当手机已经放在口袋里时关闭屏幕?

【问题讨论】:

【参考方案1】:

您可以使用布尔变量来管理它。

也就是说,如果 onSensorChanged 的​​近事件被调用,那么 n 则只有远事件被调用。

boolean isNearCalled =false;

void onSensorChanged()

       if(near sensitivity)  
                 isNearCalled=true;
       else if(Distance sensitivity && isNearCalled) 
                // Do stuff for far like screen off
                isNearCalled= false;
      

【讨论】:

以上是关于Android 接近传感器 [独特问题 - 传感器未检测到手机附近已经存在的物体]的主要内容,如果未能解决你的问题,请参考以下文章

为啥将android磁场传感器值转换为地球坐标系时X坐标值如此接近零?

在 Unity 中触发接近传感器时出现问题

Android:使用传感器实时检测眼睛的运动

尽管文档说了啥,但复合 Android 传感器不存在

如何检测接近传感器?

接近传感器精度