Déclencheur mediascanner sur le chemin d'accès spécifique (dossier), comment?
J'ai obtenu cette classe:
import android.content.Context;
import android.media.MediaScannerConnection;
import android.net.Uri;
import android.util.Log;
public class MediaScannerWrapper implements
MediaScannerConnection.MediaScannerConnectionClient {
private MediaScannerConnection mConnection;
private String mPath;
private String mMimeType;
//filePath - where to scan;
//mime type of media to scan i.e. "image/jpeg".
//use "*/*" for any media
public MediaScannerWrapper(Context ctx, String filePath, String mime){
mPath = "/sdcard/DCIM/Camera";
mMimeType = "jpg";
mConnection = new MediaScannerConnection(ctx, this);
}
//do the scanning
public void scan() {
mConnection.connect();
}
//start the scan when scanner is ready
public void onMediaScannerConnected() {
mConnection.scanFile(mPath, mMimeType);
Log.w("MediaScannerWrapper", "media file scanned: " + mPath);
}
public void onScanCompleted(String path, Uri uri) {
//when scan is completes, update media file tags
}
}
Comment l'utiliser dans l'autre classe?
Je ne sais pas comment utiliser correctement les classes, j'ai essayé mais rien ne fonctionne.
Je fais quelque chose de mal, mais je ne sais pas quoi, quelqu'un peut-il m'aider avec cela.
Parlez-vous ce post?
Oh, n'ont pas trouvé ce post, merci!
Pouvez-vous m'aider, je suis vraiment mauvais avec des classes et de telles choses en Java.
Qu'est-ce que vous voulez faire exactement?
Avec mon programme, j'ai modifier le nom d'une image, puis lorsque j'essaie d'ouvrir à nouveau l'image (même application, sans la fermer), il n'est pas reconize la photo de plus. Cependant, après une mediascan, il ne reconize. Donc, je veux numériser un chemin ou un fichier, de sorte que l'application reconize le changement de nom.
Oh, n'ont pas trouvé ce post, merci!
Pouvez-vous m'aider, je suis vraiment mauvais avec des classes et de telles choses en Java.
Qu'est-ce que vous voulez faire exactement?
Avec mon programme, j'ai modifier le nom d'une image, puis lorsque j'essaie d'ouvrir à nouveau l'image (même application, sans la fermer), il n'est pas reconize la photo de plus. Cependant, après une mediascan, il ne reconize. Donc, je veux numériser un chemin ou un fichier, de sorte que l'application reconize le changement de nom.
OriginalL'auteur Bigflow | 2012-02-23
Vous devez vous connecter pour publier un commentaire.
L'Histoire
Avant d'Android 4.4, nous pourrions simplement envoyer une diffusion à déclencher la d'analyse des médias sur un fichier ou un dossier, ou même à la racine de l'espace de stockage. Mais à partir de 4.4 KitKat, cela a été corrigé par les Développeurs Android.
Pourquoi dois-je dire? La raison en est simple. L'envoi d'une émission à l'aide de MEDIA_MOUNTED sur le répertoire racine est très cher. L'exécution de l'analyse des Médias est une opération coûteuse et la situation est encore pire lorsque l'utilisateur a obtenu un grand nombre de fichiers dans le stockage et la profondeur des structures de dossier.
Avant D'Android 4.4
De le maintenir droit et simple. Si vous ciblez votre application avant d'Android 4.4. Mais gardez à l'esprit de ne pas l'utiliser sur le répertoire racine, sauf si absolument nécessaire.
À Partir D'Android 4.4
Il ya deux façons pour vous.
i) La première est très similaire à l'exemple précédent, mais peut ne pas fonctionner efficacement et n'est pas recommandé de trop.
ii) Maintenant, laissez-nous passer à la plus recommandée et la solution efficace à ce problème.
Ajouter les chemins d'accès des fichiers qui ont été mis à jour, comme ça, dans une Chaîne de caractères de type ArrayList
Maintenant, vous devez exécuter scanFile() méthode statique de la MediaScannerConnection de classe et de passer le tableau de chaînes contenant la liste de tous les fichiers qui ont été mis à jour et doit être médias numérisés.
Vous pouvez aussi mettre un écouteur à répondre lorsque la numérisation est terminée pour les fichiers individuels.
façon je n'a pas d'effet (les commentaires se réfèrent à Android 5)
Lorsque je copie un fichier dans le dossier des Sonneries, et laissez Media Scanner le scanner, il s'affiche immédiatement sur le son sélecteur de ! Cependant, après j'ai mon app supprimer le fichier dans le dossier des Sonneries, je le laisse media scanner le scanner (
onScanCompleted()
déclenche avec l'uri = null), pourtant, les médias sélecteur montre que la fichier. Que faire après la suppression du fichier, de sorte que le manipulateur ne s'affiche plus ?ce doit être la plus appropriée de répondre à la place de la accepté de répondre ci-dessous, que l'on a accepté la réponse ne fait pas de scan chemin, +1
ii) - ne fonctionne pas sur Android 7, Nexus 5x: sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uriToMyDir)); Le dossier était à la racine de la mémoire interne. La seule approche avec scanFile aidé.
OriginalL'auteur Aritra Roy
Hey j'ai trouvé comment le faire avec un code très simple.
Suffit d'appeler cette ligne de code:
Ce qui devrait déclencher mediascanner.
L'intention.ACTION_MEDIA_MOUNTED s'arrête sur Android 4.4+ appareils que l'intention est aujourd'hui limitée à des applications système.
OriginalL'auteur Bigflow
Dans Android, il existe une base de données de contenu qui est utilisé par les médias de scanner pour garder la trace de tout le contenu multimédia présent sur le périphérique.
Quand Android démarre, le mediascanner service est lancé et fonctionne par le biais de l'ensemble de stockage externe afin de déterminer s'il existe un contenu des nouveaux médias, s'il en trouve un, puis,
Au lieu de l'exécution de l'analyse des médias, vous pouvez mettre à jour la base de données de contenu vous-même et il devrait résoudre le problème.
Voici un explication sur la façon d'insérer, de supprimer, de mettre à jour en utilisant le contenu de résolution. (Recherche de la section "Insertion, mise à Jour et Suppression de Données")
Edit:
Il y a un exemple de code dans cet réponse. Vérifier la réponse par Janusz.
Il a, ajouté ma propre réponse, je viens de trouver ce code, encore plus facile à utiliser 🙂
OriginalL'auteur bluefalcon
OriginalL'auteur abhi5306
Référence: http://developer.android.com/training/camera/photobasics.html#TaskGallery
La
Add the Photo to a Gallery
SectionOriginalL'auteur Loyea
@Aritra Roy réponse, je décide de faire une expérience sur cette question.
Ce que j'ai ici sont:
peut accepter les chemin d'accès au fichier, de sorte sendBroadcast(nouveau
Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse(filePath)));
ou sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
Uri.parse(filePath))); sera valide.
À partir de cette expérience, je pense que la meilleure méthode pour gérer les est
Laissez-moi savoir si j'ai raté quelque chose
OriginalL'auteur HendraWD