Apps für Android programmieren leicht gemacht!

Raspberry Pi – Bewegungsmelder

Zu einer modernen und gelungenen Hausautomation und/oder Alarmanlage gehört heutzutage, dass man an seinem Smartphone über jede Änderung benachrichtigt wird.
Projekte mit Bewegungsmeldern an einem Raspberry Pi gibt es viele, doch wer so technikvernarrt ist wie ich, der hat bestimmt schon einmal über die Konnektivität zwischen Raspberry und Smartphone nachgedacht.

Wir (Droid-Lernen und www.tutorials-raspberrypi.de) haben nun ein kleines Projekt auf die Beine gestellt, welches diese Verbindung herstellt.
Lasse dich ab jetzt von deinem Android Smartphone benachrichtigen, sobald der Bewegungsmelder an deinem Raspberry Pi eine Bewegung registriert.

Als kleine Erläuterung zu diesem Projekt.
Uns ist bewusst, dass die Wenigsten eine eigene Webseite/einen eigenen Server besitzen. Aus diesem Grund benutzen wir den Google Cloud Messaging Dienst (kurz GCM).
Dieser sendet, bei Benachrichtigung vom Raspberry Pi an alle verbundenen Android Geräte eine Nachricht, mit Ort und Zeit der Bewegung. So sparen wir uns die Programmierung eines eigenen Webservices und vor allem Akku, denn Google Benachrichtigt uns und wir fragen nicht nach.
Auf www.tutorials-raspberrypi.de findet ihr alle nötigen Anleitungen, um euren Raspberry Pi einzurichten und zu programmieren. Dieser Benachrichtigt, bei Bewegung, Google.
Auf Droid-Lernen findet ihr die nötigen Anleitungen, um eine Benachrichtigung unter Android anzuzeigen, die wir von Google bekommen.

Auf der letzten Seite findest du die gesamte App noch einmal als Download. Sie steht unter der Apache 2.0 Lizenz,  ihr könnt die App also benutzen/verändern/veröffentlichen, wie es euch beliebt.
Bitte achtet darauf, dass ihr die google-services.json Datei, welche ihr in diesem Artikel erstellt, mit einfügt. Wie das geht ist unter dem Punkt „Vorarbeit“ erklärt.

 

 

Raspberry Pi einrichten:

Wie bereits angesprochen findet ihr den Artikel zur Einrichtung und Programmierung eures Raspberry Pi nicht bei Droid-Lernen.
Bitte folgt also dieser Anleitung -> Raspberry Pi + Android: Benachrichtigung vom Bewegungmelder

 

Android App erstellen:

Solltet ihr zum ersten mal eine Android App programmieren, dann folgt bitte diesen 3 Artikeln:

Habt ihr Android Studio installiert, dann erstellt eine neue App. Dieser gebt ihr einen Namen und einen Package Namen.
Der Package Name besteht aus einem Ländercode (z. B. de), einem Entwicklernamen und dem Appnamen. Jeweils mit einem „.“ getrennt.

Als minimale Version benutzt ihr 9 und ihr wählt „Blank Activity“ (ab Android Studio 2.1 heißt es „Empty Activity“) aus.
Android Studio wird nun ein erstes Grundgerüst erstellen.

 

Vorarbeit:

Bitte folgt den Anleitungen in diesem Artikel Raspberry Pi – Google Cloud API-Key, um eure App für GCM vorzubereiten. Am Ende dieses Vorgangs wird euch der Download einer google-services.json Datei angeboten.

Diese müssen wir nun in unsere App einfügen. Klickt dazu in der linken Leiste mittels Rechtsklick auf „App“ und dann auf „Im Explorer anzeigen“ oder wie bei mir „Reveal in Finder“. Es öffnet sich der Ordner, in den wir die Datei einfach verschieben. Der Ordner kann danach wieder geschlossen werden.

Ordner öffnen

Nun müssen wir die Dateien „gradle.build (Module: app)“ und „gradle.build (Project: ????)“ anpassen. Diese sind unter der Kategorie „Gradle“ ebenfalls in der linken Dateiliste zu finden.

