una tomar samsung pantalla moto hacer como celular captura android image camera capture

android - tomar - Captura la imagen de la cámara y la muestra en actividad



como hacer una captura de pantalla en el celular (11)

Aquí está el código completo:

package com.example.cameraa; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ImageView; public class MainActivity extends Activity { Button btnTackPic; Uri photoPath; ImageView ivThumbnailPhoto; static int TAKE_PICTURE = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Get reference to views btnTackPic = (Button) findViewById(R.id.bt1); ivThumbnailPhoto = (ImageView) findViewById(R.id.imageView1); btnTackPic.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(cameraIntent, TAKE_PICTURE); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == TAKE_PICTURE && resultCode == RESULT_OK) { Bitmap photo = (Bitmap)intent.getExtras().get("data"); ivThumbnailPhoto.setImageBitmap(photo); ivThumbnailPhoto.setVisibility(View.VISIBLE); } } }

Recuerde agregar permisos para la cámara también.

Quiero escribir un módulo donde, con un clic de un botón, la cámara se abre y puedo hacer clic y capturar una imagen. Si no me gusta la imagen, puedo eliminarla y hacer clic en una imagen más y luego seleccionar la imagen y debería regresar y mostrar esa imagen en la actividad.


Aquí está el código que he usado para capturar y guardar la imagen de la cámara y luego mostrarlo en la vista de imagen. Se puede utilizar de acuerdo a su necesidad.

Debe guardar la imagen de la cámara en una ubicación específica, luego recuperarla desde esa ubicación y luego convertirla en un byte-array.

Aquí está el método para abrir la actividad de captura de imagen de la cámara.

private static final int CAMERA_PHOTO = 111; private Uri imageToUploadUri; private void captureCameraImage() { Intent chooserIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); File f = new File(Environment.getExternalStorageDirectory(), "POST_IMAGE.jpg"); chooserIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f)); imageToUploadUri = Uri.fromFile(f); startActivityForResult(chooserIntent, CAMERA_PHOTO); }

entonces su método onActivityResult () debería ser así.

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == CAMERA_PHOTO && resultCode == Activity.RESULT_OK) { if(imageToUploadUri != null){ Uri selectedImage = imageToUploadUri; getContentResolver().notifyChange(selectedImage, null); Bitmap reducedSizeBitmap = getBitmap(imageToUploadUri.getPath()); if(reducedSizeBitmap != null){ ImgPhoto.setImageBitmap(reducedSizeBitmap); Button uploadImageButton = (Button) findViewById(R.id.uploadUserImageButton); uploadImageButton.setVisibility(View.VISIBLE); }else{ Toast.makeText(this,"Error while capturing Image",Toast.LENGTH_LONG).show(); } }else{ Toast.makeText(this,"Error while capturing Image",Toast.LENGTH_LONG).show(); } } }

Aquí está el método getBitmap () utilizado en onActivityResult (). He realizado todas las mejoras de rendimiento que pueden ser posibles al obtener un mapa de bits de imagen de captura de cámara.

