Abrir cámara dentro del fragmento
¿Es posible utilizar la cámara en un fragmento como la vista, para que no se abra otra aplicación y se alejan de mi? Algo así como SurfaceView
con cámara?
- La función startPreview es lenta, ¿Algún trabajo alrededor?
- facingMode en MediaDevices.getUserMedia no parece funcionar en el último Android Chrome (v53)
- Uso de la actividad de la cámara en Android
- Cámara abierta de Android del botón
- Manejo adecuado de la rotación de la cámara (en TextureView)
- Reconocimiento de la cara de la cámara
- Desplome de Android en dialog.show ()
- Vista previa de la cámara está borrosa en samsung galaxy grand pero es bueno en samsung s3
- Nexus 10 camera.release cuelga durante 30 segundos
- Captura de fotos La intención causa NullPointerException en los teléfonos Samsung solamente
- Camerainfo.orientation da una respuesta equivocada
- Vista previa de la cámara Android estirada
- Objeto de cámara siempre devuelve nulo
Sí, compruebe este mensaje: https://www.airpair.com/android/android-camera-surface-view-fragment
Básicamente sobreescribir el SurfaceView e integrar la devolución de llamada de la imagen de la cámara.
/* Surface on which the camera projects it's capture results. */ class CameraPreview extends SurfaceView implements SurfaceHolder.Callback { SurfaceHolder mHolder; Camera mCamera; public CameraPreview(Context context, Camera camera) { super(context); mCamera = camera; // Install a SurfaceHolder.Callback so we get notified when the // underlying surface is created and destroyed. mHolder = getHolder(); mHolder.addCallback(this); // deprecated setting, but required on Android versions prior to 3.0 mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } public void surfaceCreated(SurfaceHolder holder) { // The Surface has been created, now tell the camera where to draw the preview. try { mCamera.setPreviewDisplay(holder); mCamera.startPreview(); } catch (IOException e) { e.printStackTrace(); } } public void surfaceDestroyed(SurfaceHolder holder) { // empty. Take care of releasing the Camera preview in your activity. } public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { // If your preview can change or rotate, take care of those events here. // Make sure to stop the preview before resizing or reformatting it. if (mHolder.getSurface() == null){ // preview surface does not exist return; } // stop preview before making changes try { mCamera.stopPreview(); } catch (Exception e){ // ignore: tried to stop a non-existent preview } // set preview size and make any resize, rotate or // reformatting changes here // start preview with new settings try { mCamera.setPreviewDisplay(mHolder); mCamera.startPreview(); } catch (Exception e){ e.printStackTrace(); } } }
Con una cámara de devolución de llamada de imagen como:
private Camera.PictureCallback mPicture = new Camera.PictureCallback() { @Override public void onPictureTaken(byte[] data, Camera camera) { File pictureFile = getOutputMediaFile(); if (pictureFile == null){ Toast.makeText(getActivity(), "Image retrieval failed.", Toast.LENGTH_SHORT) .show(); return; } try { FileOutputStream fos = new FileOutputStream(pictureFile); fos.write(data); fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } };
- Cómo crear un proyecto de plantilla para Android Studio
- Android ¿Por qué no se muestra el botón de salida de Facebook SDK?