0

为了预览相机,我在下面编写了代码段。我无法获得任何预览。你能帮我解决问题吗?

我已经为我的应用程序配置了权限;

    <uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />

我已经创建了表面位置

<SurfaceView
    android:id="@+id/cameraView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true" />

我在下面编写了代码段来预览相机;

public class MainActivity extends Activity  {

SurfaceView surfaceView;
SurfaceHolder surfaceHolder;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        getWindow().setFormat(PixelFormat.UNKNOWN);
        surfaceView = (SurfaceView)findViewById(R.id.cameraView);
        surfaceHolder = surfaceView.getHolder();
}

 private void preview ( ) {

    try {
             camera.setPreviewDisplay(surfaceHolder);
             camera.startPreview();
    } catch ( IOException void_) {
        ;
    }
}
4

3 回答 3

1

您可以使用..从相机捕获图像

  1. 意图(打开默认相机并捕获图像)
  2. Camera API(获取图像预览,也可以自定义相机功能)

请阅读这篇文章逐步解决方案,我发现这很有帮助

Android 相机 API - 教程

如果您在这方面有任何问题,请告诉我,我已经完成了

编辑:

您可以使用管理策略禁用相机

在这里查看官方文档和示例代码,这篇文章也可以帮助你

于 2013-01-15T12:03:12.193 回答
0

在 4.0 之前,Google 提供的 Android SDK 除了替身动画外,不提供任何相机模拟。由于谷歌还没有提供一个有效的实现(甚至是一个可用的日期)。

有一些链接可以帮助您实现您的要求。请参考这个这个链接。

希望它可以帮助你:)

于 2013-01-15T10:12:28.930 回答
0

实现此类以进行相机预览,并在您的活动的 oncreate 方法中调用其构造函数。

    public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {
    private SurfaceHolder mSurfaceHolder;
    private Camera mCamera;

    @SuppressWarnings("deprecation")
    public CameraPreview(Context context, Camera camera) {
        super(context);
        this.mCamera = camera;
        this.mSurfaceHolder = this.getHolder();
        this.mSurfaceHolder.addCallback(this);
        this.mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    }

    public void surfaceCreated(SurfaceHolder surfaceHolder) {
        try {
            mCamera.setPreviewDisplay(surfaceHolder);
            mCamera.startPreview();
        } catch (IOException e) {
            // left blank for now
        }
    }


    public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
        mCamera.stopPreview();
        mCamera.release();
    }


    public void surfaceChanged(SurfaceHolder surfaceHolder, int format,
            int width, int height) {
        // start preview with new settings
        try {
            mCamera.setPreviewDisplay(surfaceHolder);
            mCamera.startPreview();
        } catch (Exception e) {
            // intentionally left blank for a test
        }
    }
}
于 2013-01-15T11:19:01.013 回答