ошибка времени выполнения, но пошаговая отладка работает нормально

Я написал программу для Android, чтобы сделать снимок без предварительного просмотра. Мои программы работают нормально, когда я отлаживаю их шаг за шагом. Однако, когда я запускаю его в режиме выполнения, программа работает не так, как ожидалось. Изображение не сохраняется, и программа не может завершить работу. Кроме того, я не могу использовать свою камеру в других приложениях для Android (например, «Камера», «Видеокамера»), пока не перезапущу телефон. У кого-нибудь есть идеи по поводу этой проблемы? Код для фотографирования и зарегистрированных ошибок выглядит следующим образом:

Код для фотографирования:

    SurfaceView view = new SurfaceView(this);
    mCamera = Camera.open();
    Camera.Parameters p = mCamera.getParameters();
    p.setPictureFormat(PixelFormat.JPEG);
    mCamera.setParameters(p);

    try {
        mCamera.setPreviewDisplay(view.getHolder());
        mCamera.startPreview();
        mCamera.takePicture(null, null, mPictureCallback);
        mCamera.stopPreview();
        mCamera.unlock();
        mCamera.release();
    } catch (Exception e) {
        mCamera.stopPreview();
        mCamera.release();
        e.printStackTrace();            
    }

Функция обратного вызова

Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
          public void onPictureTaken(byte[] imageData, Camera c) {
               if (imageData != null) {
            StoreByteImage(mContext, imageData, 50,
                    "ImageName");
            finish();
        }
    }
};
}

Ошибки, о которых сообщает logcat:

ERROR/Adreno200-ES20(130): rb verson is SBA #24
ERROR/mm-camera(130): prepare snapshot: Aec not settle
ERROR/CameraService(130): mHardware->setOverlay() failed with status -2147483648
ERROR/mm-camera(130): camera_issue_command: get_picture error (Connection timed out): length 36, status 0 FD: 20 1
ERROR/QualcommCameraHardware3D(130): getPicture: CAMERA_OPS_GET_PICTURE ioctl failed!
ERROR/NotificationService(292): adbEnabled = false
ERROR/NotificationService(292): adbEnabled = true

Может ли кто-нибудь дать какое-либо предложение? заранее спасибо


person hanqiang    schedule 29.08.2011    source источник


Ответы (1)


это работает для вас?

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            File file = new File(Environment.getExternalStorageDirectory(),
                    currentTimeString + ".jpg");
            outputFileUri = Uri.fromFile(file);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
            startActivityForResult(intent, TAKE_PICTURE);
person owen gerig    schedule 29.08.2011
comment
Это не работает. Фотографии не делаются и не сохраняются на SD-карте. А также запускается режим предварительного просмотра камеры. - person hanqiang; 30.08.2011
comment
да, я не был уверен, когда я опубликовал, показывает ли это предварительный просмотр, я думаю, да. Я знаю, что этот код работает для фотографирования (проверено и работает на телефоне и эмуляторе), так что, возможно, для вас происходит что-то еще. вы используете эмулятор или реальное устройство? - person owen gerig; 30.08.2011