Apps für Android programmieren leicht gemacht!
Smartwatch App über Smartphone starten

Smartwatch App über Smartphone starten

Wir wollen heute versuchen unsere Smartwatch App automatisch zu starten, wenn unsere zugehörige Smartphone App startet.
Dies kann im expliziten Beispiel sinnvoll sein, wenn wir beispielsweise eine Laufapp offen haben und dem Nutzer die Möglichkeit geben wollen ganz einfach die Laufprotokollierung auf der Smartwatch zu starten. Wir könnten also in der Smartphone App alle Einstellungen einstellen, auf einen Knopf drücken und anschließend öffnet sich die Smartwatch App, die nachfolgend ohne Smartwatch App den Lauf protokolliert.

Vielleicht ist dieses Beispiel auch nur „unnötiger Schnickschnack“, aber nichts desto trotz möchte ich diese Möglichkeit hier einmal aufgreifen.

Als Grundlage dieses Artikels solltet ihr bereits verstanden haben, wie wir Nachrichten von unserer Smartphone App an unsere Smartwatch senden.

 

Funktionsweise:

Um kurz zu erläutern, was wir nun eigentlich vor haben.
Wir haben vor eine Art Benachrichtigung an die Smartwatch App zu senden, um dieser zu sagen, sie sollte sich öffnen.
Dabei ist der Zeitpunkt der Benachrichtigung vom Smartphone aus relativ egal.

Da wir bereits -wie oben angemerkt- gelernt haben einfache Nachrichten an unsere Smartwatch zu senden, können wir dies nun nutzen.
Normalerweise wird eine solche Nachricht an die gerade geöffnete Hauptklasse (Smartwatch) gesendet. Da unsere App allerdings noch nicht offen ist werden wir einen sogenannten „Receiver“ auf der Smartwatch App einbauen. Dieser Receiver bekommt auch Nachrichten von unserer Smartphone App, wenn die Smartwatch App garnicht offen ist.

Bekommt dieser Receiver nun eine Nachricht, mit dem Pfad „starte_app“, dann starten wir die Smartwatch App.
Bekommt der Receiver eine Nachricht, die nicht den Pfad „starte_app“ enthält, dann schickt sie die Nachricht an die Hauptklasse weiter und alles ist wie gehabt.

 

 

Java Code:

Wir erstellen auf unserer Smartwatch App eine Klasse mit dem Namen „NachrichtenListenerService“ und dem Inhalt:

public class NachrichtenListenerService extends WearableListenerService {

    // Wird aufgerufen, wenn die Smartphone App eine Nachricht an die Uhr sendet.
    @Override
    public void onMessageReceived(MessageEvent messageEvent) {
        
        // Prüfe, ob die Smartwatch App geöffnet werden soll oder ob es sich um eine normale Nachricht handelt.
        if( messageEvent.getPath().equals( "starte_app" ) ) {
            
            // Scheinbar handelte es sich um eine Nachricht, die die Smartwatch App starten sollte.
            
            // Versuche die Hauptklasse (hier: MainActivity.class) zu öffnen.
            Intent intent = new Intent( this, MainActivity.class );
            intent.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK );
            
            // Entnehme der Startnachricht noch ein paar Übergabeparameter, für den Start der App
            intent.putExtra("uebergabe", messageEvent.getData());
            
            // Starte die App entgültig.
            startActivity( intent );
            
        } else {
            
            // Scheinbar handelte es sich um eine andere Nachricht, als die die Smartwatch App starten soll.
            
            // Übergebe die empfangene Nachricht an die Hauptklasse, weil wir hier nichts damit anfangen können.
            super.onMessageReceived(messageEvent);
            
        }
    }

}

 

 

Android_Manifest.xml:

In der Android_Manifest.xml Datei der Smartwatch App schreiben wir:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="...">

    [...]

    <application ... >

        [...]
        
        <service android:name=".NachrichtenListenerService">
            <intent-filter>
                <action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
            </intent-filter>
        </service>
    
    </application>

</manifest>

 

 

Smartphone App:

Schlussendlich bedarf es noch dem Senden einer Nachricht von unserer  Smartphone App aus.
Hier könnt ihr dann wieder die Vorgehensweise des oben angesprochenen Artikels nutzen. Achtet aber bitte darauf, dass ihr für den Start der Smartwatch App den Pfad „starte_app“ übergebt. Die Nachricht selber kann beispielsweise Einstellungen enthalten.

 

 

Nachricht in der Smartwatch App auslesen:

Als kleine Anmerkung.
Solltet ihr beispielsweise Einstellungen mit an die Smartwatch App übergeben wollen, wenn diese startet, dann könnt ihr diese wie folgt auslesen:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    
    String uebergabe = savedInstanceState.getString("uebergabe");
    
    [...]
    
}

 

Marvin

Ich bin 23 Jahre jung und studiere zurzeit Wirtschaftsinformatik an der Georg-August-Universität in Göttingen. Ich bin ein Mensch, der sich neben der Programmierung noch für tausend andere Dinge interessiert, die mal mehr und mal weniger verrückt sind. Vor allem aber bin ich Feuer und Flamme mit der Programmierung von eigenen kleinen Apps und Programmen, die mein Leben bereichern.

Kommentar hinzufügen

*Pflichtfeld