当getSpeed()返回大于20 m / s的值时,我正在尝试使用systemLock()来锁定设备。
public void locationUpdated(LocationProvider provider, Location location)
{
if(location.isValid())
{
float speed = location.getSpeed();
// Information to be displayed on the device
StringBuffer sb = new StringBuffer();
sb.append("\n");
sb.append("Speed : ");
sb.append(speed);
sb.append(" m/s");
if(speed < 20){
appMan = ApplicationManager.getApplicationManager();
appMan.lockSystem(true);
}else{
}
MyApp.this.updateLocationScreen(sb.toString());
}
}
我有一个RichTextField,我可以在if / else语句中成功使用.settext()来更改RichTextField的文本,所以我必须使用lockSystem()错误。
修改
if(speed > 20 || Double.isNaN(speed)){
requestForeground();
appMan = ApplicationManager.getApplicationManager();
appMan.lockSystem(true);
}else{
}
答案 0 :(得分:2)
第一眼就是:
在getSpeed()返回值大于 20 m / s时锁定设备。
和
if (speed < 20) {
appMan = ApplicationManager.getApplicationManager();
appMan.lockSystem(true);
}
答案 1 :(得分:1)
来自Location
上的文档public float getSpeed()
返回:
以m / s为单位的当前地面速度 如果速度未知,则终端或Float.NaN
在Java中,与Float.NaN的任何比较都将返回false,因此如果您的设备以速度返回NaN,则不会执行锁定屏幕代码块。您可能希望在条件中添加Double.isNaN(speed)
。