一些用户一直在问我我的应用程序的Android锁定屏幕小部件-我相信他们想要一个保留在锁定屏幕上并允许他们与该应用程序交互的小部件。
我至今尚未找到任何官方文档-我发现的唯一一件事就是将主屏幕小部件放置在锁定屏幕上的应用程序。
关于我在哪里了解有关构建真正的锁屏小部件的更多信息?
一些用户一直在问我我的应用程序的Android锁定屏幕小部件-我相信他们想要一个保留在锁定屏幕上并允许他们与该应用程序交互的小部件。
我至今尚未找到任何官方文档-我发现的唯一一件事就是将主屏幕小部件放置在锁定屏幕上的应用程序。
关于我在哪里了解有关构建真正的锁屏小部件的更多信息?
Answers:
锁屏互动很难。Android允许使用两个窗口标志(FLAG_SHOW_WHEN_LOCKED和FLAG_DISMISS_KEYGUARD)进行基本操作。FLAG_SHOW_WHEN_LOCKED的工作原理非常一致,即使启用了安全性,它也会显示在锁定屏幕的顶部(不会绕过安全性,您无法切换到另一个非FLAG_SHOW_WHEN_LOCKED窗口)。
如果您只是做一些临时性的事情,例如在播放音乐或类似音乐时,您可能会没事。如果您尝试创建自定义锁屏,则在所有不同的android平台上都会有很多异常的交互。(“帮助!如果不重新启动HTC手机,我将无法关闭闹钟”)。
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html
FLAG_SHOW_WHEN_LOCKED
窗口标志:用于锁定屏幕时显示窗口的特殊标志。
FLAG_DISMISS_KEYGUARD
窗口标志:设置该窗口后,仅当它不是安全锁键盘锁时,才会导致键盘锁被关闭。由于安全性不需要这样的键盘锁,因此如果用户导航到另一个窗口(与FLAG_SHOW_WHEN_LOCKED相反,FLAG_SHOW_WHEN_LOCKED则只会暂时隐藏安全和不安全的键盘锁,但确保它们在用户移至其他位置时再次出现),它将永远不会再次出现。另一个不会隐藏它们的UI)。如果键盘锁当前处于活动状态并且是安全的(需要解锁图案),则除非看到FLAG_SHOW_WHEN_LOCKED也已设置,否则用户仍然需要在看到此窗口之前对其进行确认。常数值:4194304(0x00400000)
官方锁屏小部件文档在这里
我必须为我的项目实现一个锁屏小部件。在此过程中,我积累了一些资源。
AppWidget
该类来执行此操作。AppWidgetHost
Android API中的类使锁屏成为窗口小部件的主机。我不知道该怎么做,但是有一些现有的实现,例如mylockandroid(下面的链接)。http://code.google.com/p/mylockforandroid/ (注意,此代码适用于旧版Android。Android4.2及更高版本已内置锁屏小部件支持)
http://mylockandroid.blogspot.com/2010/03/widget-lockscreen-beta-11-r2.html