private Bitmap getBitmap(String path) { Uri uri = Uri.fromFile(new File(path)); InputStream in = null; try { final int IMAGE_MAX_SIZE = 1200000; // 1.2MP in = getContentResolver().openInputStream(uri); // Decode image size BitmapFactory.Options o = new BitmapFactory.Options(); o.inJustDecodeBounds = true; BitmapFactory.decodeStream(in, null, o); in.close(); int scale = 1; while ((o.outWidth * o.outHeight) * (1 / Math.pow(scale, 2)) > IMAGE_MAX_SIZE) { scale++; } Log.d("", "scale = " + scale + ", orig-width: " + o.outWidth + ", orig-height: " + o.outHeight); Bitmap b = null; in = getContentResolver().openInputStream(uri); if (scale > 1) { scale--; // scale to max possible inSampleSize that still yields an image // larger than target o = new BitmapFactory.Options(); o.inSampleSize = scale; b = BitmapFactory.decodeStream(in, null, o); // resize to desired dimensions int height = b.getHeight(); int width = b.getWidth(); Log.d("", "1th scale operation dimenions - width: " + width + ", height: " + height); double y = Math.sqrt(IMAGE_MAX_SIZE / (((double) width) / height)); double x = (y / height) * width; Bitmap scaledBitmap = Bitmap.createScaledBitmap(b, (int) x, (int) y, true); b.recycle(); b = scaledBitmap; System.gc(); } else { b = BitmapFactory.decodeStream(in); } in.close(); Log.d("", "bitmap size - width: " + b.getWidth() + ", height: " + b.getHeight()); return b; } catch (IOException e) { Log.e("", e.getMessage(), e); return null; } }

¡Espero eso ayude!


Aquí hay un ejemplo de actividad que iniciará la aplicación de la cámara y luego recuperará la imagen y la mostrará.

package edu.gvsu.cis.masl.camerademo; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ImageView; public class MyCameraActivity extends Activity { private static final int CAMERA_REQUEST = 1888; private ImageView imageView; private static final int MY_CAMERA_PERMISSION_CODE = 100; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); this.imageView = (ImageView)this.findViewById(R.id.imageView1); Button photoButton = (Button) this.findViewById(R.id.button1); photoButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { requestPermissions(new String[]{Manifest.permission.CAMERA}, MY_CAMERA_PERMISSION_CODE); } else { Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(cameraIntent, CAMERA_REQUEST); } } }); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == MY_CAMERA_PERMISSION_CODE) { if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { Toast.makeText(this, "camera permission granted", Toast.LENGTH_LONG).show(); Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(cameraIntent, CAMERA_REQUEST); } else { Toast.makeText(this, "camera permission denied", Toast.LENGTH_LONG).show(); } } protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) { Bitmap photo = (Bitmap) data.getExtras().get("data"); imageView.setImageBitmap(photo); } } }

Tenga en cuenta que la aplicación de la cámara en sí le ofrece la posibilidad de revisar / retomar la imagen, y una vez que se acepta una imagen, la actividad la muestra.

Aquí está el diseño que utiliza la actividad anterior. Es simplemente un LinearLayout que contiene un botón con id button1 y un ImageView con id imageview1:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/photo"></Button> <ImageView android:id="@+id/imageView1" android:layout_height="wrap_content" android:src="@drawable/icon" android:layout_width="wrap_content"></ImageView> </LinearLayout>

Y un detalle final, asegúrese de agregar:

<uses-feature android:name="android.hardware.camera"></uses-feature>

y si la cámara es opcional a la funcionalidad de tu aplicación. asegúrese de establecer require to false en el permiso. Me gusta esto

<uses-feature android:name="android.hardware.camera" android:required="false"></uses-feature>

a su manifest.xml.


Capturar foto + Elegir de la Galería:

