usar studio programacion para intuitivas for español dummies desarrollo con como avanzado aplicaciones android camera nexus-s

android - studio - La actividad predeterminada de la cámara no finaliza al presionar el botón OK



manual desarrollo de aplicaciones android pdf (4)

Además, asegúrese de que su aplicación tenga <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> si está usando Environment.getExternalStorageDirectory().getPath() arriba.

Espero que esto ayude =)

Llamo a la cámara predeterminada desde mi actividad y luego manejo OnActivityResult. Mi código parece funcionar bien en el LG Ally, que no tiene una confirmación cuando se toma una foto. Sin embargo, cuando ejecuto la misma aplicación en el Nexus S, me indica "Aceptar", "Retomar" o "Cancelar" antes de volver a mi actividad. Mientras "Cancelar" funciona, volver a mi actividad sin guardar la imagen, "Ok" no parece tener ningún efecto, ni siquiera volver a mi actividad.

Mi código a continuación:

private void captureImage() { String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) { File path = new File(Environment.getExternalStorageDirectory().getPath() + "/Images/" + (new UserContextAdapter(this)).getUser() + "/"); path.mkdirs(); File file = new File(path, "Image_Story_" + mRowId.toString() + ".jpg"); newImageUri = Uri.fromFile(file); Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, newImageUri); startActivityForResult(intent, CAPTURE_IMAGE); } } @Override public void onActivityResult(int requestCode, int resultCode, Intent intent) { switch (requestCode) { case CAPTURE_IMAGE: switch (resultCode ) { case 0: Log.i("CAPTURE", "Cancelled by User"); break; case -1: mImageUri = newImageUri; setImageFromUri(); } }


Creo que acabo de tener el mismo problema.

Si la ruta para guardar la imagen no es correcta, la cámara no regresará a su aplicación. Una vez que me aseguré de que el directorio existe, todo funcionó bien. Asegúrese de que el directorio exista, entonces debería funcionar.

- Editar -

Acabo de ver, que llamas path.mkdirs(); Pero creo que no funciona. Como puede leer en el documento de Android, "Tenga en cuenta que este método no arroja IOException en caso de error. Las personas que llaman deben verificar el valor de retorno". Por favor, asegúrese de verificar si el directorio realmente existe.

hth


Por favor, chequee esto

Caso 1:

Uri newImageUri = null; File path = new File(Environment.getExternalStorageDirectory().getPath() + "/Images/"); path.mkdirs(); boolean setWritable = false; setWritable = path.setWritable(true, false); File file = new File(path, "Image_Story_" + System.currentTimeMillis() + ".jpg"); newImageUri = Uri.fromFile(file); Log.i("MainActivity", "new image uri to string is " + newImageUri.toString()); Log.i("MainActivity", "new image path is " + newImageUri.getPath()); Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, newImageUri); startActivityForResult(intent, REQUEST_CODE_CAPTURE_IMAGE);

Caso 2:

String fileName = "" + System.currentTimeMillis() + ".jpg"; ContentValues values = new ContentValues(); values.put(MediaStore.Images.Media.TITLE, fileName); values.put(MediaStore.Images.Media.DESCRIPTION, "Image capture by camera"); values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg"); Uri imageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); Log.i("MainActivity", "new image uri to string is " + imageUri.toString()); Log.i("MainActivity", "new image path is " + imageUri.getPath()); Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1); startActivityForResult(intent, REQUEST_CODE_CAPTURE_IMAGE);

Puedo guardar imágenes a través de la cámara en el nexo en los dos casos anteriores. En el caso 1: a. La imagen se almacena en una carpeta personalizada. segundo. Si "System.currentTimeMillis ()" se cambia a ("new Date (). ToString ()"), la imagen no se guarda y la cámara no vuelve a mi actividad. (Probablemente porque "System.currentTimeMillis" no tiene espacios y "new Date (). ToString ()" podría tener algunos caracteres y espacios especiales) En el caso 2: a. La imagen se almacena en la carpeta de la cámara.

Gracias a todos


Tengo el mismo problema. Solo tiene que hacer un trabajo, en la verificación de almacenamiento de su teléfono que tenga el directorio de Imágenes o no. Si no tiene dicha biblioteca, hágala manualmente.

Espero que esto funcione para usted.