Android 安卓-相机预览

Android 安卓-相机预览,android,camera,preview,Android,Camera,Preview,我正在尝试相机预览 这是我的代码,它不会抛出任何错误,但屏幕仍然是黑色的。有什么想法吗 this.setContentView(R.layout.camerapreview); SurfaceView cameraSurface = (SurfaceView)findViewById(R.id.cpPreview); SurfaceHolder holder = cameraSurface.getHolder(); holder.addCallback(this); holder.set

我正在尝试相机预览

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

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>


您呼叫最后三行太早了。在调用
setPreviewDisplay()
之前,必须等待曲面准备就绪,在调用
startPreview()
之前,必须等待曲面调整大小(
surfaceChanged()
)。有你所需要的。

这很好用。补充问题。在安卓2.3和3.0上,当我们旋转设备时,预览似乎是倾斜的。你也有解决这个问题的办法吗?@NileshPawar:我不知道在这种情况下你所说的“扭曲”是什么意思。FWIW,我目前的摄影工作是:哦,哇。新代码中的Camera-demov9解决了这个问题!!我将获得我所做的不同之处,并将其张贴在这里,以造福于所有人。遗憾的是,谷歌文档在这些领域并不清晰。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