2010-03-16 42 views
14

Tôi đang thử xem trước máy ảnhAndroid - Xem trước máy ảnh

Đây là mã của tôi và nó không ném bất kỳ lỗi nào, nhưng màn hình vẫn đen. Bất kỳ ý tưởng?

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> 

Trả lời

46

Bạn đang kêu gọi ba dòng cuối cùng quá sớm. Bạn phải chờ cho bề mặt được chuẩn bị trước khi gọi setPreviewDisplay() và bạn phải đợi cho bề mặt có kích thước (surfaceChanged()) trước khi gọi startPreview(). This project có những gì bạn cần.

+0

Điều đó hoạt động tốt. Câu hỏi bổ sung. Trên Android 2.3 và 3.0, bản xem trước dường như bị lệch khi chúng tôi xoay thiết bị. Bạn có có một giải pháp cho điều này không? –

+1

@NileshPawar: Tôi không biết ý của bạn là "sai lệch" trong tình huống này. FWIW, công việc máy ảnh hiện tại của tôi là: https://github.com/commonsguy/cwac-camera – CommonsWare

+0

Oh wow. Camera-demov9 từ mã mới của bạn đã giải quyết được vấn đề !! Tôi sẽ có được một sự khác biệt về những gì tôi đã làm khác nhau và đăng nó ở đây vì lợi ích của tất cả mọi người. Đáng buồn là tài liệu của Google bị che khuất ở những khu vực này. –

Các vấn đề liên quan