Android Lock Screen Widget

AndroidAndroid WidgetLockscreen

Android Problem Overview


A few users have been asking me Android lock screen widgets for my app - I believe they want a widget that stays on their lock screens and allows them to interact with the app.

I haven't been able to find any official documentation for this - the only thing I found was apps that will take home screen widgets and put them on the lock screen for you.

Any clues on where I learn more about building true lock-screen widgets?

Android Solutions


Solution 1 - Android

Lock screen interaction is difficult. Android allows basic operations with two window flags (FLAG_SHOW_WHEN_LOCKED and FLAG_DISMISS_KEYGUARD). FLAG_SHOW_WHEN_LOCKED works pretty consistently in that it will show on top of the lock screen even when security is enabled (the security isn't bypassed, you can't switch to another non-FLAG_SHOW_WHEN_LOCKED window).

If you're just doing something temporary, like while music is playing or similar, you'll probably mostly be okay. If you're trying to create a custom lock screen then there's a lot of unusual interactions on all the different android platforms. ("Help! I can't turn off my alarm without rebooting my HTC phone").

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

> Window flag: special flag to let windows be shown when the screen is > locked.

FLAG_DISMISS_KEYGUARD

> Window flag: > when set the window will cause the keyguard to be > dismissed, only if it is not a secure > lock keyguard. Because such a keyguard > is not needed for security, it will > never re-appear if the user navigates > to another window (in contrast to > FLAG_SHOW_WHEN_LOCKED, which will only > temporarily hide both secure and > non-secure keyguards but ensure they > reappear when the user moves to > another UI that doesn't hide them). If > the keyguard is currently active and > is secure (requires an unlock pattern) > than the user will still need to > confirm it before seeing this window, > unless FLAG_SHOW_WHEN_LOCKED has also > been set. > Constant Value: 4194304 (0x00400000)

Solution 2 - Android

Official Lock screen widget document is here

Solution 3 - Android

I had to implement a lock screen widget for my project. In the process, I accumulated a couple of resources.

  1. If you have an app that you want to put on the lock screen, first make it an appwidget. You can use the AppWidget class to do this.
  2. Now, use the AppWidgetHost class from the Android API to make your lock screen a host for the widgets. I don't know how to do this part, but there are some existing implementations like mylockandroid (links below).

Resources

http://code.google.com/p/mylockforandroid/ (NB This code is for older versions of Android. Android 4.2 and up has built in lockscreen widget support)

http://mylockandroid.blogspot.com/2010/03/widget-lockscreen-beta-11-r2.html

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionpsychotikView Question on Stackoverflow
Solution 1 - AndroidKevin TeslaCoilView Answer on Stackoverflow
Solution 2 - AndroidBao LeView Answer on Stackoverflow
Solution 3 - AndroidmauryatView Answer on Stackoverflow