【问题标题】:Android - NullPointerException onPictureTakenAndroid - NullPointerException onPictureTaken
【发布时间】:2013-12-04 06:44:59
【问题描述】:

我有一个使用自定义相机的应用。我已经在许多设备上尝试过,但没有出现问题,但最近我收到了来自运行 Android 2.3.5 的摩托罗拉 DROID X2 的崩溃报告。

日志:

Fatal Exception java.lang.NullPointerException
FileOutputStream.java line 256 java.io.FileOutputStream.write
CameraUtils.java line 29 MY_PACKAGE.camera.CameraUtils.ByteArrayToFile
CameraActivity.java line 297 MY_PACKAGE.camera.CameraActivity$1.onPictureTaken
Camera.java line 542 android.hardware.Camera$EventHandler.handleMessage

CameraActivity - OnPictureTaken:

private final PictureCallback mPicture = new PictureCallback() {

    public final void onPictureTaken(byte[] data, Camera camera) {

        if (checkSDCard()) {

            imageFile = getImageFile();
            Log.i(TAG, imageFile.toString());

            imageFile = CameraUtils.ByteArrayToFile(data, imageFile);

            if (mCameraId == Camera.CameraInfo.CAMERA_FACING_BACK) {
                flipImage(data, imageFile);
            } else { }

            try {
                exif = new ExifInterface(imageFile.getAbsolutePath());
                exif.setAttribute(ExifInterface.TAG_ORIENTATION, Integer.toString(orientation));
                exif.saveAttributes();
            } catch (IOException e) {
                e.printStackTrace();
            }

            performCrop();

        } else {
            Toast.makeText(CameraActivity.this, SD_ERROR, Toast.LENGTH_SHORT).show();
        }

    }

};

CameraUtils - ByteArrayToFile:

26. public final static File ByteArrayToFile(byte[] data, File file) {
27. try {
28.     FileOutputStream stream = new FileOutputStream(file);
29.     stream.write(data);
30.     stream.close();
31. } catch (FileNotFoundException e) {
32.     Log.d("DG_DEBUG", "File not found: " + e.getMessage());
33. } catch (IOException e) {
34.     Log.d("DG_DEBUG", "Error accessing file: " + e.getMessage());
35. }
36. return file;
37. }

由于错误没有被 FileNotFoundException 或 IOException 捕获,我认为 byte[] 数据导致 NullPointerException 而不是文件本身。

我无法在我的任何个人设备上重现该问题,也无法在网上找到有关该设备或操作系统的任何信息,所以我想知道这是否是一个已知问题,是否有更好的实现(例如在这里找到解决方案:NullpointerException onPictureTaken),或者我是否应该将最低 SDK 设置得更高。谢谢!

【问题讨论】:

标签: android camera nullpointerexception


【解决方案1】:

我相信每张照片都应该以

开头
if (data != null) 

datanull 的原因可能有很多,您的代码应为 be prepared

我不认为这是版本的缺陷。 2.3.5,但您可以将 DROID X2 加入黑名单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多