【问题标题】:take picture crashed on real device拍照在真实设备上崩溃
【发布时间】:2014-07-22 19:48:03
【问题描述】:

我正在使用此代码拍照,并且在模拟器中它可以正常工作。它不适用于物理移动设备,并且在三星 Galaxy S4 和索尼 Xperia Z2 上出现错误。

我的代码:

private void takePicture() {
    openCamera();
    camera.takePicture(new ShutterCallback() {
        @Override
        public void onShutter() {
        }
    }, new PictureCallback() {
        @Override
        public void onPictureTaken(byte[] data, Camera camera) {
        }
    }, new PictureCallback() {
        @Override
        public void onPictureTaken(byte[] data, Camera camera) {
            Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0,data.length);
            img_screenshot.setImageBitmap(bitmap);
            closeCamera();
        }
    });
}

private void openCamera() {
    camera = Camera.open();
    Camera.Parameters params = camera.getParameters();
    List<Size> sizes = params.getSupportedPictureSizes();
    Size mSize = sizes.get(0);
    params.setPictureSize(mSize.width, mSize.height);
    camera.setParameters(params);
}

private void closeCamera() {
    camera.release();
}

【问题讨论】:

  • 发布您的logcat转储
  • 我无法将我的设备连接到eclipse,请测试我的代码
  • 当你能够连接它时发布转储。我们会提供帮助。

标签: android image crash


【解决方案1】:

首先确保在清单中使用权限

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

在调用 takePicture 之前,调用 startPreview 如下:

private void takePicture() {
    openCamera();
    camera.startPreview();
    camera.takePicture(new ShutterCallback() {

        @Override
        public void onShutter() {
        }
    }, new PictureCallback() {

        @Override
        public void onPictureTaken(byte[] data, Camera camera) {
        }
    }, new PictureCallback() {

        @Override
        public void onPictureTaken(byte[] data, Camera camera) {
            Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0,data.length);
            img_screenshot.setImageBitmap(bitmap);
            closeCamera();
        }
    });
}

private void openCamera() {
    camera = Camera.open();
    Camera.Parameters params = camera.getParameters();
    List<Size> sizes = params.getSupportedPictureSizes();
    Size mSize = sizes.get(0);
    params.setPictureSize(mSize.width, mSize.height);
    camera.setParameters(params);
}

private void closeCamera() {
    camera.release();
}

【讨论】:

    猜你喜欢
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    • 1970-01-01
    相关资源
    最近更新 更多