a = (ImageButton)findViewById(R.id.imageButton1); a.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { selectImage(); } }); } private File savebitmap(Bitmap bmp) { String extStorageDirectory = Environment.getExternalStorageDirectory().toString(); OutputStream outStream = null; // String temp = null; File file = new File(extStorageDirectory, "temp.png"); if (file.exists()) { file.delete(); file = new File(extStorageDirectory, "temp.png"); } try { outStream = new FileOutputStream(file); bmp.compress(Bitmap.CompressFormat.PNG, 100, outStream); outStream.flush(); outStream.close(); } catch (Exception e) { e.printStackTrace(); return null; } return file; } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } private void selectImage() { final CharSequence[] options = { "Take Photo", "Choose from Gallery","Cancel" }; AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("Add Photo!"); builder.setItems(options, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int item) { if (options[item].equals("Take Photo")) { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); File f = new File(android.os.Environment.getExternalStorageDirectory(), "temp.jpg"); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f)); //pic = f; startActivityForResult(intent, 1); } else if (options[item].equals("Choose from Gallery")) { Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(intent, 2); } else if (options[item].equals("Cancel")) { dialog.dismiss(); } } }); builder.show(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { if (requestCode == 1) { //h=0; File f = new File(Environment.getExternalStorageDirectory().toString()); for (File temp : f.listFiles()) { if (temp.getName().equals("temp.jpg")) { f = temp; File photo = new File(Environment.getExternalStorageDirectory(), "temp.jpg"); //pic = photo; break; } } try { Bitmap bitmap; BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); bitmap = BitmapFactory.decodeFile(f.getAbsolutePath(), bitmapOptions); a.setImageBitmap(bitmap); String path = android.os.Environment .getExternalStorageDirectory() + File.separator + "Phoenix" + File.separator + "default"; //p = path; f.delete(); OutputStream outFile = null; File file = new File(path, String.valueOf(System.currentTimeMillis()) + ".jpg"); try { outFile = new FileOutputStream(file); bitmap.compress(Bitmap.CompressFormat.JPEG, 85, outFile); //pic=file; outFile.flush(); outFile.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } } else if (requestCode == 2) { Uri selectedImage = data.getData(); // h=1; //imgui = selectedImage; String[] filePath = { MediaStore.Images.Media.DATA }; Cursor c = getContentResolver().query(selectedImage,filePath, null, null, null); c.moveToFirst(); int columnIndex = c.getColumnIndex(filePath[0]); String picturePath = c.getString(columnIndex); c.close(); Bitmap thumbnail = (BitmapFactory.decodeFile(picturePath)); Log.w("path of image from gallery......******************.........", picturePath+""); a.setImageBitmap(thumbnail); } }


Capture fotos desde la cámara + elija una imagen de la galería y colóquela en el fondo del diseño o vista de imagen. Aquí está el código de muestra.

import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.GridView; import android.widget.ImageView; import android.widget.LinearLayout; public class Post_activity extends Activity { final int TAKE_PICTURE = 1; final int ACTIVITY_SELECT_IMAGE = 2; ImageView openCameraOrGalleryBtn,cancelBtn; LinearLayout backGroundImageLinearLayout; public void onCreate(Bundle savedBundleInstance) { super.onCreate(savedBundleInstance); overridePendingTransition(R.anim.slide_up,0); setContentView(R.layout.post_activity); backGroundImageLinearLayout=(LinearLayout)findViewById(R.id.background_image_linear_layout); cancelBtn=(ImageView)findViewById(R.id.cancel_icon); openCameraOrGalleryBtn=(ImageView)findViewById(R.id.camera_icon); openCameraOrGalleryBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub selectImage(); } }); cancelBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub overridePendingTransition(R.anim.slide_down,0); finish(); } }); } public void selectImage() { final CharSequence[] options = { "Take Photo", "Choose from Gallery","Cancel" }; AlertDialog.Builder builder = new AlertDialog.Builder(Post_activity.this); builder.setTitle("Add Photo!"); builder.setItems(options,new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub if(options[which].equals("Take Photo")) { Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(cameraIntent, TAKE_PICTURE); } else if(options[which].equals("Choose from Gallery")) { Intent intent=new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(intent, ACTIVITY_SELECT_IMAGE); } else if(options[which].equals("Cancel")) { dialog.dismiss(); } } }); builder.show(); } public void onActivityResult(int requestcode,int resultcode,Intent intent) { super.onActivityResult(requestcode, resultcode, intent); if(resultcode==RESULT_OK) { if(requestcode==TAKE_PICTURE) { Bitmap photo = (Bitmap)intent.getExtras().get("data"); Drawable drawable=new BitmapDrawable(photo); backGroundImageLinearLayout.setBackgroundDrawable(drawable); } else if(requestcode==ACTIVITY_SELECT_IMAGE) { Uri selectedImage = intent.getData(); String[] filePath = { MediaStore.Images.Media.DATA }; Cursor c = getContentResolver().query(selectedImage,filePath, null, null, null); c.moveToFirst(); int columnIndex = c.getColumnIndex(filePath[0]); String picturePath = c.getString(columnIndex); c.close(); Bitmap thumbnail = (BitmapFactory.decodeFile(picturePath)); Drawable drawable=new BitmapDrawable(thumbnail); backGroundImageLinearLayout.setBackgroundDrawable(drawable); } } } public void onBackPressed() { super.onBackPressed(); //overridePendingTransition(R.anim.slide_down,0); } } Add these permission in Androidmenifest.xml file <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.CAMERA"/>


En Actividad:

@Override protected void onCreate(Bundle savedInstanceState) { image = (ImageView) findViewById(R.id.imageButton); image.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { try { SimpleDateFormat sdfPic = new SimpleDateFormat(DATE_FORMAT); currentDateandTime = sdfPic.format(new Date()).replace(" ", ""); File imagesFolder = new File(IMAGE_PATH, currentDateandTime); imagesFolder.mkdirs(); Random generator = new Random(); int n = 10000; n = generator.nextInt(n); String fname = IMAGE_NAME + n + IMAGE_FORMAT; File file = new File(imagesFolder, fname); outputFileUri = Uri.fromFile(file); cameraIntent= new Intent( android.provider.MediaStore.ACTION_IMAGE_CAPTURE); cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); startActivityForResult(cameraIntent, CAMERA_DATA); }catch(Exception e) { e.printStackTrace(); } } }); @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch(requestCode) { case CAMERA_DATA : final int IMAGE_MAX_SIZE = 300; try { // Bitmap bitmap; File file = null; FileInputStream fis; BitmapFactory.Options opts; int resizeScale; Bitmap bmp; file = new File(outputFileUri.getPath()); // This bit determines only the width/height of the // bitmap // without loading the contents opts = new BitmapFactory.Options(); opts.inJustDecodeBounds = true; fis = new FileInputStream(file); BitmapFactory.decodeStream(fis, null, opts); fis.close(); // Find the correct scale value. It should be a power of // 2 resizeScale = 1; if (opts.outHeight > IMAGE_MAX_SIZE || opts.outWidth > IMAGE_MAX_SIZE) { resizeScale = (int) Math.pow(2, (int) Math.round(Math.log(IMAGE_MAX_SIZE/ (double) Math.max(opts.outHeight, opts.outWidth)) / Math.log(0.5))); } // Load pre-scaled bitmap opts = new BitmapFactory.Options(); opts.inSampleSize = resizeScale; fis = new FileInputStream(file); bmp = BitmapFactory.decodeStream(fis, null, opts); Bitmap getBitmapSize = BitmapFactory.decodeResource( getResources(), R.drawable.male); image.setLayoutParams(new RelativeLayout.LayoutParams( 200,200));//(width,height); image.setImageBitmap(bmp); image.setRotation(90); fis.close(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); bmp.compress(Bitmap.CompressFormat.JPEG, 70, baos); imageByte = baos.toByteArray(); break; } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

en layout.xml:

enter code here <RelativeLayout android:id="@+id/relativeLayout2" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ImageView android:id="@+id/imageButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/XXXXXXX" android:textAppearance="?android:attr/textAppearanceSmall" />

en manifest.xml:

<uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera" />


Me tomó algunas horas para que esto funcione. El código es casi una copia y pegado de developer.android.com , con una pequeña diferencia.

Solicite este permiso en el AndroidManifest.xml :

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

En su Activity , comience por definir esto:

static final int REQUEST_IMAGE_CAPTURE = 1; private Bitmap mImageBitmap; private String mCurrentPhotoPath; private ImageView mImageView;

Luego dispara esta Intent en un onClick :

Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if (cameraIntent.resolveActivity(getPackageManager()) != null) { // Create the File where the photo should go File photoFile = null; try { photoFile = createImageFile(); } catch (IOException ex) { // Error occurred while creating the File Log.i(TAG, "IOException"); } // Continue only if the File was successfully created if (photoFile != null) { cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile)); startActivityForResult(cameraIntent, REQUEST_IMAGE_CAPTURE); } }

Agregue el siguiente método de soporte:

private File createImageFile() throws IOException { // Create an image file name String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); String imageFileName = "JPEG_" + timeStamp + "_"; File storageDir = Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES); File image = File.createTempFile( imageFileName, // prefix ".jpg", // suffix storageDir // directory ); // Save a file: path for use with ACTION_VIEW intents mCurrentPhotoPath = "file:" + image.getAbsolutePath(); return image; }

Luego recibe el resultado:

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { try { mImageBitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), Uri.parse(mCurrentPhotoPath)); mImageView.setImageBitmap(mImageBitmap); } catch (IOException e) { e.printStackTrace(); } } }

Lo que lo hizo funcionar es el MediaStore.Images.Media.getBitmap(this.getContentResolver(), Uri.parse(mCurrentPhotoPath)) , que es diferente del código de developer.android.com . El código original me dio una FileNotFoundException .


Necesitas leer sobre la Camera . (Creo que para hacer lo que quieres, deberías guardar la imagen actual en tu aplicación, seleccionar / eliminar allí y luego recuperar la cámara para volver a intentarlo, en lugar de hacer el reintento directamente dentro de la cámara).


Puede utilizar una cámara personalizada con imagen en miniatura. Puedes mirar mi project .


Sé que es un hilo bastante antiguo, pero todas estas soluciones no están completas y no funcionan en algunos dispositivos cuando el usuario gira la cámara porque los datos en onActivityResult son nulos. Así que aquí está la solución que he probado en muchos dispositivos y no he enfrentado ningún problema hasta ahora.

Primero declara tu variable Uri en tu actividad:

private Uri uriFilePath;

Luego cree su carpeta temporal para almacenar la imagen capturada y procure capturar la imagen con la cámara:

PackageManager packageManager = getActivity().getPackageManager(); if (packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA)) { File mainDirectory = new File(Environment.getExternalStorageDirectory(), "MyFolder/tmp"); if (!mainDirectory.exists()) mainDirectory.mkdirs(); Calendar calendar = Calendar.getInstance(); uriFilePath = Uri.fromFile(new File(mainDirectory, "IMG_" + calendar.getTimeInMillis())); intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, uriFilePath); startActivityForResult(intent, 1); }

