Obtenga uri de la intención de la cámara en android
al hacer clic
takePic.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Intent m_intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); imageUri = getImageUri(); m_intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); startActivityForResult(m_intent, REQUEST_IMAGE_CAPTURE); } });
Resultado:
- Uso de la cámara en el paisaje cuando mi aplicación está en el retrato
- En actividad resultado cámara intención devolución null en samsung s4
- Android Camera.autoFocus y FOCUS_MODE_CONTINUOUS_PICTURE
- Android: ¿La Vista de Galería ha quedado obsoleta?
- Android: ¿Comprobar si la cámara admite el enfoque automático?
protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { Log.d("test1",""+imageUri); Intent shareIntent = new Intent(this, SharePicForm.class); shareIntent.putExtra("photo",""+imageUri); startActivity(shareIntent); } }
GetImageUri ()
private Uri getImageUri(){ Uri m_imgUri = null; File m_file; try { SimpleDateFormat m_sdf = new SimpleDateFormat("yyyyMMdd_HHmmss"); m_curentDateandTime = m_sdf.format(new Date()); m_imagePath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + m_curentDateandTime + ".jpg"; m_file = new File(m_imagePath); m_imgUri = Uri.fromFile(m_file); } catch (Exception p_e) { } return m_imgUri; }
Lo que me gustaría lograr es muy simple, llamar a la intención de la cámara y obtener el uri de la foto de resultado. Pero parece que hay un inconsistente de dispositivo diferente y en mi dispositivo no es trabajo en absoluto. He intentado almacenar el camino en una variable pública, pero cuando lo recupero, es nulo, ¿hay manera formal y estándar para implementar y debe ser el trabajo en todos los dispositivos? Además, ¿hay alguna manera de no proporcionar la ruta personalizada pero obtener el camino uri predeterminado de la intención de la cámara?
Gracias por ayudar
- Foco continuo de la cámara Android
- Android 4 - El equilibrio de blanco de la cámara se detiene después del autofoco
- La cámara AF_TRIGGER_START no inicia el enfoque enTouch
- Android: Tome la fotografía de la cámara sin "guardar" / "eliminar" la confirmación
- La intención de la cámara Android devuelve nulo ... a veces
- Muchas imágenes enfocadas con una centrada en android?
- Android se estrella después de la cámara
- ¿Cómo llamar a una cámara con la intención de tener la grabación, así como la captura de imágenes?
Si su dispositivo no respeta a cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT,
todavía puede utilizar
Uri imageUri = data.getData();
onActivityResult(int requestCode, int resultCode, Intent data)
. Pero en la mayoría de los casos, el problema es que la RAM es limitada, y el sistema destruye su actividad para dar suficiente memoria a la aplicación de cámara para cumplir con su intención. Por lo tanto, cuando se devuelve el resultado, los campos de su actividad no se inicializan y debe seguir la sugerencia de Amit e implementar onSavedInstance()
y onRestoreInstanceState()
.
En primer lugar asegúrese de que su directorio se crea ……
final String dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)+ "/Folder/"; File newdir = new File(dir); newdir.mkdirs();
Haga clic en llamar a esta función.
private void capturarFoto() { String file = dir+DateFormat.format("yyyy-MM-dd_hhmmss", new Date()).toString()+".jpg"; File newfile = new File(file); try { newfile.createNewFile(); } catch (IOException e) {} Uri outputFileUri = Uri.fromFile(newfile); Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); startActivityForResult(cameraIntent, TAKE_PHOTO_CODE); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == TAKE_PHOTO_CODE && resultCode == RESULT_OK) { Log.d("Demo Pic", "Picture is saved"); } }
Asegúrese de agregar permiso en el manifiesto
<uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Simplemente use este Uri imageUri = data.getData ();
- ¿Necesito un dispositivo Android real para desarrollar una aplicación de Android para el mercado?
- Mocking up WifiManager para la prueba de unidad Android