Comment obtenir le chemin de l'image dans onActivityresult (Intention de données est nulle)
J'ai pour lancer l'appareil photo, et lorsque l'utilisateur a fait la photo, j'ai de la prendre et de l'afficher dans une vue.
Regardant http://developer.android.com/guide/topics/media/camera.html j'ai fait:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bLaunchCamera = (Button) findViewById(R.id.launchCamera);
bLaunchCamera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "lanzando camara");
//create intent to launch camera
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
imageUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE); //create a file to save the image
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); //set the image file name
//start camera
startActivityForResult(intent, CAMERA_REQUEST);
}
});
/**
* Create a File Uri for saving image (can be sued to save video to)
**/
private Uri getOutputMediaFileUri(int mediaTypeImage) {
return Uri.fromFile(getOutputMediaFile(mediaTypeImage));
}
/**
* Create a File for saving image (can be sued to save video to)
**/
private File getOutputMediaFile(int mediaType) {
//To be safe, is necessary to check if SDCard is mounted
File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
(String) getResources().getText(R.string.app_name));
//create the storage directory if it does not exist
if (!mediaStorageDir.exists()) {
if (!mediaStorageDir.mkdirs()) {
Log.d(TAG, "failed to create directory");
return null;
}
}
//Create a media file name
String timeStamp = new SimpleDateFormat("ddMMyyyy_HHmmss").format(new Date());
File mediaFile;
if (mediaType == MEDIA_TYPE_IMAGE) {
mediaFile = new File(mediaStorageDir.getPath() + File.separator + "IMG_" + timeStamp + ".jpg");
} else {
return null;
}
return mediaFile;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == CAMERA_REQUEST) {
if(resultCode == RESULT_OK) {
//Image captured and saved to fileUri specified in Intent
Toast.makeText(this, "image saved to:\n" + data.getData(), Toast.LENGTH_LONG).show();
Log.d(TAG, "lanzando camara");
} else if(resultCode == RESULT_CANCELED) {
//user cancelled the image capture;
Log.d(TAG, "usuario a cancelado la captura");
} else {
//image capture failed, advise user;
Log.d(TAG, "algo a fallado");
}
}
}
Lorsque la photo a été fait, l'application se bloque lorsqu'il essaie d'envoyer le 'Toast' info parce que les "données" est null.
Mais si je déboguer l'application, je peux voir que l'image a été sauvegardée.
Donc ma question est: Comment puis-je obtenir le chemin d'accès dans le onActivityResult?
OriginalL'auteur Shudy | 2015-09-01
Vous devez vous connecter pour publier un commentaire.
Voici le code que j'ai utilisé pour la Capture et l'Enregistrement de la Caméra de l'Image puis de l'afficher à l'imageview. Vous pouvez utiliser en fonction de votre besoin.
Vous devez enregistrer l'image de la Caméra à l'emplacement spécifique de récupérer à partir de cet emplacement puis de le convertir en tableau d'octets.
Ici, c'est la méthode pour l'ouverture de la capture d'image de la caméra de l'activité.
Ici est getBitmap() la méthode utilisée dans onActivityResult(). J'ai fait tout l'amélioration de la performance qui peut être possible lors de l'obtention de la caméra de capture de l'image bitmap.
J'espère que cela aide!
OriginalL'auteur Rajesh
Amigo,
Le problème auquel vous êtes confronté, c'est que, chaque fois que nous avons sélectionnez une image de la caméra de l'intention, il peut terminer l'activité qui l'a appelé, afin de
imageUri
objet que vous avez créé sera null lors de votre retour.de sorte que vous devez l'enregistrer quand vous sortez de l'activité (pour aller à l'appareil intention), comme ceci -
et de les récupérer en arrière quand vous revenez à l'activité -
Votre code a l'air bien, vous avez seulement besoin d'ajouter ce changement en elle.
OriginalL'auteur Darpan