Y ahora viene una de las cosas más importantes, tienes que guardar tu uriFilePath en onSaveInstanceState, porque si no lo hiciste y el usuario giró su dispositivo mientras usaba la cámara, tu uri sería nulo.

@Override protected void onSaveInstanceState(Bundle outState) { if (uriFilePath != null) outState.putString("uri_file_path", uriFilePath.toString()); super.onSaveInstanceState(outState); }

Después de eso, siempre debes recuperar tu uri en tu método onCreate:

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState != null) { if (uriFilePath == null && savedInstanceState.getString("uri_file_path") != null) { uriFilePath = Uri.parse(savedInstanceState.getString("uri_file_path")); } } }

Y aquí viene la última parte para obtener su Uri en onActivityResult:

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { if (requestCode == 1) { String filePath = uriFilePath.getPath(); // Here is path of your captured image, so you can create bitmap from it, etc. } } }

PS No te olvides de agregar permisos para Camera y Ext. Almacenamiento escrito a tu Manifiesto.


Utilice el siguiente código para capturar imágenes con su cámara móvil. Si está usando una versión de Android más alta que Lolipop, también debe agregar la solicitud de permiso.

private void cameraIntent() { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, REQUEST_CAMERA); } @override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) { Bitmap photo = (Bitmap) data.getExtras().get("data"); imageView.setImageBitmap(photo); } }