In die Datei „gradle.build (Project: ????)“ fügen wir innerhalb der {}-Klammern von dependecies ein:

classpath 'com.google.gms:google-services:3.0.0'


// Das sieht in etwa so aus:
dependencies {
    classpath 'com.android.tools.build:gradle:2.0.0'
    classpath 'com.google.gms:google-services:3.0.0'
}

 

In die Datei „gradle.build (Module: app)“ müssen wir 2 Stellen bearbeiten.
Als Erstes fügen wir ganz am Ende der Datei ein:

apply plugin: 'com.google.gms.google-services'

Und wieder fügen wir innerhalb der {}-Klammern von dependencies ein:

compile "com.google.android.gms:play-services-gcm:9.4.0"

// Das sieht dann in etwas so aus:
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.2.0'
    compile "com.google.android.gms:play-services-gcm:9.4.0"
}

 

Damit ist unsere Vorarbeit auch schon geleistet.
Wir haben Android Studio mit diesen kleinen Anpassungen nun beauftragt zur Erstellung der App die Google Play Services mit einzubinden. Dadurch bekommen wir die Möglichkeit diese zu benutzen. Das Google Cloud Messaging ist ein Teil der Google Play Services.

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.

44 Kommentare

*Pflichtfeld

  • Hallo,

    Sobald die App eine Nachricht erhalten sollte stürzt sie ab

    --------- beginning of crash
    08-30 20:55:22.365 9557-10482/de.droid_lernen.bewegungsmelder E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
    [...]
    java.lang.NullPointerException: Attempt to invoke virtual method 'long java.util.Date.getTime()' on a null object reference
    at java.util.Calendar.setTime(Calendar.java:1197)
    at java.text.SimpleDateFormat.formatImpl(SimpleDateFormat.java:527)
    at java.text.SimpleDateFormat.format(SimpleDateFormat.java:829)
    at java.text.DateFormat.format(DateFormat.java:314)
    at de.droid_lernen.bewegungsmelder.GcmListener.onMessageReceived(GcmListener.java:41)
    [...]

    lg

    [EDIT von Marvin: Fehlermeldung gekürzt.]

    • Hallo Michael,

      das Problem ist wohl, dass an dieser Stelle keine Zeit „T“ aus der erhaltenen Nachricht vom Raspberry ausgelesen werden kann.
      Bist du sicher, dass das Script auf dem Raspberry korrekt läuft, die Zeit auslesen und senden kann?

      Ich entschuldige mich, dass dieses Problem zu einem Absturz der App führt.
      Ich habe das Script mal kurz angepasst, indem ich diese Zeilen innerhalb von „try{ … }“ verschoben habe:
      // Prüfe, ob es sich bei der Benachrichtigung um das richtige Thema handelt.
      if (from.startsWith("/topics/bewegung")) {
      sendNotification(ort + " - " + formatter.format(date), getIdentifier(ort));
      }

      Ich habe die entsprechende Stelle auch im Artikel geändert.

      Bitte verschiebe diese Zeilen ebenfalls und schicke mir dann noch einmal die letzten Meldungen der selben Ausgabe in Android Studio.
      Ich meine damit die Ausgabe, aus der du eben auch den Fehlercode kopiert hast.

      Die letzt Meldung sollte blau sein und in etwa so anfangen:
      „[…] 14162-14324/de.droid_lernen.bewegungsmelder W/System.err: org.json.JSONException: No value for T […]“.

    • Hallo Michael,

      ich habe soeben in den Kommentaren auf Tutorials-RaspberryPi gelesen, was du vor hast.
      Das Problem ist, dass unsere App momentan nicht darauf ausgelegt ist einen anderen Nachrichten Syntax zu nutzen. Wir übergeben momentan innerhalb von „Message“ einen Ort und eine Zeit, wenn du dies änderst, dann wird die App abstürzen, weil diese Informationen fehlen.

      Du könntest aber versuchen für deine „Hello World“ Nachricht ein anderes Topic innerhalb des Python Skriptes zu benutzen, um in der App etwas anderes auszulösen. Dann würde die App nämlich nicht mehr versuchen Ort und Zeit aus der Message auszulesen.
      Wenn du magst könnte ich dir die Klasse etwas umschreiben.

      Gruß,
      Marvin

  • Hallo,

    Das mit der fehlenden Zeit und Ort ist mir auch aufgefallen.

    Deine Hilfestellung würde ich natürlich gerne annehmen. Es ist im Moment noch nicht so leicht den Quellcode ganz zu verstehen. Aber ihr macht einen wunderbaren Job.

    Lg

    • Hallo,
      Ich werde nochmal einen zusätzlichen Artikel verfassen, um andere Topics innerhalb dieser App zu unterstützen, dies könnte einen Moment dauern.
      Bitte schaue doch morgen früh noch einmal auf Droid-Lernen vorbei, dann sollte der Artikel fertig sein.

      Gruß,
      Marvin

  • Ich danke dir. Eine Frage hätte ich noch. Wenn ich die App als. Apk exportiere habe ich kein app Icon im.app drawer. Ausserdem steht in der App nur Hello world. In dem Video steht da ja noch mehr text. Ich weiß, der dient nur zu Demonstration. Aber wie bekomme diese verbunden Mitteilung hin?

    Ich hoffe das ist jetzt nicht zuviel gefragt.

    Lg

    • Hallo Michael,
      wenn du Fragen hast, dann immer raus damit. Ich denke ich spreche auch im Namen von Tutorials-Raspberrpi.de, wenn ist sage, dass unsere Webseiten ja immerhin dafür da sind, dass man lernt und Fragen stellen kann.

      Was meinst du genau mit einem App Drawer?
      Das Icon der App findest du in Android Studio in der linken unter Res->MipMap.
      Ändern kannst du den Launcher Icon, indem du einen Rechtsklick auf MipMap machst und danach auf new->“Image Asset“ klickst.

      Dass deine App ausschließlich den Text „Hello World“ anzeigt liegt daran, dass Android Studio dies als Standard für jede neue App nutzt. Diesen Text kannst du ändern, indem du die Datei res->layout->activity_main.xml änderst. Der Text dieses Layouts selber ist in der Datei res->values->strings.xml gespeichert. Diese strings.xml-Datei hat den Vorteil, dass du später für verschiedene Sprachen unterschiedliche dateien von diesem Typ erstellen kannst und Android automatisch anhand der Systemsprache die passenden Texte auswählt.
      Den Statustext aus dem Demonstrationsvideo habe ich absichtlich nicht mit in diesem Artikel aufgeführt, da er den Artikel -vor allem für Anfänger- nur unnötig kompliziert macht und für die Funktionsweise nicht notwenig ist.
      Wenn du magst, dann schreib mir doch eine Mail (Adresse steht im Impressum) oder schreibe im Forum und ich werde dir den Rest zukommen lassen.

      Gruß,
      Marvin

  • Hallo,
    ich habe im Moment zwei Problem mit dem Android Studio Projekt.
    Version ist: 2.1.3.
    Java: JRE:1.8.0_102-b14 amd64
    OS: WINDOWS 10 Pro 64 Bit
    CPU: Intel Core i3-430
    1. kann den JAVA Path nicht setzen.
    Dabei bekomme ich folgende Meldung: „Please choose a
    valid JDK directory“
    installiert habe ich die Version: jdk1.8.0_102.
    Wenn ich die Version: jdk1.7.0_45 anklicke erhalte ich die
    obige Fehlermeldung nicht, aber Android Studio will mit
    dieser Version nicht arbeiten.
    2. Wenn ich versuche die Datei „RegistrationIntentService“ anzulegen erhalte ich die Meldung „Cannot create class-file“

    MfG
    Juergen B.

    • Hallo Juergen,

      Bitte stelle als Erstes sicher, dass der Java Path richtig gesetzt ist. Eine Anleitung gibt es hier direkt von Oracle. https://www.java.com/de/download/help/path.xml

      Stelle als nächstes sicher, dass der richtige JDK Pfad angegeben ist.
      Dieser lautet bei mir: „C:\Program Files\Java\jdk1.8.0_91“.
      Diesen Pfad kannst du beim Start von Android Studio einstellen, indem du auf dem ersten Willkommenbildschirm (noch kein Projekt geöffnet) auf „Configure“->“Project Defaults“->“Project Structure“ gehst.

      Worüber versuchst du denn die Klasse zu erstellen?

      Gruß,
      Marvin

      • Hallo,
        vielen Dank für die schnelle Antwort.
        Die Klasse versuche ich wie von Dir beschrieben:
        „RegistrationIntentService.class:
        Fangen wir mit der Registrierung unserer App beim Google Server an. Diese Klasse müssen wir bereitstellen, damit Google weiß, dass unsere App die Nachrichten von unserem Raspberry erhalten kann und welche Nachrichten an uns versendet werden sollen.
        Ihr erstellt diese Datei, indem ihr in der linken Liste auf app->java->(Euer Package Name ohne Test oder ähnliches) geht und mit einem Rechtsklick „new“ und dann „Java class“ auswählt.
        Gebt hier „RegistrationIntentService“ ein.“

        Das mit dem Java-Path muss ich noch probieren.

        MfG
        Juergen B.

  • Hallo,
    so das Problem mit dem Java-Path konnte ich lösen.
    Ich habe Java (jdk-8u102-windows-x64.exe) noch einmal installiert, jedoch ohne JRE.
    Danach konnte ich den Java-Path im Android Studio setzen.

    Zum Problem mit dem erstellen der Java-Class:
    Projekt Path:
    app/src/main/java/sa/android/bewegungsmelder
    Dann: New -> File -> java class

    Außerdem habe ich in meinem Projekt folgende Fehlermeldung:
    C:\Users\Juergen\AndroidStudioProjects\RaspberryPi-Bewegungsmelder\build.gradle
    „Error:(22, 0) Could not find method android() for arguments [build_6zf3xmo0k4synpmvo4iit7tmy$_run_closure3@583239ec] on root project ‚RaspberryPi-Bewegungsmelder‘ of type org.gradle.api.Project.
    Open File
    Inhalt:
    / Top-level build file where you can add configuration options common to all sub-projects/modules.
    buildscript {
    repositories {
    jcenter()
    }
    dependencies {
    classpath ‚com.android.tools.build:gradle:2.1.3‘
    classpath ‚com.google.gms:google-services:3.0.0‘
    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
    }
    }
    allprojects {
    repositories {
    jcenter()
    }
    }
    task clean(type: Delete) {
    delete rootProject.buildDir
    }

    android {
    compileSdkVersion 24
    buildToolsVersion ‚24.0.2‘
    }
    dependencies {
    }

    MfG

    Juergen B.

  • Hallo,
    habe auch das Problem mit dem erstellen der JAVA-Class gelöst:
    Ich habe beim Aufbau der App „Add No Activity“ gewählt.
    Habe aber noch ein Problem beim erstellen der App.
    In der Datei „MainActivity.java“ erhalte ich beider Zeile „setContentView(R.layout.activity_main“ die folgende Fehlermeldung:
    C:\Users\Juergen\AndroidStudioProjects\RaspberryPi-Bewegungsmelder\app\src\main\java\sa\android\bewegungsmelder\MainActivity.java
    Error:(39, 32) error: cannot find symbol variable activity_main
    :app:compileDebugJavaWithJavac FAILED
    Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
    > Compilation failed; see the compiler error output for details.

    Wo muss die Variable „activity_main“ deklariert werden oder so ?

    MfG

    Juergen

    • Hallo Juergen,

      „activity_main“ ist hier keine Variable im eigentlichen Sinne, sondern der Name der Layout-Datei „activity_main.xml“ ohne die Dateiendung „.xml“.
      Das „R“ steht hier für Resources und „layout“ für den Layout Ordner. Im Prinzip gibt dies den Dateipfad res->layout->activity_main.xml an.

      Bist du sicher, dass im entsprechenden Ordner (linken Liste) diese Datei angegeben ist? Wenn dies der Fall sein sollte, dann versuche mal „Sync Gradle“ auszuführen. Sync Gradle findest du in der oberen Leiste (grüner Kreis mit blauem Pfeil; Hier besser erklärt: https://droid-lernen.de/3-2-android-studio-erklaert/).

      Achte auch darauf, dass die Zeile wie folgt aussieht: setContentView(R.layout.activity_main);

      Gruß,
      Marvin

      • Hallo Marvin,
        das Problem bei mir ist: ich habe in meinem Projekt keine Ordner „layout“ und somit auch keine Datei „activity_main“.
        Das wird daran liegen das ich bei „Add an Activity to Mobile“ –> Add No Activity ausgewählt habe, da es in meiner Version 2.1.3 kein „Blank Activity“ vorhanden ist. Das „Empty Activity“ hatte ich als erstes ausgewählt (hat auch nicht funktioniert).
        Welches Activity muss ich verwnden –> Basic Activity ?

        MfG
        Juergen

      • Hallo,

        bitte entschuldige die Verwirrung.
        Die richtige Auswahl ab Android Studio 2.1+ ist „Empty Activity“.

        Ich hatte bisher noch mit Android Studio 2.0 gearbeitet und nicht mit einer Namensänderung gerechnet.
        Wir aber sofort im Artikel geändert.

        Gruß,
        Marvin

  • Hallo Marvin,
    so nun habe ich das Projekt noch einmal mit „Empty Activity“ erstellt und auf mein Smartphone (SAMSUNG GALAXY S4 mini) installiert.
    Beim starten des Projektes erhalte ich die Meldung „RaspberryPi-Bewegungsmelder angehalten“
    Hast Du da auch noch einen Tipp für mich ?

    MfG
    Juergen

    • Hallo Marvin,
      eine mögliche Fehlerquelle:
      ich habe anstatt:
      dependencies {
      compile „com.google.android.gms:play-services-gcm:9.4.0“
      }
      die folgende Zeile verwendet.
      dependencies {
      compile „com.google.android.gms:play-services-gcm:9.0.0“
      }
      Werde Morgen versuchen Google API auf die Version 9.4.0 updaten.
      Weiss im Moment aber nicht wie ?

      MfG

      Juergen

      • Hallo Juergen,

        Zum Updaten gehst du in der oberen Leiste auf den Icon „SDK Manager“, dann auf „Launch Standalone SDK Manager“.
        In dem neuen Fenster gehst du auf den Ordner „Extras“ und wählst „Google play services“ aus.
        Schlussendlich muss dann „Install x packages“ auf der rechten Seite gewählt werden.

        Bitte schließe auch als Fehlerquelle aus, dass du beide Gradle Dateien bearbeitet hast.

        Gruß,
        Marvin

      • Hallo Marvin,
        bei „Make Project“ erhalte ich (mit ….play-services-gcm:9.4.0) folgende Fehlermeldung:
        Found com.google.android.gms:play-services-gcm:9.4.0, but version 9.0.0 is needed for the google-services plugin.
        :app:processDebugGoogleServices FAILED
        Error:Execution failed for task ‚:app:processDebugGoogleServices‘.
        > Please fix the version conflict either by updating the version of the google-services plugin (information about the latest version is available at https://bintray.com/android/android-tools/com.google.gms.google-services/) or updating the version of com.google.android.gms to 9.0.0.
        ! Google-play-services ist/war in der Version 32 installiert.

        MfG
        Juergen

      • Ich befürchte du hast die Zeile apply plugin: 'com.google.gms.google-services' in der Datei „gradle.build (Module: app)“ falsch positioniert.

        Diese Zeile gehört nämlich ganz ans Ende der Datei.

  • Hallo Marvin,
    nun startet die App auf meinem Smartphon und der Text: „Hello World“ erscheint.
    Aber ich bekomme noch keine Meldung von meinem Raspberry Pi auf der App angezeigt.
    Den erzeugten AUTH_KEY habe ich in der Python-Datei eingetragen.
    Kann ich die Übertragung mit dem Google-Service testen (mit der entsprechenden Webadresse) ?

    MfG
    Juergen

    • Hallo Juergen,

      ist die Datei „google-services.json“ von dir heruntergeladen und in den richtigen Ordner verschoben worden?
      Du kannst versuchen den Befehl im Terminal vom Raspberry Pi einzugeben. curl --header "Authorization: key=[DEIN KEY]" --header Content-Type:"application/json" https://gcm-http.googleapis.com/gcm/send -d '{"to":"/topics/bewegung", "data": {"message": "{\"O\":\"Wohnzimmer - Fenster\",\"T\":\"1471947\"}"}}'

      Bitte schaue nach, was die Console von Android Studio ausgibt.
      Falls das alles nicht klappt, dann zippe doch bitte das gesamte Projekt und sende es mir mal per Mail.
      Adresse findest du im Impressum.

      Gruß,
      Marvin

    • Hallo,

      Der GCM Dienst ist ein Teil der Google Play Services.
      Diese Services sollten, wie zum Thema gehörend, in der Google Play Spiele App integriert sein.
      Die Google Play Spiele App müsste meines Wissens nach von Werk aus auf deinem Handy installiert sein.
      Idealerweise solltest du nichts weiter tun müssen, als die App aus diesem Projekt zu erstellen und auszuführen.

      In Zeile 57 – 70 (4. Seite) wird geprüft, ob die Google Play Services verfügbar sind.
      Wenn du mit Fehlermeldung prüfen möchtest, dann ersetze das „}“ der Zeile 52 (4. Seite) durch diesen Code:
      }else{Log.e("PlayServices", "Nicht vorhanden.");}

      Sollte der GCM Dienst auf deinem Gerät wiedererwartend nicht verfügbar sein, dann erscheint die rote Meldung „PlayServices: Nicht vorhanden.“ in der Fehlerausgabe in Android Studio.

      Gruß,
      Marvin

  • Erstmal super Projekt!
    Bei mir funktioniert alles. Aber eine Frage hätte ich noch: Wie kann man die Push-Benachrichigungen deaktivieren? Gibt´s da irgendwie eine Möglichkeit in der App?
    Ich will nämlich keine Benachrichtigungen erhalten, wenn ich durch die Wohnung laufe ?
    Danke!

    • Hallo Timo,
      vielen Dank für das Kompliment.

      Das ist sicherlich möglich. Dazu wäre ein Boolean in der Klasse Einstellung nötig, auf den wir prüfen, wenn wir eine Benachrichtigung erhalten und diese nur anzeigen, wenn der Boolean auf True steht. Zusätzlich müsste man einen Button in der App zum verändern des Booleans hinzufügen. Keine große Sache also. Ich werde mich die Tage noch einmal an einen Artikel dazu setzen und ihn hier in den Kommentaren verlinken.

      Gruß,
      Marvin

  • Hi Marvin,

    ich benutze deine App jetzt schon seit über einem Jahr und mit verschiedenen Smartphones/Tablets, natürlich zusammen mit meinem Pi3 und es läuft einfach maximal zuverlässig 🙂
    Ich muss an dieser Stelle unbedingt noch mal meinen Dank aussprechen!
    Die Push-Mitteilung war bisher für mich nur der Trigger für weitere Automatisierungs-Aktionen, ich hab mir eine Türklingel gebastelt und nutze zusätzlich die App „Automate“ recht intensiv, da ich schon viel damit gebastelt hab, die nimmt die Notification als Trigger und schaltet z.B. das Display ein, startet díe Onvifer App, spielt eine Klingelton und ich sehe direkt wer denn da vor der Tür steht…
    Ich weißt, das würde sich auch locker in deine Bewegungsmelder App integirieren lassen aber der Wirkungsgrad bei meinen Android Kenntnissen wäre für mich unverhältnismäßig, da fehlt mir oft der Android Tiefang und vor allem leider die Zeit mich mit mit dem Megatool Android Studio so intensiv auseinderzusetzen. Ich wollte mein System jetzt um weitere „Pi-Push-Sensoren“ erweitern und hab deine (wirklich tolle) App in Gänze mal wieder rausgekramt und fix Android Studio installiert, um eigentlich nur eine Keinigkeit zu ändern, ich wollte statt dem .setContentTitle(„Bewegungsmelder“) in den Ort, der vom Pi überliefert wird ändern.
    Aber ich kapituliere nach 2 intensiven Stack Overfow Tagen, weil ich mit den massiven Änderungen von Android Studio seither nicht klar komme.
    Ich scheitere kläglich daran, die App in das aktuelle Android Studio zu überführen, eingige Fehlermeldung beim Bauen der Gradle, wie neue Minimum SDK Anforderungen oder compile heißt jetzt implementation habe ich noch in den Griff bekommen aber bei Merge-Fehlern verschiedener Manifest-Dateien (z.B. .permission.C2D_MESSAGE) bin ich ausgestiegen, da reicht mein Level bzw. die Sucherfolge im www nicht…
    Für meine Zwecke hab ich jetzt einen Umweg über die Automate App gefunden aber ich wollte mal vorsichtig nachfragen, ob du evtl. deine App noch mal in die aktuelle Android-Studio Version überführen kannst, ich befürchte fast, bei deinem Einblick in die Developer Welt ist das mit ein paar Klicks getan :-O

    Aber unabhängig davon nochmals vielen herzlichen Dank für die Arbeit mit dem Tutorial, mir erweist die App immer noch einen treuen Dienst und die Schnittstelle Raspberry / Andoid wird mich auch zukünftig noch beschäftigen – dank Leuten wie dir ist der Einstig in solch komplexe Welten zumindest möglich 😉

    Beste Grüße
    Andy

    • Hallo Andy,

      tut mir leid, dass ich mich erst so spät bei dir melde.
      Die Version werde ich gerne einmal anheben.
      Dein Projekt klingt recht spannend. Magst du dich vielleicht mal mit mir zusammen an die Geschichte setzen? Vielleicht bekommen wir ja dein Problem gelöst und gleich dazu einen schönen Artikel für andere Hobby-Bastler mit ähnlichen Problemen zusammen.

      EDIT: Die neue Version ist hochgeladen. Alles was du nun noch tun musst sind die diversen gradle-Files aus der ZIP in dein Projekt kopieren. Unter Umständen musst du dann noch die neuesten Versionen herunterladen, aber das schlägt dir Android Studio dann in den Fehlermeldungen vor. Ich hoffe es klappt, falls nicht, dann darfst du dich gerne auch per Mail melden.

      Gruß,
      Marvin

      • Hallo Marvin,

        das ist echt nett, vielen lieben Dank!
        Muss ich unbedingt die Tage mal ausprobieren 🙂
        Klar, wenn dich das interessiert, schreib ich dir das gern mal detailliert zusammen, im Prinzip hat alles mit einer Lösungssuche als günstige bzw. modulare Türklingel im Dachgeschoss angefangen (PIR-Melder über den Pi, Netzwerk-Kamera für das Bild, Tablet für die Automation bzw. Visualisierung), mittlerweile schicke ich mir aber auch einen Screenshot vom Tab per gmail, sobald sich da vor der Tür was rührt (z.B. Besuch oder Postbote), falls ich nicht zu Hause bin. Ich will das Ganze aber noch erweitern um eine kleine Alarmanlage mittels diverser Pis und Sensoren – die gibt es ja genug, bin momentan am testen, welche Sensoren denn geeignet sind, viele Sensoren haben so ein paar Tücken, was die Zuverlässigkeit bzw. skalierung vom Breadboard auf die Dimension Haus angeht.
        Um zu automatisieren, welcher Sensor gerade anschlägt und welches Bild ich mir dann per Mail schicke, möchte ich den vom Pi übermittelten „ort“ in der App nutzen.
        Muss die Tage nur mal Zeit finden, dann schreib ich dir gern alles zusammen, was ich bis dato gebastelt bzw. welche Erfahrungen ich so gemacht hab, vielleich hat ja jemand ähnliche Ideen und man kann was allgemein sinnvolles extrahieren bzw. optimieren…

        Dann bis die Tage 🙂

        Viele Grüße
        Andy