J'ai une application avec une galerie d'images et je veux que l'utilisateur puisse l'enregistrer dans sa propre galerie. J'ai créé un menu d'options avec une seule voix "enregistrer" pour permettre cela, mais le problème est ... comment puis-je enregistrer l'image dans la galerie?
c'est mon code:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.menuFinale:
imgView.setDrawingCacheEnabled(true);
Bitmap bitmap = imgView.getDrawingCache();
File root = Environment.getExternalStorageDirectory();
File file = new File(root.getAbsolutePath()+"/DCIM/Camera/img.jpg");
try
{
file.createNewFile();
FileOutputStream ostream = new FileOutputStream(file);
bitmap.compress(CompressFormat.JPEG, 100, ostream);
ostream.close();
}
catch (Exception e)
{
e.printStackTrace();
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
je ne suis pas sûr de cette partie du code:
File root = Environment.getExternalStorageDirectory();
File file = new File(root.getAbsolutePath()+"/DCIM/Camera/img.jpg");
est-il correct d'enregistrer dans la galerie? malheureusement le code ne fonctionne pas :(
android
imageview
gallery
save-image
Christian Giupponi
la source
la source
Réponses:
L'ancien code ajoutera l'image à la fin de la galerie. Si vous souhaitez modifier la date pour qu'elle apparaisse au début ou toute autre métadonnée, voir le code ci-dessous (Cortesy of SK, samkirton ):
https://gist.github.com/samkirton/0242ba81d7ca00b475b9
la source
.git
à la fin)En fait, vous pouvez enregistrer votre image à tout endroit. Si vous souhaitez enregistrer dans un espace public, afin que toute autre application puisse y accéder, utilisez ce code:
La photo ne va pas dans l'album. Pour ce faire, vous devez appeler un scan:
Vous pouvez trouver plus d'informations sur https://developer.android.com/training/camera/photobasics.html#TaskGallery
la source
J'ai essayé beaucoup de choses pour que cela fonctionne sur Marshmallow et Lollipop. Enfin, j'ai fini par déplacer l'image enregistrée dans le dossier DCIM (la nouvelle application Google Photo scanne les images uniquement si elles se trouvent apparemment dans ce dossier)
Et puis le code standard pour la numérisation des fichiers que vous pouvez également trouver sur le site Google Developers .
N'oubliez pas que ce dossier ne peut pas être présent dans tous les appareils du monde et qu'à partir de Marshmallow (API 23), vous devez demander l'autorisation de WRITE_EXTERNAL_STORAGE à l'utilisateur.
la source
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)
a fait l'affaire pour moi. Merci!getExternalStoragePublicDirectory()
est maintenant obsolète sur l'API 29. Besoin d'utiliser MediaStoreSelon ce cours , la bonne façon de procéder est:
Cela vous donnera le chemin racine du répertoire de la galerie.
la source
la source
Vous pouvez créer un répertoire dans le dossier de l'appareil photo et enregistrer l'image. Après cela, vous pouvez simplement effectuer votre analyse. Il montrera instantanément votre image dans la galerie.
la source
Je viens ici avec le même doute mais pour Xamarin pour Android, j'ai utilisé la réponse Sigrist pour faire cette méthode après avoir enregistré mon fichier:
et cela a résolu mon problème, Thx Sigrist. Je l'ai mis ici car je n'ai pas trouvé de réponse à ce sujet pour Xamarin et j'espère que cela pourra aider d'autres personnes.
la source
Dans mon cas, les solutions ci-dessus n'ont pas fonctionné, j'ai dû faire ce qui suit:
la source
ContentProvider
solution préférableCe code est dans la méthode onCreate. Ce code est pour créer un répertoire de nom_app. Maintenant, ce répertoire est accessible à l'aide de l'application de gestionnaire de fichiers par défaut dans Android. Utilisez cette chaîne filePath partout où cela est nécessaire pour définir votre dossier de destination. Je suis sûr que cette méthode fonctionne également sur Android 7 parce que j'ai testé dessus.Par conséquent, elle peut également fonctionner sur d'autres versions d'Android.
la source