# Android USB Verbindung zu Windows Programm



## Franz S. (28. Jan 2014)

Hey Leute,

Ich bin neu hier im Forum und habe derzeit mit einem Kameraden ein Projekt am laufen welches wir am Ende unserer Lehre vor der gesamten Lehreinrichtung präsentieren müssen und bräuchte da mal Hilfe bei einer Sache wo ich bis jetzt noch keinen genauen Überblick habe.

Als Zielsetzung schreiben wir für Android 4.0.3 oder höher ein Fahrtenbuch welches ich bereits damals in einem Praktikum angefangen habe und auch so schon in seiner Grundfunktion funktioniert.
Die Daten welche durch die App erfasst sind, sind die GPS Daten und Lokalisierungen von Google (also Straße, PLZ, ...), welche in einer SQL DB gesichert auf dem Gerät gesichert werden.

Soweit so gut.

Nun wollen wir eine Software für Windows schreiben, die es uns erlaubt diese Daten auf dem Android Gerät via USB Verbindung in dem Programm für Windows zu verarbeiten.

Wir brauchen also sozusagen eine Schnittstelle von unserem Android Gerät über USB zu unserem Windows PC.

Wie genau kann ich diese Verbindung im Android einrichten?
Ist das überhaupt möglich?
Ich hatte bereits etwas gelesen zu USB Host und USB Accessory aber so wie ich das verstanden habe geht es da eher um Usb Stick, Maus, Festplatten, o.ä..

Die Applikation in Windows kann auch mit Java geschrieben werden mein Kollege bevorzugt allerdings C++ (aber da wird er wohl Java sich anschauen müssen wenn das einfacher ist ).
Programmierkenntnisse sind vorhanden und ich kann auch mit Fachbegriffen was anfangen 

Es wäre super wenn ihr mir da helfen könntet 

Liebe Grüße
Franz


----------



## dzim (28. Jan 2014)

Ich glaube mit USB allein wird es schwierig, da Android in 4+ eigentlich nur noch die beiden Transferprotokolle anbietet, die entweder Zugriff auf den Speicher des Geräts oder die Kamera zulassen.

Variante 1: Wenn Ihr aktiv in euer Desktop-Anwendung die Quelle angeben wollt, könntet ihr eure DB auf den External Storage in Android exportieren (Android-Seite) und dann in der Desktop-Anwendung auswählen. Das ist aber eher umständlich und bestimmt nicht ganz dass, was ihr wollt. Mit ADB könntet ihr sicher auch arbeiten, aber hier steht ihr auch vor dem Problem, dass ihr bei einem ungerootetem Gerät nicht auf die interne DB kommt, ihr müsstet sie also auch exportieren. Oder aber - wenn die Daten keine Geheimnis sein sollen - ihr schreibt die DB gleich immer nur im externen Speicher.
Aber: Das mag zwar alles gehen, ist aber alles andere als hübsch.

Variante 2: Hier wäre C++ wahrscheinlich im Vorteil. Ihr könntet eure Daten via Bluetoth freigeben. Allerdings habe ich davon keine Ahnung und kann überhaut nichts dazu sagen.

Variante 3: Zurück zu Java. Schreibt einen minimalen Server auf dem Android-Gerät (Sockets, Apache, oder wie auch immer), das ganze in einen Service verpackt, den ihr via Notification (und App-GUI) jederzeit stoppen könnt (es sollte dem Nutzer IMHO immer klar sein, wenn so eine potentielle Sicheritslücke aktiv ist).
Bsp: Create http server android - Stack Overflow

@all: Fällt den anderen hier im Forum was besseres ein? Ich persönlich tendiere zu der dritten Variante, weil ich denke es ist die einfachste und pragmatischste Lösung - ihr müsste euch nur über ein Daten-Austausch-Format Gedanken machen.

Grüsse,
Daniel

PS: Habt ihr euch schon Gedanken über die Desktop-UI gemacht? Swing/SWT/JavaFX? Ich empfehle JavaFX und bin im Forum unter AWT, Swing, JavaFX & SWT - Java-Forum.org da auch gern bereit - so gut es eben geht - Fragen zu beantworten (wenn ich es kann).


----------



## Franz S. (28. Jan 2014)

Hi,

danke schon mal für die Antwort die Methode über Sockets scheint mir auf den ersten Blick wirklich die einfachste und auch eine der sinnvollsten zu sein.

Das werden wir mal in Angriff nehmen danke schon mal.

Hätte man eigentlich auch selber drauf kommen können 
Aber wie sagt dann simpelsten Antworten sind immer die die einem nie einfallen 

Zwecks GUI für die Windows Applikation...
Nun ja mein Kollege schreibt ja in C++, was durch Sockets auch kein Problem darstellt das zu nutzen, daher wird er sicher QT dafür nehmen aber ich werde für meine Java Anwendungen auf dich zurückkommen danke


----------



## dzim (28. Jan 2014)

Ah. Nein um Gottes Willen: Verwende Qt! Bei aller Liebe zu JavaFX, bin ich im Moment sowieso auf alle neidisch, die C++, QML u.s.w. können!
Ich hätte gern, dass der Tag länger wäre, ich weniger Schlaf benötigen würde und mehr Elan für komplett neue Sachen in meiner Freizeit hätte!


----------

