Der Mediaserver in meinem Bestand und gerootetem Android 6.0.1 (läuft in Nexus 6) erkennt keine neuen Dateien, die mit adb erstellt oder in /sdcard verschoben wurden. Es wird nicht erkannt, bis ich einen sanften/vollständigen Neustart durchführe, den ich für inakzeptabel halte.
Ich kann mediaserver manuell über die Befehlszeile ausführen, um erneut mit dem Scannen von Dateien zu beginnen # und ich möchte, dass dies automatisch und sofort erfolgt, wenn eine neue Datei unter /sdcard erstellt wird . Im Moment lasse ich Tasker den Medienserver ausführen, wenn das USB-Kabel abgezogen wird. *
Die offensichtliche Wahl hier scheint eine Automatisierungs-App zu sein, von der ich Tasker und Automate ausprobiert habe , und beide konnten erstaunlicherweise keine neuen Dateien erkennen, insbesondere unter /sdcard/Music, wenn sie über adb erstellt wurden. Wenn jedoch eine App Dateien in einem beliebigen Verzeichnis unter /sdcard erstellt hat , haben diese beiden Apps die Änderungen sofort erkannt. Ich habe auch versucht, Dateien nach /storage/emulated/0/ statt nach /sdcard/ zu verschieben und entsprechende Änderungen an den Triggern dieser beiden Apps vorgenommen. Dieser Schritt hat mir nicht geholfen.
Es ist anzumerken, dass ich dieses Problem auch bei Standard-Android 5.1.1 und einem CM13-Snapshot-Build beobachtet habe.
Also, wie erreiche ich das Ziel?
Ich bin mir der Möglichkeit bewusst, einen Alias in dem auf meinem PC ausgeführten Betriebssystem zu erstellen, der ein Skript ausführt, das eine Möglichkeit bietet, die Datei zu verschieben und den Medienserver auszuführen. Allerdings ist es etwas, das ich so weit wie möglich vermeiden möchte.
* Ich benutzte es, wechselte aber später zu einem Skript, das vom PC unter Verwendung eines Alias ausgeführt wurde. Ich möchte mich jedoch nicht auf eine der beiden Methoden verlassen . Meine Finger fühlen sich wohl beim Tippen von adb push anstelle von adb_push oder einem anderen, aber einzelnen Wort.
adb push FILE /sdcard/FILE
sollte der Mediaserver automatisch und sofort eingreifen und die Datei scannen. Unabhängig von wahrnehmbaren Leistungsproblemen möchte ich, dass es jedes Mal einsetzt.Okay, vielleicht verwende ich einen falschen Begriff . Vielleicht sind Mediaserver und Mediascanner Begriffe für zwei verschiedene Dinge in Android. Im Falle von Verwechslungen bleiben Sie bitte sowohl bei der aktuellen Revision als auch bei der Prämiennotiz bei „Medienscanner“.
# Mit freundlicher Genehmigung von androidyue für diese hilfreiche Ressource kann jeder der folgenden Befehle in vorformatiertem Text in meinem Gerät verwendet werden, damit der Medienscanner die Datei scannt.
# FILE_PATH bezieht sich auf den Speicherort der gepushten Datei in Android. ZB /sdcard/Music/lolcat.mp3 am Broadcast -a android.intent.action.BOOT_COMPLETED -n com.android.providers.media/.MediaScannerReceiver am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file://FILE_PATH # funktioniert garantiert. Siehe https://goo.gl/lH0CLT für den Beweis. am Broadcast -a android.intent.action.MEDIA_MOUNTED -d file://FILE_PATH
Auf Vorschlag von Manubhargav habe ich Sarkies MTPFix ausprobiert, das hier verfügbar ist . Es hat nicht funktioniert, sowohl in Stock Android 6.0.1 als auch in CM13. Ich habe den folgenden Eintrag gesehen, als ich den Dienst für diese App aktiviert habe.
04-07 09:38:14.771 3383 3383 I MTPService: Watching /storage/emulated/0
Ich habe später eine Sounddatei in /storage/emulated/0/ geschoben und nichts wurde in meinem Musikplayer angezeigt. Logcat hat auch nichts brauchbares angezeigt.
Übrigens verwendet diese App FileObserver , daher bin ich nicht überrascht, wenn sie keine Dateien erkennen konnte, die mit adb erstellt wurden, da es das gleiche Problem mit den von mir ausprobierten Automatisierungs-Apps gibt.
Hinweis: Bitte posten Sie eine Antwort erst, wenn Sie es selbst getestet haben. Danke dir!
Okay, die Antwort scheint trivial zu sein. Meine Finger müssen nicht auf den Komfort des Tippens verzichten , aber ich könnte den Medienscanner veranlassen, meine übertragene Datei automatisch und sofortadb push
zu scannen . Hier ist mein Skript, das an meine Bedürfnisse angepasst wurde:
( Hinweis : Root-Zugriff ist in Android nicht erforderlich)
#!/bin/bash Funktion push_file () { target="${@: -1}"; file_path="${@: -2:1}"; [[ "$prog_bar" == "-p" ]] && adb "$@" || $call_adb push -p "$file_path" "$ziel"; } Funktion Sendung () { file_name="$(basename "$file_path")"; [[ `echo "${target: -1}"` != "/" ]] && unset file_name; [[ `echo "${target:0:1}"` != "/" ]] && target="/${target}"; $call_adb Shell 'am Broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d '"\"file://$target$file_name\""'' > /dev/null; } wenn [[ "$1" == "-s" ]]; dann if [[ "$3" == "push" ]]; dann prog_bar="$4"; call_adb="adb -s $2"; Push-Datei "$@" && Broadcast; anders adb "$@"; fi elif [[ "$1" == "drücken" ]]; dann prog_bar="$2"; call_adb="adb"; Push-Datei "$@" && Broadcast; anders adb "$@"; fi
Ich richte dann einen Alias namens adb in .bashrc wie folgt ein:
alias adb='bash FILE' # FILE refers the file path of the said script
Dies war dank des sehr hilfreichen Artikels möglich: Handhabung von Positionsparametern im Bash Hackers Wiki.
Hinweis : Das Skript erfordert mehr oder weniger ein *nix-basiertes Betriebssystem auf dem PC mit installierter Version 4.x von Bash und Unterstützung für .bashrc . Wenn Sie beabsichtigen, das Skript zu verwenden, sollten Sie es an Ihren Arbeitsstil anpassen.
Ich bin mir nicht sicher, wie der Medienscanner genau funktioniert, ich denke, dass der Medienscanner den Download-Ordner im internen Speicher ständig aktualisiert ...
Wenn etwas nicht in einem anderen Ordner angezeigt wird, kopiere ich es in den Download-Ordner und es löst den Medienscanner aus ...
Versuchen Sie, den Download-Ordner im internen Speicher als absoluten Pfad zu verwenden
adb push FILE /sdcard/DIR/
sollte der Mediaserver eingreifen und die Datei scannen.
Acejavelin
Feuerlord
Manubhargav