0

我试图创建相机应用程序,但我遇到了这个问题:在横向模式下使用相机时一切正常,但在纵向使用 setDisplayOrientation(90) 方法时会出现这个问题:

一半的屏幕是黑色的。

图片在这里:http: //i.stack.imgur.com/sPTex.jpg

表面创建方法:

@Override
    public void surfaceCreated(SurfaceHolder holder) {
        try {
            this.camera = Camera.open();
            this.camera.setDisplayOrientation(90);
            this.camera.setPreviewDisplay(this.holder);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

我的 XML 布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <FrameLayout
        android:id="@+id/cameraPreview"
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1" >
    </FrameLayout>
    <Button
        android:id="@+id/analyzeButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/analyze" />
</LinearLayout>

顺便说一句,在使用 ADB 拍摄的屏幕截图中 - 相机正常显示。在 Xperia ST27i 和三星 Galaxy Pocket 上进行测试 - 结果相同。

谢谢

4

1 回答 1

0
public void surfaceCreated(SurfaceHolder holder)
{
// The Surface has been created, acquire the camera and tell it where to draw.
mCamera = Camera.open();

Parameters params = mCamera.getParameters();

if (this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE)
{
params.set("orientation", "portrait");
mCamera.setDisplayOrientation(90);
}

try
{
mCamera.setPreviewDisplay(holder);
}
catch (IOException exception)
{
mCamera.release();
mCamera = null;
}

}

试试这些代码的朋友............

于 2013-01-30T10:46:45.797 回答