我想知道是否有人知道如何在您解锁屏幕时显示您的应用程序。我有一个应用程序,用户打开蓝牙设备,它连接到手机,用户应该看到一个 UI。让他们寻找应用程序或使用通知菜单不是一个可行的选择(工作量太大,行为不明显)。
问题是:当屏幕解锁时: - 当蓝牙连接到设备时,您可以从后台服务中弹出活动 - 用户很高兴,因为 UI 就在那里
当屏幕被锁定时: - 应用程序启动但被破坏 - 用户解锁手机,除了主屏幕什么都没有
一种解决方法是在应用程序被唤醒时禁用键盘保护,但核选项是一个非常糟糕的选项。
PS:我知道标准的 Android 假设是你不应该这样做。在正常情况下,这种行为很好,但在这种情况下,我明确地做了一些我希望手机做出响应的事情,而不会给用户增加更多的工作要做。根据 Google 的指南,如果您不喜欢这种行为,您可以选择将其关闭,或者您不能使用该应用程序。
更多细节,所以在多看一点之后,问题不一定是当屏幕锁定、解锁并期望它等待时你不能运行活动。如果您执行以下操作,那确实有效:
- 锁定您的设备
- 在手机锁定/关闭时通过 Eclipse 运行应用程序
- 解锁它会等你
但是如果 Activity 已经在运行并且我正在打开一个新窗口(它恰好是一个透明的窗口,说你已经连接并询问他们想要做什么)。问题是它会被杀死
E/BackgroundPOPUP(2436):通过 onCreate 创建的弹出窗口! I/UsageStats(78):com.test.POPUP 意外恢复,而 com.android.launcher2 中已经恢复 E/BackgroundPOPUP(2436):暂停时弹出 E/MyBacgrkoundService(2436):弹出窗口激活! I/ActivityManager(78):显示的活动 com.test.POPUP/.PopupTest:175 毫秒(总共 175 毫秒) I/UsageStats(78):这里出了点问题,没想到 com.android.launcher2 会被暂停 E/BackgroundPOPUP(2436): POPUP 已通过调用 onStop 结束 E/BackgroundPOPUP(2436): POPUP 已通过调用 onDestroy 结束
这里的设置如下:
MyBackgroundService
是处理蓝牙状态的服务(等待连接,如果用户启动应用程序则打开蓝牙等)。它触发一个BackgroundPOPUP
运行 ViewFlipper 的弹出活动。MyBackgroundService
从BackgroundPOPUP
一个意图开始。BackgroundPOPUP
是一个带有半透明主题的活动(确切地说是 Theme.Translucent),它显示了一个带有一些说明的 ViewFlipper 并提供了一些选项