Le panneau de configuration rapide n'a pas besoin d'être présenté aux utilisateurs d'Android. Ils utilisent les commutateurs qu’il offre tout le temps pour activer et désactiver des services tels que le WiFi, le Bluetooth et le GPS. Au fil des ans, il s’est tellement développé et amélioré qu’il est rarement nécessaire d’ouvrir le Réglages app ces jours.
Jusqu'à récemment, le panneau de configuration rapide était verrouillé et les utilisateurs devaient se satisfaire d'un vaste ensemble fixe de commutateurs, communément appelé pavés. Avec le lancement d'Android Nougat, ce n'est plus le cas. Les utilisateurs sont maintenant libres d'ajouter, de supprimer et de réorganiser des mosaïques. De plus, en tant que développeur d'applications, vous pouvez proposer vos propres vignettes personnalisées..
Dans cette astuce, je vais vous montrer comment utiliser l'API de mosaïque des paramètres rapides pour créer une mosaïque personnalisée à partir de zéro..
Avant de continuer, assurez-vous de disposer des éléments suivants:
Essentiellement, les vignettes sont simplement des commutateurs facilement accessibles que les utilisateurs peuvent appuyer à tout moment, même lorsque leurs périphériques sont verrouillés. Parce qu'ils ne peuvent afficher rien de plus qu'une icône et une étiquette, ils ne peuvent être utilisés que pour des actions très spécifiques mais simples..
Chaque tuile a un état associé. Tout comme un commutateur du monde réel, il peut être soit dans un état "activé", soit dans un état "désactivé". Comme vous vous en doutez, une tuile activée est plus brillante que celle qui est éteinte. Bien que vous deviez gérer vous-même l'état de votre mosaïque, la plate-forme Android gère automatiquement sa luminosité..
Pour offrir une vignette personnalisée, votre application doit disposer d'un service qui étend la TileService
classe.
class MyTileService: TileService ()
Tout en mentionnant le service dans le manifeste du projet, vous devez lui attribuer une étiquette et une icône, qui serviront à créer l'apparence par défaut de la vignette. Pour vous donner un exemple réaliste, nous allons maintenant créer une vignette qui fait vibrer le périphérique de l'utilisateur de manière continue tant qu'il est allumé. Son label sera Trembler, et son icône sera vibration, disponible dans le Vector Asset Studio sous le Notification section.
Ensuite, vous devez ajouter un filtre d'intention à la définition du service afin qu'il puisse répondre à la android.service.quicksettings.action.QS_TILE
action. Pour vous assurer qu'il ne peut être lancé que par le système Android, vous devez également le protéger avec le android.permission.BIND_QUICK_SETTINGS_TILE
autorisation.
À ce stade, la définition du service devrait ressembler à ceci:
C'est tout le code dont vous avez besoin pour afficher une vignette personnalisée. Si vous déployez votre application maintenant et accédez à la modifier section du panneau des paramètres rapides, vous devriez pouvoir voir votre vignette dans la liste des vignettes disponibles.
Faites-le glisser et déposez-le près de l'une des mosaïques par défaut afin de pouvoir y accéder plus facilement..
Vous devez avoir remarqué que notre carreau est assez brillant. C'est parce que nous n'avons toujours pas initialisé son état et que le système pense qu'il est "allumé". Pour modifier la vignette de telle sorte qu'elle commence à l'état désactivé lorsque l'utilisateur l'a ajoutée, vous pouvez remplacer la onTileAdded ()
gestionnaire d'événements du service et définissez la Etat
propriété du qsTile
objecter à Tile.STATE_INACTIVE
.
Chaque fois que vous changez d'état, vous devez vous rappeler d'appeler également le updateTile ()
méthode afin que l'apparence de la tuile change pour correspondre à l'état.
Remplacer fun onTileAdded () super.onTileAdded () // Etat de la mise à jour qsTile.state = Tile.STATE_INACTIVE // La mise à jour ressemble à qsTile.updateTile ()
Si vous exécutez l'application maintenant, supprimez la vignette et ajoutez-la à nouveau, vous devriez voir qu'elle est désactivée..
Pour le moment, rien ne se passe lorsque vous cliquez sur la tuile. Vous pouvez changer cela en remplaçant le sur clic()
gestionnaire d'événement du service.
Dans le gestionnaire d’événements, vous pouvez activer et désactiver la mosaïque en alternant les Tile.STATE_ACTIVE
et Tile.STATE_INACTIVE
États. Le code suivant vous montre comment procéder avec un simple sinon
déclaration:
remplace fun onClick () super.onClick () if (qsTile.state == Tile.STATE_INACTIVE) // Activer qsTile.state = Tile.STATE_ACTIVE startVibrating () // TODO else // Désactiver qsTile.state = Tile.STATE_INACTIVE stopVibrating () // TODO // Mise à jour des regards qsTile.updateTile ()
L'action associée à la vignette doit commencer dès que la vignette est allumée et s'arrêter dès qu'elle est désactivée. Par conséquent, en plus de la mise à jour de l'état, le code que nous avons ajouté à l'étape précédente contient des appels à la startVibrating ()
et stopVibrating ()
les méthodes.
le startVibrating ()
méthode peut utiliser le vibrer()
méthode d'Android Vibreur
classe pour faire vibrer le téléphone. le vibrer()
La méthode attend toutefois une durée fixe. Pour vous assurer que le téléphone vibre en permanence tant que la vignette est allumée, vous pouvez l'appeler dans une boucle, de préférence de courte durée. Une telle boucle ne peut pas être exécutée dans le thread d'interface utilisateur, le thread que le service de tuiles utilise pour son gestionnaire d'événements click.
Idéalement, toute opération de longue durée pour laquelle vous souhaitez que votre service de tuiles démarre ou s’arrête devrait être placée à l’intérieur d’un ordinateur. IntentService
exemple. Pour que ce tutoriel soit court, faisons avec une coroutine pour le moment..
Le code suivant vous montre comment exécuter la boucle dans une coroutine créée à l'aide du lancement()
constructeur de coroutine:
fun startVibrating () launch while (qsTile.state == Tile.STATE_ACTIVE) (getSystemService (Context.VIBRATOR_SERVICE) en tant que vibreur) .vibrate (1000) // Vibration pendant une seconde // Attend une seconde avant de retarder la vibration (1000)
Bien que la boucle ci-dessus se termine lorsque l'utilisateur éteint la mosaïque, les vibrations peuvent durer une seconde supplémentaire. Pour les arrêter immédiatement, vous pouvez appeler le Annuler()
méthode du Vibreur
service à l'intérieur du stopVibrating ()
méthode.
fun stopVibrating () (getSystemService (Context.VIBRATOR_SERVICE) en tant que vibrateur) .cancel ()
Notre tuile personnalisée est prête. Cependant, cela ne fonctionnera que si vous avez la permission d'utiliser le vibrateur du téléphone. Vous pouvez le demander en ajoutant la ligne suivante au fichier manifeste de votre projet:
Si vous déployez l'application maintenant et que vous cliquez sur la vignette personnalisée, votre téléphone devrait commencer à vibrer. En cliquant dessus, vous devriez pouvoir arrêter les vibrations immédiatement.
Si vous construisez une application offrant une fonctionnalité ou des informations uniques, les utilisateurs devront y accéder très fréquemment. Le fait de personnaliser une mosaïque avec celle-ci peut considérablement améliorer l'expérience utilisateur. Dans ce tutoriel, vous avez constaté à quel point il est facile de créer une telle mosaïque à l’aide de l’API de mosaïque Paramètres rapides..
Pour en savoir plus, consultez la documentation officielle..
Et pendant que vous êtes ici, consultez certains de nos autres articles sur le développement d'applications Android.!