GPS Daten per TCP/IP versenden.

  • Hallo,
    ich bin noch ziemlich Android-unerfahren und grüble schon seit vielen Tagen über ein Problem.
    Ich bin nicht sicher, ob das mit meinem Konzept überhaupt machbar ist, und benötige dringend eure Hilfe:


    Ich möchte eine App schreiben, die zyklisch die Position des Handys per Fused Location Provider Client abfragt.
    Wenn ich in die Nähe meiner Heimatkoordinaten komme, soll per TCP/IP ein Kommando an meinen Server zuhause gesendet werden.


    Zunächst habe ich zum Test 2 getrennte Apps verwendet:
    1. Senden von beliebigen TCP/IP Daten an meinen Server zuhause.
    Die Main Activity erzeugt einfach einen Thread, übergibt im Konstruktor des Threads die Sendedaten, und der Thread beendet sich einfach wieder selbst,
    wenn er das Kommando verschickt hat.
    Das funktioniert soweit.


    2. Zyklisches feststellen der Position.
    Da das auch dann funktionieren soll, wenn die App im Hintergrund oder gar beendet worden ist, stoße ich in der App einfach zyklische Location Updates an,
    und diese landen in der onReceive-Methode eines Broadcast-Receivers.
    Das funktioniert auch (auch wenn die App beendet wurde ).


    Jetzt mein Problem:
    Wenn ich versuche, beide Apps zu einer zusammenzufügen, (den funktionierenden TCP/IP-Thread aus der ersten App
    in die zweite einbauen) stürzt meine App ab.


    Meine Frage:
    Geht das überhaupt, aus der onReceive-Methode eines Broadcast-Receivers TCP-IP Daten übers Netzwerk zu schicken?
    Wenn ja, muss man da was Spezielles beachten?


    Ich habe mal den Code des TCT/IP Threads hinzugefügt.
    Diesen Thread erzeuge und starte ich aus der onReceive-Methode des Broadcast Receivers
    Kommentiert man alles aus, was direkt mit dem Netzwerk zu tun hat, läuft die App.
    Sobald ich einen Socket erstelle beendet sich die App.

  • Hallo


    Also ich würde sagen deine Host Adresse ist falsch. Die wird nicht aufgelöst.
    Teste es im Browser.


    Benutze mal die IP Adresse .zb 104.31.67.161



    Oder benutze den richtigen String der auch aufgelöst werden kann.



    public static final String SERVER_HOST = "Meinhost.de";
    ist falsch


    public static final String SERVER_HOST = www.mine-host.de;
    sollte es wohl heißen.

  • Danke für die Antworten, hab's selber gefunden ( PEINLICH !!! ).
    Beim Zusammenkopieren aus beiden Projekten habe ich versehentlich die Internet-Permission
    in der falschen Manifest-Datei editiert.


    Jetzt habe ich nur noch das Problem, das die Anwendung abstürzt, wenn ich die Location Updates
    deaktiviere ( removeLocationUpdates(getPendingIntent() )


    Zum Thema "selber programmieren lohnt nicht": Lohnt doch. Wenn man was lernen will !

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!