解锁android无法使用FLAG_DISMISS_KEYGUARD

时间:2013-11-24 23:08:29

标签: android api

这是我的代码,复制并粘贴其他主题关于解锁一个Android .. 我不知道为什么这不起作用! :(

目标是:当接近传感器为HI时,设备自行解锁。

(更多信息:Using proximity sensor lock and unlock a home screen

传感器工作正常,但手机仍然锁定:(

我没有pin锁或其他,我在nexus 5上部署。

private SensorManager mSensorManager;       
private Sensor ProxymitySensor ;
private ToneGenerator tg = new ToneGenerator(AudioManager.STREAM_NOTIFICATION, 100);

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_unlock);

    mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);  
    ProxymitySensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
    mSensorManager.registerListener(this, ProxymitySensor,SensorManager.SENSOR_DELAY_NORMAL);


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.unlock, menu);
    return true;
}


  @Override
  public final void onSensorChanged(SensorEvent event) {
    Object sensordata = event.values[0];
    // Do something with this sensor data.
    if (event.values[0] == event.sensor.getMaximumRange()){     
                    PlaySound();
                    UnlockMe();
    }
  }

  private void PlaySound() {           
         tg.startTone(ToneGenerator.TONE_PROP_BEEP);
  }

  private void UnlockMe(){
      // try to unlock the phone 
       getWindow().addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD);
       getWindow().addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
       getWindow().addFlags(LayoutParams.FLAG_TURN_SCREEN_ON);         
       // nothing happen :( 
  }



  @Override
  public void onAccuracyChanged(Sensor arg0, int arg1) {
    // TODO Auto-generated method stub          
  }

这里是完整的文件:http://pastebin.com/CCv2W70Y

我的fone已被锁定,如果我把手放在上面,我会听到哔哔声,仅此而已:( LocgCat不说anityng ...

任何想法?

1 个答案:

答案 0 :(得分:4)

你错过了全屏旗帜。

来自Google的文档:

  

public static final int FLAG_SHOW_WHEN_LOCKED

     

窗口标志:屏幕锁定时显示窗口的特殊标志。这将使应用程序窗口优先于密钥保护或任何其他锁定屏幕。可以与FLAG_KEEP_SCREEN_ON一起使用,在显示键保护窗口之前直接打开屏幕并显示窗口。可与FLAG_DISMISS_KEYGUARD一起使用,以自动完全取消非安全密钥保护。 此标志仅适用于最顶层的全屏窗口

强调我的。