【问题标题】:Android - Camera PreviewAndroid - 相机预览
【发布时间】:2010-03-16 17:52:47
【问题描述】:

我正在尝试相机预览

这是我的代码,它不会抛出任何错误,但屏幕仍然是黑色的。有什么想法吗?

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>

【问题讨论】:

    标签: android camera preview


    【解决方案1】:

    您调用最后三行的时间太早了。在调用setPreviewDisplay() 之前,您必须等待表面准备好,并且在调用startPreview() 之前,您必须等待表面调整大小(surfaceChanged())。 This project 有你需要的。

    【讨论】:

    • 效果很好。附加问题。在 Android 2.3 和 3.0 上,当我们旋转设备时,预览似乎是倾斜的。你也有解决这个问题的办法吗?
    • @NileshPawar:在这种情况下,我不知道您所说的“偏斜”是什么意思。 FWIW,我目前的相机工作在:github.com/commonsguy/cwac-camera
    • 哇哦。新代码中的 Camera-demov9 解决了这个问题!!我将获得我所做的不同之处的差异并将其发布在此处以造福所有人。遗憾的是,Google 文档在这些领域的内容晦涩难懂。
    • getBestPreviewSize 函数并不完全正确。如下配置示例,此函数返回 640x480 作为最佳预览尺寸,导致预览倾斜。它应该给出最接近的良好值 864 x 480。下面是可用预览尺寸的日志、我的设备显示尺寸和 getBestPreviewSize() 函数的返回值。
    • ------------可用的预览尺寸----- 预览宽度:1280 高度:720 预览宽度:864 高度:480 预览宽度:640 高度:480 预览宽度:480 高度:320 预览宽度:352 高度:288 预览宽度:320 高度:240 预览宽度:176 高度:144 ---------- ------------------------------------------- 显示尺寸: 宽度:854 高度:480 获得最佳预览尺寸:854 高度:480最佳预览尺寸 = 宽度:640 高度:480
    猜你喜欢
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多