Faire de MediaServer Scannez immédiatement un fichier créé via adb -- adb domaine et automation domaine et media-scanner domain android en relation problème

Making mediaserver immediately scan a file created through ADB



6
vote

problème

français

Le mediaserver dans mon stock et enraciné Android 6.0.1 (en cours d'exécution dans le Nexus 6) ne détecte pas de nouveaux fichiers créés ou déplacés dans / sdcard en utilisant adb. Il ne détecte pas jusqu'à ce que je fasse un redémarrage doux / complet que je trouve inacceptable à effectuer.

Je suis en mesure d'utiliser exécuter manuellement mediaserver de ligne de commande pour lancer la numérisation de fichiers à nouveau # et je veux que cela soit fait automatiquement et immédiatement chaque fois qu'un Un nouveau fichier est créé sous / sdcard . Pour l'instant, je Tasker courir le mediaserver chaque fois que le câble USB est débranché. *

Le choix évident semble être ici une application d'automatisation dont j'ai essayé Tasker et Automatiser , et les deux étonnamment n'a pas détecté de nouveaux fichiers, en particulier sous / sdcard / Musique, lors de sa création par ADB. Toutefois, si une application crée des fichiers dans n'importe quel répertoire sous / sdcard ces deux applications ont immédiatement détecté les modifications. J'ai aussi essayé de pousser les fichiers / stockage / émulé / 0 / au lieu de / sdcard / et fait des changements correspondants dans l'étape de triggers.That de ces deux applications ne me bénéficient .

Il est à noter que j'ai observé ce problème en stock Android 5.1.1 et la construction d'un CM13 ainsi.

Alors, comment puis-je atteindre l'objectif?

Mise à jour

Je suis au courant de la possibilité de créer un alias dans le système d'exploitation en cours d'exécution dans mon PC qui exécute un script fournissant un moyen de pousser le fichier ainsi que d'exécuter le mediaserver. Cependant, je voudrais éviter autant que possible.

* Je l'ai utilisé, mais plus tard à un basculé script exécuté à partir du PC en utilisant un alias. Cependant, Je ne veux pas dépendre de l'une des deux méthodes . Mes doigts sont à l'aise avec taper adb pousser au lieu de adb_push ou un autre, mais seul mot.

Mise à jour 2

  • Je ne veux pas me limiter à un répertoire particulier, comme le téléchargement et les fichiers ni pousser dans cette dernière fonctionne réellement.
  • Je voudrais souligner que je ne demande pas comment exécuter mediaServer . Que je connais déjà. Tout ce que je suis à la recherche est la suivante: Chaque fois que je fais adb push FILE /sdcard/FILE le mediaserver doit automatiquement et immédiatement lancer et analyse le fichier. Indépendamment de tout problème de performance perceptible, je veux que cela frappe à chaque fois.

Mise à jour 3

D'accord, Je peux utiliser un terme incorrect . Peut-être mediaServer et le scanner multimédia sont des termes de deux choses différentes dans Android. En cas de confusion, veuillez rester avec "Scanner multimédia" pour la révision actuelle et la note de prime.

Mise à jour 4

# courtoisie d'androidyue pour Cette ressource utile , l'une des commandes suivantes dans le texte préformaté est ce que je peux utiliser dans mon appareil pour créer un scanner multimédia scanner le fichier.

# File_Path fait référence à l'emplacement du fichier poussé dans Android. Par exemple. /sdcard/music/lolcat.mp3 AM Broadcast -A Android.Intent.Action.Complet.Completed -n com.android.providers.Media/.MediascannerReceur AM Broadcast -A Android.Intent.Action.Media_Scanner_Scan_File -D Fichier: // File_Path # Garanti de travailler. Voir https://goo.gl/LH0CLT pour la preuve. AM Broadcast -A Android.Intente.Action.Media_mounted -D Fichier: // File_Path

Mise à jour 5

par Suggestion de MANUBHARGAV, j'ai essayé MTPFIX de Sarkie Disponible ici . Ça n'a pas fonctionné Les deux en stock Android 6.0.1 et CM13. J'ai vu l'entrée suivante lorsque j'ai activé le service pour cette application.

04-07 09:38:14.771 3383 3383 I MTPService: Watching /storage/emulated/0

J'ai ensuite poussé un fichier son dans / stockage / émulé / 0 / et rien n'a montré dans mon lecteur de musique. LogCat n'a également rien affiché d'utile non plus.

Au fait, cette application utilise FileObserver , donc je ne suis pas surpris s'il ne pouvait pas détecter les fichiers créés à l'aide de ADB, car il s'agit du même problème avec les applications d'automatisation que j'ai essayées.

Note: Veuillez poster une réponse uniquement lorsque vous l'avez testé vous-même. Merci!

langue Anglaise

The mediaserver in my stock and rooted Android 6.0.1 (running in Nexus 6) doesn't detect new files created or moved to into /sdcard using adb. It doesn't detect until I do a soft/full reboot which I find unacceptable to perform.

I'm able to manually run mediaserver using command-line to begin file scanning again# and I want this to be done automatically and immediately whenever a new file is created under /sdcard. At the moment, I have Tasker run the mediaserver whenever USB cable is unplugged.*

The obvious choice here seems to be an automation app of which I tried Tasker and Automate, and both amazingly failed to detect new files, particularly under /sdcard/Music, when created through adb. However, if an app created files in any directory under /sdcard those two apps immediately detected the changes. I also tried pushing files to /storage/emulated/0/ instead of /sdcard/ and made corresponding changes in those two apps' triggers.That step didn't benefit me.

It is to be noted that I observed this problem in stock Android 5.1.1 and a CM13 snapshot build as well.

So, how do I achieve the goal?

Update

I'm aware of the possibility of creating an alias in the OS running in my PC which would execute a script providing a way to push the file as well as run the mediaserver. However, it is something I would like to avoid as much as possible.

* I was using it but later switched to a script executed from PC using an alias. However, I do not want to depend upon any of the two methods. My fingers are comfortable with typing adb push instead of adb_push or some other but single word.

Update 2

  • I do not intend to restrict myself to a particular directory, such as Download and neither pushing files into the latter actually works.
  • I would like to stress that I'm not asking for how to run mediaserver. That I already know. All I'm looking for is: Whenever I do adb push FILE /sdcard/FILE the mediaserver should automatically and immediately kick in and scans the file. Regardless of any perceivable performance issue, I want it to kick in every single time.

Update 3

Okay, I may be using an incorrect term. Perhaps mediaserver and media scanner are terms for two different things in Android. In the case of confusion, please stick with "media scanner" for both the current revision and the bounty note.

Update 4

# Courtesy of androidyue for this helpful resource, any of the following command in preformatted text is what I can use in my device to make media scanner scan the file.

 # FILE_PATH refers to the location of pushed file in Android. E.g. /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   # guaranteed to work. See https://goo.gl/lH0CLT for proof. am broadcast -a android.intent.action.MEDIA_MOUNTED -d file://FILE_PATH  

Update 5

Per the suggestion from Manubhargav, I tried Sarkie's MTPFix available here. It didn't work, both in stock Android 6.0.1 and CM13. I saw the following entry when I enabled the service for that app.

04-07 09:38:14.771  3383  3383 I MTPService: Watching /storage/emulated/0 

I later pushed a sound file into /storage/emulated/0/ and nothing showed up in my music player. Logcat also didn't display anything useful either.

By the way, this app uses FileObserver, so I'm not surprised if it couldn't detect files created using adb, since it is the same issue with the automation apps I tried.


Note: Please post an answer only when you've tested it yourself. Thank you!

        
 
 

Liste de réponses

2
 
vote
vote
Meilleure réponse
 

D'accord, il semble que la réponse soit triviale. Mes doigts n'ont pas à perdre le confort de la dactylographie adb push , mais je serais en mesure de causer le scanner multimédia Scannez mon fichier poussé, automatiquement et immédiatement . Voici mon script a peauflé à mes besoins:

( note : l'accès root est pas requis dans Android)

#! / bin / bash Fonction push_file () { cible = "$ {@: -1}"; file_path = "$ {@: -2: 1}"; [["$ prog_bar" == "-p"]] & amp; & amp; adb "$ @" || $ call_adb push -p "$ file_path" "$ cible"; } diffusion de fonction () { file_name = "$ (basename" $ ​​file_path ")"; [`` echo "$ {cible: -1}" `! =" / "]] & amp; & amp; Nom de fichier non défini; [`` `echo" $ {cible: 0: 1} "`! = "/"]] & amp; & amp; cible = "/ $ {cible}"; $ call_adb shell 'am radiodiature -a android.inent.action.media_scanner_scan_file -d' "" fichier: // $ cible $ file_name "" '' & gt; / dev / null; } Si ["$ 1" == "-s"]]]; ensuite Si [["3 $" == "PUSH"]]]; ensuite prog_bar = "4 $"; call_adb = "adb -s $ 2"; push_file "$ @" & amp; & amp; diffuser; autre adb "$ @"; Fi elif [["1 $" == "push"]]; ensuite prog_bar = "2 $"; call_adb = "adb"; push_file "$ @" & amp; & amp; diffuser; autre adb "$ @"; Fi

J'ai ensuite configuré un alias nommé adb dans .bstrucc comme ceci:

alias adb='bash FILE' # FILE refers the file path of the said script

Ceci était possible grâce à l'article très utile: Manipulation des paramètres de position à Bash hackers wiki.

note : le script plus ou moins nécessite un système d'exploitation basé sur un * Nix sur PC avec la version 4.x de bash installée et la prise en charge de .bscrc . Si vous avez l'intention d'utiliser le script, vous êtes encouragé à le modifier en fonction de votre style de travail.

 

Okay, it seems the answer is trivial. My fingers don't have to lose the comfort of typing adb push, yet I would be able to cause media scanner scan my pushed file, automatically and immediately. Here's my script tweaked to my needs:

(Note: root access is not required in Android)

 #!/bin/bash  function push_file () {     target="${@: -1}";     file_path="${@: -2:1}";     [[ "$prog_bar" == "-p" ]] && adb "$@" || $call_adb push -p "$file_path" "$target"; }  function broadcast () {     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; }  if [[ "$1" == "-s" ]]; then     if [[ "$3" == "push" ]]; then         prog_bar="$4";         call_adb="adb -s $2";         push_file "$@" && broadcast;     else         adb "$@";     fi elif [[ "$1" == "push" ]]; then         prog_bar="$2";         call_adb="adb";         push_file "$@" && broadcast; else     adb "$@"; fi 

I then setup an alias named adb in .bashrc like this:

alias adb='bash FILE'  # FILE refers the file path of the said script 

This was possible thanks to the very helpful article: Handling positional parameters at Bash Hackers Wiki.

Note: the script more or less requires a *nix based OS in PC with version 4.x of Bash installed and support for .bashrc. If you intend to use the script, you're encouraged to edit it to suit your working style.

 
 
0
 
vote

Je ne sais pas comment le scanner multimédia fonctionne exactement, Je pense que le scanner multimédia met à jour constamment le dossier de téléchargement à l'intérieur du stockage interne ...

Si quelque chose n'apparaît pas dans un autre dossier, je le copie dans le dossier de téléchargement et déclenche le scanner multimédia ...

Essayez d'utiliser le dossier de téléchargement à l'intérieur du stockage interne comme chemin absolu

 

I'm not sure how the media scanner works exactly, I think that the media scanner constantly updates the Download folder inside internal storage...

if something doesn't show up inside another folder, i copy it to the download folder and it triggers media scanner...

Try using Download folder inside Internal Storage as the absolute path

 
 
         
         

Questions connexes

8  Pourquoi le stockage des supports d'Android ne peut-il pas détecter mon nouveau fichier de sonnerie?  ( Why cant android media storage detect my new ringtone file ) 
J'ai eu ce problème sur le Nexus 4 et Nexus 5 (de tous les téléphones). J'ai un fichier, c'est le même fichier de sonnerie que j'utilise sur tous mes téléph...

2  Comment supprimer un fichier une fois qu'il est créé par une application?  ( How to delete a file once it is created by an app ) 
Cette question s'applique à tout fichier créé par une application, mais c'est la description de mon problème. J'ai une application installée dans mon téléph...

1  Le fichier .NomeDIA ne cache pas d'images nouvellement créées. Solution?  ( Nomedia file not hiding newly created images solution ) 
Note 5 Exécution 5.1.1 Voici mon problème ... Un fichier .nomedia placé dans un dossier qui télécharge automatiquement l'album Art ne cachera que les imag...

1  Comment puis-je arrêter la numérisation des médias?  ( How can i stop media scanning ) 
J'ai un LG L7 mobile. À partir de 2 jours, j'ai un grave problème de numérisation des fichiers multimédias. J'allume mon mobile et la numérisation des fichier...

2  Est-il possible d'ajouter des dossiers arbitraires au scanner multimédia?  ( Is it possible to add arbitrary folders to the media scanner ) 
J'ai un Samsung Captivate Glide et j'ai 4 gigues de stockage qui ne sont pas stockées principales et ce n'est pas la mémoire de la carte SD. Il apparaît comme...

0  Ajout correctement des films à un Nexus 7  ( Correctly adding movies to a nexus 7 ) 
J'ai récemment reçu un Nexus 7 (modèle de cette année), et je ne peux pas sembler pouvoir ajouter des films correctement. J'ai glissé un tas de répertoires, c...

21  Le lecteur de musique continue à afficher des chansons supprimées. Comment les supprimer ou rafraîchir la bibliothèque?  ( The music player keeps displaying deleted songs how do i remove them or refresh ) 
J'utilise un droïde x avec un pain d'épice enraciné qui est autrement stock. J'ai un accès root, mais je ne l'ai pas utilisé pour faire quoi que ce soit. J'...

2  Comment réinstaller MediaScanerservice?  ( How do i reinstall mediascannerservice ) 
J'ai récemment enraciné mon exposition Samsung II. et traversait et supprimait un peu de blatware et de la graisse accidentellement des doigts et supprimé le ...

0  toujours un mystère. Thumbdata3 espace de fichier et performance porc  ( Still a mystery thumbdata3 file space performance hog ) 
Je ne sais tout simplement pas comment résoudre ce problème. J'ai essayé presque tout et abandonner. J'ai lu d'autres threads sur quoi faire s'il y a .thumbd...

2  "MediaServer" sous gestion de l'alimentation / utilisation de la batterie (Xperia ZL)  ( Mediaserver under power management battery usage xperia zl ) 
J'ai un Sony Xperia ZL exécutant Android 4.2.2. Il existe un processus d'arrière-plan nommé "mediaServer" qui utilise la plupart de ma batterie, tandis que le...




© 2022 www.demandez.top All Rights Reserved. Questions et réponses Accueil Tous les droits sont réservés