我正在根据用户的巨大请求更新我的应用程序。我的应用程序在发生一些事情后打开屏幕,现在我正在集成"口袋模式"功能。因此,基本上,如果用户口袋里有手机或设备,我想通过接近传感器检测到这一点,并根据这一点采取行动。但是我遇到了很多麻烦。。
所以我像往常一样注册传感器和一切。我想指出的一件事是,我告诉PowerManager对象注册为Proximity_Screen_Off_Wake_Lock。这意味着,每次检测到附近有东西时,屏幕都会自动关闭。
powerManager.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, "ProximityScreenOff");
基本上,当设备在桌子上,我把手指移到传感器上时,屏幕就会按预期关闭。
当我的活动启动时,问题就开始了,我已经把手指放在传感器上了(或者在口袋里——这是一样的)。所以传感器并没有检测到手机附近的任何东西。如果我把手指移开一点,屏幕就会再次打开。
我能做些什么吗,这样我就能得到我想要的行为——也就是说,当手机已经在口袋里的时候,把屏幕关掉?
您可以使用布尔变量来管理它。
也就是说,如果调用了onSensorChanged的near事件,那么n则只调用了far事件。
boolean isNearCalled=false;
传感器更改时无效(){
if(near sensitivity) {
isNearCalled=true;
} else if(Distance sensitivity && isNearCalled) {
// Do stuff for far like screen off
isNearCalled= false;
}
}