android: Prendre la photo sans “enregistrer” / “supprimer” confirmation
Je veux afficher une image prise par la caméra dans une ImageView à l'aide de
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
Cela fonctionne bien jusqu'à présent, mais une fois que l'utilisateur prend la photo en utilisant la caméra choisi d'application, une boîte de dialogue (probablement à partir de l'app) s'affiche vous demandant si vous souhaitez enregistrer ou supprimer la photo prise (au moins sur Android 2.3 et 4.2 à l'aide de la caméra par défaut de l'app).
Je voudrais ignorer cette boîte de dialogue supplémentaire et afficher directement l'image dans le ImageView (quand onActivityResult est appelé), parce qu'il signifie un supplément de l'interaction de l'étape, pour l'utilisateur, ce qui est inutile parce qu'il aura la possibilité d'enregistrer ou de supprimer la photo de mon application.
Est-ce possible à l'aide de la simple ACTION_IMAGE_CAPTURE Intention ou ai-je besoin de quelque chose de plus complexe comme la Prévisualisation de la Caméra et SurfaceView à cette fin ?
Vous devez vous connecter pour publier un commentaire.
Ca vous utilisez le
SurfaceView
pour capturer l'imageEt le fichier de mise en page serait
Commencer cette
Camera_capture
activité avecstartActivityForResult
etonActivityResult
vous pouvez obtenir l'image quebyte
tableau commeoù
data
est les données reçues.Décoder le
byte
tableau deBitmap
à l'aide demaintenant définir ce
Bitmap
Modifier
Comme il y a un problème, tandis que le retour
byte[]
, lebyte[]
doit être enregistrer dans un fichier et le chemin d'accès du fichier doit être envoyé à la précédenteActivity
de sorte que le fichier peut être lu.Dans
onPictureTaken()
, il suffit d'ajouteret à la place de :
écrire
et de recevoir ce chemin dans les précédents
Activity
'sonActivityResult
comme :Camera.Parameters p = mCamera.getParameters(); p.setRotation(90); mCamera.setParameters(p);
ouCamera.Parameters p = mCamera.getParameters(); p.set("rotation", 90); mCamera.setParameters(p);
Colin O'Dell
's réponse semble bon. Vous devez le faire comme ça.finish()
mais il n'est pas rien laisser passer.Utilisation "d'android.l'intention.supplémentaire.quickCapture"
Si votre image est pivotée, vous pouvez utiliser ceci:
après
Vous ne pouvez pas le faire à l'aide de la valeur par défaut d'intention. Vous aurez à rédiger un client à la caméra de capturer des fonctionnalités où vous pouvez passer de l'aperçu avec les boutons Ok et Annuler.
Moyens voir http://developer.android.com/guide/topics/media/camera.html#custom-camera
Vous pouvez utiliser la solution de AnujMathur_07, mais si vous ne voulez pas travailler avec des sentiers et des fichiers, de la méthode
onPictureTaken
, vous pouvez retourner l'image bitmap:Et dans la méthode
onActivityResult
vous pouvez obtenir bitmap:Utilisation MediaStore.EXTRA_OUTPUT param pour vous camera application en cours d'exécution intention