Hallo,
ich bin relativ neu im programmieren und möchte ein Python Programm für meine Schwester schreiben welches Bilder von einem Android Handy auf einen Windows 10 PC überträgt, sortiert und umbennent. Das Programm soll eine grafische Benutzeroberfläche haben. Das Handy ist per USB angeschlossen und Entwicklerbefehle sind aktiviert. Das Übertragen des Ordners mit den Bildern an sich funktioniert bereits mit dem Python subprocess Modul und adb pull. Das Problem ist dass ich dazu den Dateipfad der Bilder benötige, aber bisher habe ich noch nicht herausgefunden wie ich an diesen komme.
Ich habe bereits folgendes probiert:
Ich wollte den Nutzer mit tkinter fragen den Dateipfad/Datei auszuwählen aber das funktioniert nicht.
Bei tkinter.choosedirectory() kann man nur fest verbundene Laufwerke auswählen, aber nicht das Handy.
tkinter.askopenfilename() erkennt das Handy. Man sieht die Ordner und Dateien auf dem Handy, aber wenn man eine Datei auswählt und anschließend den Dateipfad auf der Console ausgibt ist dieser falsch. Dieser ist immer das fest verbundene Laufwerk "C:/Users/.." anstatt "Dieser PC\HTC U11\Interner gemeinsamer Speicher\..."
Ich könnte den Benutzer anfangs bitten einmal den Dateipfad zu den Bildern aus dem Arbeitsplatz zu kopieren und im Programm einzufügen und dann zu speichern, aber das ist umständlich und fehleranfällig. Hat jemand eine Idee was ich noch probieren könnte?
Danke für die Hilfe
Android Dateipfad finden
Falls jemand das in Zukunft das gleiche Problem hat:
Man kann mittels python subprocess /adb pull "sdcard/..." (... durch Unterordner ersetzen) ausführen. Nach meinem Test sieht es so aus dass man damit sowohl von der SD Karte als auch vom internen Speicher die Daten auf den PC kopiert. Es scheint also egal zu sein wo der Nutzer den Speicherort festgelegt hat. Nun ärgere ich mich etwas, da ich mir so viel Mühe umsonst gemacht habe. Naja für die Zukunft weiß ich zuerst ein mal probieren bevor man ewig entwickelt.
Bevor allerdings adb pull ausführt sollte man /adb start-server und dann /adb devices machen um zu sehen ob die Verbindung zum Handy aufgebaut wurde. Am schluß dann /adb kill-server. Der Nutzer muss an seinem Handy auch USB Debugging aktiviert haben und den Verbindungsaufbau bestätigen.
Man kann mittels python subprocess /adb pull "sdcard/..." (... durch Unterordner ersetzen) ausführen. Nach meinem Test sieht es so aus dass man damit sowohl von der SD Karte als auch vom internen Speicher die Daten auf den PC kopiert. Es scheint also egal zu sein wo der Nutzer den Speicherort festgelegt hat. Nun ärgere ich mich etwas, da ich mir so viel Mühe umsonst gemacht habe. Naja für die Zukunft weiß ich zuerst ein mal probieren bevor man ewig entwickelt.

Bevor allerdings adb pull ausführt sollte man /adb start-server und dann /adb devices machen um zu sehen ob die Verbindung zum Handy aufgebaut wurde. Am schluß dann /adb kill-server. Der Nutzer muss an seinem Handy auch USB Debugging aktiviert haben und den Verbindungsaufbau bestätigen.