0

我想知道是否有人知道如何让您的应用程序在解锁屏幕时显示。我有一个应用程序,用户打开蓝牙设备,连接到手机,用户应该看到一个用户界面。让他们寻找应用程序或使用通知菜单不是一个可行的选项(工作太多,而不是明显的行为)。用户解锁屏幕后会显示Android活动

的问题是: 当屏幕解锁: - 你可以弹出从后台服务活动时,蓝牙连接到设备 - 用户是幸福的,因为UI就在那里

当屏幕被锁定: - 应用程序被启动,但被破坏 - 用户解锁手机并没有什么是有,但主屏幕

一个解决将禁用键盘锁,当应用程序被唤醒了,但核选项一个非常糟糕的选择。

PS: 我知道标准的Android假设是你不应该这样做。在正常情况下,这种行为没有问题,但在这种情况下,我明确地做了一些事情,我希望手机能够响应,而无需为用户添加更多工作。根据Google的指导原则,如果您不喜欢这种行为,可以选择关闭此功能或者无法使用该应用程序。


一些更多的细节,所以看这多一点的问题后,并不一定是你不能在运行时的屏幕被锁定,解锁并期望它会等活动。如果你这样做了以下这确实工作:

  • 锁定您的设备
  • 运行通过Eclipse的应用程序,而手机被锁定/关闭
  • 解锁,它会等着你

但是在Activity已经在运行的情况下,我正在打开一个新窗口(这恰好是一个透明的窗口,说你已经连接并询问他们想做什么)。问题是,它就会被杀死

 
E/BackgroundPOPUP(2436): POPUP created via onCreate! 
I/UsageStats( 78): Unexpected resume of com.test.POPUP while already resumed in com.android.launcher2 
E/BackgroundPOPUP(2436): POPUP onPause 
E/MyBacgrkoundService(2436): POPUP active! 
I/ActivityManager( 78): Displayed activity com.test.POPUP/.PopupTest: 175 ms (total 175 ms) 
I/UsageStats( 78): Something wrong here, didn't expect com.android.launcher2 to be paused 
E/BackgroundPOPUP(2436): POPUP has ended through a call to onStop 
E/BackgroundPOPUP(2436): POPUP has ended through a call to onDestroy 

这里的设置如下:

  • MyBackgroundService是处理蓝牙状态(等待连接的serivce,如果用户启动应用开启蓝牙,等等。)。它会触发运行ViewFlipper的弹出BackgroundPOPUP活动。通过意图开始MyBackgroundService开始BackgroundPOPUP
  • BackgroundPOPUP是半透明的主题活动(Theme.Translucent要准确),它显示了一些指令ViewFlipper,并提出一些选项

回答

0

可以使用KeyGuardManager方法公共无效exitKeyguardSecurely(KeyguardManager。 OnKeyguardExitResult回调)

安全地退出keyguard。使用 情况下,这个API是,经过 禁用键盘锁,您的应用程序, 这是获准 禁用键盘锁和展示的信息 数量有限视为 安全无用户越来越近了 键盘锁,需要导航到 这是不安全的查看 没有超过键盘保护。 如果键盘安全, 会弹出 键盘锁的解锁屏幕。参数callback让我们 知道操作是否成功 ,并且启动 是安全的,一旦用户的 超过了键盘锁,任何通常为 认为是安全的。

我不是100%确定这符合你想要做的。

另一种方法是检查键盘锁是当你的应用程序正在苏醒使用公共布尔inKeyguardRestrictedInputMode(上),如果它是来自直到键盘锁解锁

+0

感谢醒来停止你的应用程序!我不知道inKeyguardRestrictedInputMode(),这有帮助。 我在上面添加了一些细节,所以我希望能够在用户使用它时等待用户的活动窗口,但它似乎正在被杀死。我认为你根本无法完成这项活动,但当你新建一个流程时,它确实有效。 这可能是因为它是一个透明的窗口,所以我会检查。 Android在某些情况下似乎对待它们的方式会有所不同,所以也许这是真正的问题。 – Dave 2010-03-31 16:20:40

+0

玩了一会之后,我无法找到一种天真的工作方式。即您说'startActivity'并且与屏幕是否开启/锁定/关闭无关,用户将看到活动(可能是他们解锁屏幕时)。 如果屏幕关闭/锁定,活动将被破坏,因此我所做的是触发静态方法,检查是否启用了键盘锁。如果是,则等待用户解锁屏幕以发送startActivity意图。现在我正在使用计时器,但我会稍微切换到ACTION_USER_PRESENT。 – Dave 2010-04-03 22:41:09