2010-03-16 20 views
14

procuro la cámara previsualizarAndroid - Previsualización de la cámara

Éste es mi código y no arroja ningún error, pero la pantalla sigue siendo negra. ¿Algunas ideas?

this.setContentView(R.layout.camerapreview);  
SurfaceView cameraSurface = (SurfaceView)findViewById(R.id.cpPreview); 
SurfaceHolder holder = cameraSurface.getHolder(); 
holder.addCallback(this); 
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
this.camera = Camera.open(); 
this.camera.setPreviewDisplay(holder); 
this.camera.startPreview(); 

camerapreview.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
    <SurfaceView 
     android:id="@+id/cpPreview" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center"> 

    </SurfaceView> 
</LinearLayout> 

Respuesta

46

Está llamando a las tres últimas líneas demasiado pronto. Debe esperar a que se prepare la superficie antes de llamar al setPreviewDisplay() y debe esperar a que la superficie tenga el tamaño (surfaceChanged()) antes de llamar al startPreview(). This project tiene lo que necesita.

+0

Eso funciona genial. Pregunta adicional En Android 2.3 y 3.0, la vista previa parece estar sesgada cuando rotamos el dispositivo. ¿Tiene una solución para esto también? –

+1

@NileshPawar: No sé a qué te refieres con "sesgado" en esta situación. FWIW, mi trabajo de cámara actual está en: https://github.com/commonsguy/cwac-camera – CommonsWare

+0

Oh wow. la cámara-demov9 de su nuevo código resolvió el problema !! Obtendré una diferencia de lo que estaba haciendo diferente y la publicaré aquí para el beneficio de todos. Es triste que la documentación de Google sea oscura en estas áreas. –

Cuestiones relacionadas