2010-03-16 150 views
14

我正在嘗試相機預覽Android - 相機預覽

這是我的代碼,它不會拋出任何錯誤,但屏幕仍然是黑色的。有任何想法嗎?

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> 

回答

46

你太早調用最後三行。在致電setPreviewDisplay()之前,您必須等待表面準備好,並且在致電startPreview()之前必須等待表面的大小(surfaceChanged())。 This project有你所需要的。

+0

這很好。附加問題。在Android 2.3和3.0上,當我們旋轉設備時,預覽似乎有偏斜。你是否也有這個解決方案呢? – 2013-11-05 18:53:40

+1

@NileshPawar:在這種情況下,我不知道你的意思是「歪斜」。 FWIW,我目前的相機工作在:https://github.com/commonsguy/cwac-camera – CommonsWare 2013-11-05 19:01:46

+0

哦哇。來自新代碼的Camera-demov9解決了問題!我將獲得我所做的不同的差異,並將其發佈在這裏,爲大家的利益。在這些領域中,Google文檔晦澀難懂。 – 2013-11-05 19:40:31