una samsung puedo porque pantalla hacer como celular captura android camera android-intent android-camera android-camera-intent

android - samsung - como hacer una captura de pantalla en el celular



Cómo capturar una imagen y almacenarla con la cámara nativa de Android (5)

¿Ha comprobado cuál es el resultado de Environment.getExternalStorageDirectory (), porque si no contiene un separador de archivo final (/) su imagen terminará en un directorio que no reside en la tarjeta SD, como por ejemplo:

/mnt/sdcardmake_machine_example.jpg

Cuando lo que realmente quieres es:

/mnt/sdcard/make_machine_example.jpg

Pruebe este código en su lugar:

_path = Environment.getExternalStorageDirectory() + File.separator + "make_machine_example.jpg";

Tengo problemas para capturar una imagen y almacenarla desde la aplicación de cámara original. Aquí hay una muestra de algunos de mis códigos.

_path = Environment.getExternalStorageDirectory() + "make_machine_example.jpg"; File file = new File( _path ); Uri outputFileUri = Uri.fromFile( file ); Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE ); intent.putExtra( MediaStore.EXTRA_OUTPUT, outputFileUri ); startActivityForResult( intent, 0 );

Después de que se ha tomado la foto y regreso a mi actividad original, cuando navego a mi tarjeta SD a través de Android DDMS File Explorer, la imagen no está allí. Alguien sabe por qué esto no se guarda?


1. Solo usa

new File(Environment.getExternalStorageDirectory(), "make_machine_example.jpg");

y no te preocupes por los separadores.

2. Se enfrentó al mismo problema antes. Los teléfonos SenseUI tienen una aplicación de cámara personalizada que no crea archivos. ¿Qué dispositivo estás usando? Es posible que ya se haya solucionado en los últimos dispositivos, pero también puede ser un problema. Así que aquí hay una muestra completa de cómo solucionarlo. Problemas para guardar una foto en un archivo .


Agregue esta línea al archivo AndroidManifest.xml y elimine la extensión make_machine_example:

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

Comenzará a capturar la foto y almacenarla en la tarjeta SD.


Aquí estaba el producto final en caso de que alguien todavía esté visitando este hilo:

public class CameraCapture extends Activity { protected boolean _taken = true; File sdImageMainDirectory; protected static final String PHOTO_TAKEN = "photo_taken"; @Override public void onCreate(Bundle savedInstanceState) { try { super.onCreate(savedInstanceState); File root = new File(Environment .getExternalStorageDirectory() + File.separator + "myDir" + File.separator); root.mkdirs(); sdImageMainDirectory = new File(root, "myPicName"); startCameraActivity(); } } catch (Exception e) { finish(); Toast.makeText(this, "Error occured. Please try again later.", Toast.LENGTH_SHORT).show(); } } protected void startCameraActivity() { Uri outputFileUri = Uri.fromFile(sdImageMainDirectory); Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); startActivityForResult(intent, 0); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (resultCode) { case 0: finish(); break; case -1: try { StoreImage(this, Uri.parse(data.toURI()), sdImageMainDirectory); } catch (Exception e) { e.printStackTrace(); } finish(); startActivity(new Intent(CameraCapture.this, Home.class)); } } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { if (savedInstanceState.getBoolean(CameraCapture.PHOTO_TAKEN)) { _taken = true; } } @Override protected void onSaveInstanceState(Bundle outState) { outState.putBoolean(CameraCapture.PHOTO_TAKEN, _taken); } public static void StoreImage(Context mContext, Uri imageLoc, File imageDir) { Bitmap bm = null; try { bm = Media.getBitmap(mContext.getContentResolver(), imageLoc); FileOutputStream out = new FileOutputStream(imageDir); bm.compress(Bitmap.CompressFormat.JPEG, 100, out); bm.recycle(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }


Debe realizar una exploración de medios después de guardar la imagen

sendBroadcast(new Intent( Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));