2011-10-21 2 views
4

J'ai un code qui capture l'écran de l'application et l'enregistre sur la carte SD et le rend disponible dans la galerie. Le problème est qu'il enregistre avec les images de l'appareil photo lorsque vous le recherchez dans la galerie. Je préfère l'enregistrer sous le dossier de téléchargement ou créer un dossier spécifique à l'application (PicSay fait quelque chose comme ça) où toutes les captures d'écran seront accessibles à l'utilisateur. À l'heure actuelle, j'utilise ce qui suit pour enregistrer dans la galerie de la caméra:Spécification d'un dossier Galerie

MediaStore.Images.Media.insertImage(getContentResolver(), imagePath, fileName, desc); 

Comment pouvez-vous obtenir pour enregistrer à un autre endroit autre que l'appareil photo?

Répondre

2

Vous pouvez utiliser les de Java normale API pour enregistrer le fichier d'image à un endroit que vous voulez dans le répertoire de stockage externe .. (Indice - en utilisant le FileOutputStream)

Le seul problème que vous devez résoudre est de dire à Andriod que vous avez ajouté un nouveau contenu, mettez à jour la base de données de contenu. Ce que la galerie peut utiliser pour afficher les images à l'utilisateur. Créez un nouveau ContentValue et insérez-le dans le ContentResolver Vous pouvez obtenir une poignée à l'ContentResolver en utilisant l'API getContentResolver()

Le ContentValue contient des informations pertinentes telles que le nom de l'image, chemin absolu, date de création, la taille du fichier, etc., tous ces obligatoires, passez par Android Doc et sélectionnez des valeurs qui ne vous concernent pas.

ContentValues values = new ContentValues(7); 

values.put(Images.Media.TITLE, title); 
values.put(Images.Media.DISPLAY_NAME, fileName); 
values.put(Images.Media.DATE_TAKEN, currTime); 
values.put(Images.Media.MIME_TYPE, "image/jpeg"); 
values.put(Images.Media.ORIENTATION, 0); 
values.put(Images.Media.DATA, filePath); 
values.put(Images.Media.SIZE, jpegData.length); 

contentResolver.insert(STORAGE_URI, values); 

Et le tour est joué, la galerie affiche l'image où il est placé :)

+1

Merci. J'ai dû changer votre dernière ligne à contentResolver.insert (Images.Media.EXTERNAL_CONTENT_URI, valeurs); mais à part ça ça fonctionne très bien. – Woodsy

+0

En fait, j'ai découvert que mon code original a fonctionné, mais il a fallu un jour ou deux Android avant de mettre à jour la galerie avec les fichiers que je stockais sur la carte SD. Votre chemin les enregistre instantanément. Merci encore. – Woodsy

+0

mon mauvais, copié à la hâte le code de mon projet. Le STORAGE_URI pointe vers le répertoire externe .. – bluefalcon