Widget écran de locking Android

Quelques utilisateurs m’ont demandé des widgets d’écran de locking Android pour mon application – je crois qu’ils veulent un widget qui rest sur leur écran de locking et leur permet d’interagir avec l’application.

Je n’ai pas été en mesure de trouver de documentation officielle pour cela – la seule chose que j’ai trouvée était des applications qui prendront les widgets de l’écran d’accueil et les mettront sur l’écran de locking pour vous.

Y a-t-il des indices sur la façon dont j’apprends plus sur la création de véritables widgets à écran de locking?

    L’interaction de l’écran de locking est difficile. Android permet des opérations de base avec deux drapeaux de fenêtre (FLAG_SHOW_WHEN_LOCKED et FLAG_DISMISS_KEYGUARD). FLAG_SHOW_WHEN_LOCKED fonctionne assez régulièrement car il apparaîtra en haut de l’écran de locking même lorsque la sécurité est activée (la sécurité n’est pas contournée, vous ne pouvez pas basculer vers une autre fenêtre non-FLAG_SHOW_WHEN_LOCKED).

    Si vous ne faites que quelque chose de temporaire, comme lorsque la musique joue ou similaire, vous serez probablement d’accord. Si vous essayez de créer un écran de locking personnalisé, il y a beaucoup d’interactions inhabituelles sur les différentes plates-formes Android. (“Aide! Je ne peux pas éteindre mon alarme sans redémarrer mon téléphone 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 

    Drapeau de fenêtre: indicateur spécial permettant aux fenêtres de s’afficher lorsque l’écran est verrouillé.

     FLAG_DISMISS_KEYGUARD 

    Drapeau de fenêtre: lorsque la fenêtre est définie, le locking du clavier est annulé uniquement s’il ne s’agit pas d’un verrou de sécurité sécurisé. Un tel keyguard n’étant pas nécessaire pour la sécurité, il ne réapparaîtra jamais si l’utilisateur navigue vers une autre fenêtre (contrairement à FLAG_SHOW_WHEN_LOCKED, qui ne masquera que temporairement les keyguards sécurisés et non sécurisés, mais s’assurera qu’ils réapparaîtront une autre interface utilisateur qui ne les cache pas). Si le clavier est actuellement actif et sécurisé (nécessite un schéma de délocking), l’utilisateur devra toujours le confirmer avant de voir cette fenêtre, sauf si FLAG_SHOW_WHEN_LOCKED a également été défini. Valeur constante: 4194304 (0x00400000)

    Le document de widget d’écran de locking officiel est ici

    J’ai dû implémenter un widget d’écran de locking pour mon projet. Dans le processus, j’ai accumulé quelques ressources.

    1. Si vous avez une application que vous souhaitez placer sur l’écran de locking, commencez par en faire un appwidget . Vous pouvez utiliser la classe AppWidget pour ce faire.
    2. À présent, utilisez la classe AppWidgetHost de l’API Android pour faire de votre écran de locking un hôte pour les widgets. Je ne sais pas comment faire cette partie, mais il existe des implémentations comme mylockandroid (liens ci-dessous).

    Ressources

    http://code.google.com/p/mylockforandroid/ (NB Ce code est destiné aux anciennes versions d’Android. Android 4.2 et versions ultérieures prennent en charge les widgets lockscreen)

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