J'essaie de faire une application où l'utilisateur peut prendre une photo et cette image est stockée dans une imageview. J'ai essayé des dizaines de méthodes pour que cela fonctionne.Android: Comment prendre une photo avec l'appareil photo et stocker l'image en pleine résolution dans imagview?
Beaucoup de réponses que j'ai vues suggèrent d'utiliser data.getExtra ("data") en utilisant l'intention de MediaStore et en passant dans ACTION_CAMERA_CAPTURE. Cela renvoie une image plus petite et l'image que j'essaie d'afficher est grande, donc l'image apparaît floue en utilisant cette méthode.
L'autre option consiste à utiliser cette même méthode et à passer dans EXTRA_OUTPUT. Cependant, cela nécessite de mettre dans l'emplacement de stockage et chaque réponse que j'ai vu me dit de mettre dans Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_PICTURES). Cependant quand j'essaye de faire data.getData() dans onActivityResult j'obtiens null. Comment puis-je faire cela? méthode
alert.setPositiveButton("Take Photo", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
profileFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "image_" +
String.valueOf(System.currentTimeMillis()) + ".jpg");
profile = Uri.fromFile(profileFile);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, profile);
startActivityForResult(intent, 1);
}
});
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == RESULT_OK) {
ImageView imageView = (ImageView) findViewById(R.id.ProfileImage);
//This returns null.
//I am guessing that the Environment.getExternalSt...() method is getting a storage
//location that does not exist.
//I don't know what the correct storage location is and I have not
//been able to find it.
Uri u = data.getData();
File finalFile = new File(getRealPathFromURI(u));
Picasso.with(this).load(finalFile).into(imageView);
}
}
Que voulez-vous dire que le EXTRA_OUTPUT n'est pas retourné? Comment puis-je obtenir les données d'intention si cela ne va pas? En outre, j'ai cherché l'emplacement de stockage sur mon téléphone, mais je n'ai pas pu le trouver. Je l'ai trouvé en regardant mon stockage de téléphone sur mon ordinateur. C'est l'emplacement [link] (http://i.imgur.com/MgAYa9U.png) (ne sait pas si ça aide). Savez-vous comment je pourrais l'obtenir pour stocker dans l'emplacement de la galerie à la place? [link] (http://i.imgur.com/GhdIWB8.png) – kindOfABigDeal
En fait, le dossier qu'il essaye d'obtenir est faux. Cela me donne cet emplacement/storage/emulated/0/Pictures/qui n'existe pas. Cela devrait me donner un répertoire de photos dans la dernière image. – kindOfABigDeal
@kindOfABigDeal: "Que voulez-vous dire que EXTRA_OUTPUT n'est pas retourné?" - Je veux dire que vous devez garder la valeur que vous mettez dans EXTRA_OUTPUT. Cette valeur ne vous revient pas dans le résultat "Intent"."En fait, le dossier qu'il essaie d'obtenir est faux" - très probablement, c'est un emplacement correct pour [stockage externe] (https://commonsware.com/blog/2014/04/08/storage-situation-external- storage.html). – CommonsWare