Das Schnelleinstellungsfenster erfordert keine Einführung in Android-Benutzer. Sie verwenden die Schalter, die sie ständig zur Verfügung stellt, um Dienste wie WiFi, Bluetooth und GPS ein- und auszuschalten. Im Laufe der Jahre ist es so gewachsen und hat sich so verbessert, dass es selten nötig ist, das tatsächliche zu öffnen die Einstellungen App in diesen Tagen.
Bis vor kurzem war das Fenster mit den Schnelleinstellungen gesperrt, und die Benutzer mussten mit einer großen, aber festen Sammlung von Schaltern - allgemein als Kacheln bezeichnet - zufrieden sein. Mit dem Start von Android Nougat ist dies jedoch nicht mehr der Fall. Benutzer können nun Kacheln hinzufügen, entfernen und neu anordnen. Als App-Entwickler können Sie außerdem Ihre eigenen benutzerdefinierten Kacheln anbieten.
In diesem kurzen Tipp zeige ich Ihnen, wie Sie mit der Schnelleinstellungs-Tile-API eine benutzerdefinierte Kachel von Grund auf erstellen können.
Bevor Sie fortfahren, stellen Sie sicher, dass Sie Folgendes haben:
Im Grunde sind Kacheln einfach zugänglich, und die Benutzer können sie jederzeit drücken, selbst wenn ihre Geräte gesperrt sind. Da sie nur ein Symbol und eine Beschriftung anzeigen können, können sie nur für sehr spezifische, aber einfache Aktionen verwendet werden.
Mit jeder Kachel ist ein Zustand verbunden. Genau wie bei einem realen Schalter kann es sich entweder im Ein-Zustand oder im Aus-Zustand befinden. Wie Sie vielleicht erwarten, ist ein Plättchen heller als eines, das nicht läuft. Obwohl Sie den Status Ihrer Kachel selbst verwalten müssen, verwaltet die Android-Plattform automatisch die Helligkeit.
Um eine benutzerdefinierte Kachel anbieten zu können, muss Ihre App über einen Dienst verfügen, der die TileService
Klasse.
Klasse MyTileService: TileService ()
Wenn Sie den Dienst im Manifest des Projekts erwähnen, müssen Sie ihm eine Bezeichnung und ein Symbol zuweisen, die beide zum Erstellen des Standardaussehens der Kachel verwendet werden. Um Ihnen ein realistisches Beispiel zu geben, erstellen wir jetzt eine Kachel, die das Gerät des Benutzers so lange vibriert, wie es eingeschaltet ist. Sein Label wird sein Zittern, und sein Symbol wird sein Vibration, welches im Vector Asset Studio unter der Benachrichtigung Sektion.
Als Nächstes müssen Sie einen Intent-Filter zur Servicedefinition hinzufügen, damit er auf den Server reagieren kann android.service.quicksettings.action.QS_TILE
Aktion. Um sicherzustellen, dass es nur vom Android-System gestartet werden kann, müssen Sie es auch mit dem schützen android.permission.BIND_QUICK_SETTINGS_TILE
Genehmigung.
Zu diesem Zeitpunkt sollte die Definition des Dienstes so aussehen:
Das ist alles Code, den Sie benötigen, um eine benutzerdefinierte Kachel anzuzeigen. Wenn Sie Ihre App jetzt bereitstellen und zur Website navigieren Bearbeiten Im Bereich der Schnelleinstellungen sollten Sie Ihre Kachel in der Liste der verfügbaren Kacheln sehen können.
Ziehen Sie es und legen Sie es neben einem der Standardkacheln ab, damit Sie leichter darauf zugreifen können.
Sie müssen bemerkt haben, dass unsere Fliese ziemlich hell ist. Das liegt daran, dass wir seinen Status immer noch nicht initialisiert haben und das System der Meinung ist, dass es "eingeschaltet" ist. Um die Kachel so zu ändern, dass sie nach dem Hinzufügen des Benutzers im ausgeschalteten Zustand startet, können Sie das Feld außer Kraft setzen onTileAdded ()
Eventhandler des Dienstes und setzen Sie die Zustand
Eigentum der qsTile
Gegenstand zu Tile.STATE_INACTIVE
.
Wenn Sie den Status ändern, müssen Sie daran denken, auch die updateTile ()
Methode, so dass sich das Aussehen der Kachel ändert, um dem Status zu entsprechen.
Überschreibe fun onTileAdded () super.onTileAdded () // Aktualisierungsstatus qsTile.state = Tile.STATE_INACTIVE // Update sucht qsTile.updateTile ()
Wenn Sie die App jetzt ausführen, entfernen Sie die Kachel und fügen Sie sie wieder hinzu. Sie sollten sehen, dass sie deaktiviert ist.
Im Moment passiert nichts, wenn Sie auf die Kachel klicken. Sie können das ändern, indem Sie die überschreiben onClick ()
Eventhandler des Dienstes.
Innerhalb des Event-Handlers können Sie die Kachel ein- und ausschalten, indem Sie zwischen den Optionen wechseln Tile.STATE_ACTIVE
und Tile.STATE_INACTIVE
Zustände. Der folgende Code zeigt Ihnen, wie Sie dies mit einer einfachen Methode tun ansonsten
Aussage:
override fun onClick () super.onClick () if (qsTile.state == Tile.STATE_INACTIVE) // Aktivieren Sie qsTile.state = Tile.STATE_ACTIVE startVibrating () // TODO else // Schalten Sie qsTile.state aus = Tile.STATE_INACTIVE stopVibrating () // TODO // Update sieht nach qsTile.updateTile ()
Die Aktion, die mit der Kachel verbunden ist, sollte beginnen, sobald die Kachel eingeschaltet ist, und stoppt, sobald sie deaktiviert ist. Zusätzlich zum Aktualisieren des Status enthält der Code, den wir im vorherigen Schritt hinzugefügt haben, Aufrufe an startVibrating ()
und StopVibrating ()
Methoden.
Das startVibrating ()
Methode kann das verwenden vibrieren()
Methode von Android Vibrator
klasse, damit das Telefon vibriert. Das vibrieren()
Methode erwartet jedoch eine feste Dauer. Um sicherzustellen, dass das Telefon kontinuierlich vibriert, solange die Kachel eingeschaltet ist, können Sie es innerhalb einer Schleife anrufen, vorzugsweise mit einer kurzen Dauer. Eine solche Schleife kann nicht innerhalb des UI-Threads ausgeführt werden, dem Thread, den der Kachel-Service für seinen Click-Ereignishandler verwendet.
Im Idealfall sollte jeder lang andauernde Vorgang, den Sie zum Starten oder Stoppen Ihres Kacheldienstes wünschen, in einem System platziert werden IntentService
Beispiel. Um dieses Tutorial kurz zu halten, wollen wir uns erst einmal mit einer Coroutine begnügen.
Der folgende Code zeigt, wie Sie die Schleife in einer Coroutine ausführen, die mithilfe von erstellt wurde starten()
Coroutinenbauer:
fun startVibrating () launch while (qsTile.state == Tile.STATE_ACTIVE) (getSystemService (Context.VIBRATOR_SERVICE) als Vibrator) .vibrate (1000) // Sekunden lang vibrieren // Warten Sie eine Sekunde, bevor Sie erneut vibrieren (1000)
Obwohl die obige Schleife endet, wenn der Benutzer die Kachel ausschaltet, können die Vibrationen eine zusätzliche Sekunde andauern. Um sie sofort zu stoppen, können Sie die anrufen stornieren()
Methode der Vibrator
Service in der StopVibrating ()
Methode.
fun stopVibrating () (getSystemService (Context.VIBRATOR_SERVICE) als Vibrator) .cancel ()
Unsere individuelle Fliese ist fertig. Es funktioniert jedoch nur, wenn es die Erlaubnis hat, den Vibrator des Telefons zu verwenden. Sie können es anfordern, indem Sie der Manifest-Datei Ihres Projekts die folgende Zeile hinzufügen:
Wenn Sie die App jetzt bereitstellen und auf die benutzerdefinierte Kachel klicken, beginnt das Telefon zu vibrieren. Wenn Sie erneut darauf klicken, sollten Sie die Vibrationen sofort stoppen können.
Wenn Sie eine App erstellen, die einzigartige Funktionen oder Informationen bietet, auf die Benutzer häufig zugreifen müssen, kann die Verwendung einer benutzerdefinierten Kachel die Benutzererfahrung erheblich verbessern. In diesem Lernprogramm haben Sie gesehen, wie einfach es ist, eine solche Kachel mithilfe der Schnelleinstellungs-Tile-API zu erstellen.
Weitere Informationen finden Sie in der offiziellen Dokumentation.
Und während Sie hier sind, lesen Sie einige unserer anderen Beiträge zur Android-App-Entwicklung!