2010-06-07 54 views
1

我只是想知道我是否正确地做到这一点;当手机正在睡觉,我编程的通知应用程序,它可以显示通知Android WakeLock和KeyGuard

  1. 禁用键盘保护锁
  2. AQUIRE唤醒锁
  3. 显示通知
  4. 超时和重新启用键盘保护和释放
  5. 设置闹钟wakelock是用户不触碰屏幕。 4.1用户触摸屏幕,我禁用计时器。别做什么了。完成并完成 4.2用户不要触摸屏幕,所以重新启用键盘锁并释放唤醒锁。电话再次睡

基本上我想知道点4.1最。取消警报的待定内容,什么也不做?还是应该以某种方式处理设置的键盘锁和唤醒锁?

+0

http://stackoverflow.com/questions/3621599/wake-android-device-up/10179932#10179932 – Yar 2012-04-16 18:59:37

回答

0

锁是全局性的,当一个应用程序获取它时,它将关闭直到锁被释放。 您应该始终重新启用锁。否则系统不会去睡觉或锁在家中或任何其他应用程序

编辑:我真的不舒尔如何与键盘锁的工作原理:/

2

的技巧来实现自己的键盘锁,更换似乎是如下: -

  • 在onCreate方法,您不要禁用键盘锁,但用户可以所以你需要小心意外触摸在这一点上与屏幕互动。

    getWindow().addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED | 
         LayoutParams.FLAG_TURN_SCREEN_ON | LayoutParams.FLAG_KEEP_SCREEN_ON); 
    
    mKeyguardManager = (KeyguardManager)mContext.getSystemService(Context.KEYGUARD_SERVICE); 
    mKeyguardLock = mKeyguardManager.newKeyguardLock(TAG); 
    
  • 如果用户执行一些动作来表示他们要进行全面的互动,那么我们就可以禁用键盘锁,继续前进。

    mKeyguardLock.disableKeyguard(); mKeyguardManager.exitKeyguardSecurely(null);

  • 如果他们不这样做,那么由于键盘锁没有被禁用,你应该不需要做任何事情更多,只是完成您的活动

完蛋了,但我还在测试它。所以,我不是100%确定的。

1

我知道这个问题是旧的,但API清楚地表明,以编程方式尝试获取键盘锁解除已被弃用。

正确的战略是,在你的活动oncCreate方法,有:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

希望这会帮助别人。

+0

确实在setContentView()之前添加了这段代码,除非它不会像按照那样工作。 – Harpreet 2013-03-20 04:48:49