黑莓 - systemLock()无法正常工作

时间:2011-09-05 16:11:40

标签: api blackberry java-me

当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{

                }

2 个答案:

答案 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)