Android - 相机图像并不总是保存

时间:2012-02-16 16:25:12

标签: android image camera photo save

我使用了此页面:http://developer.android.com/guide/topics/media/camera.html

要了解如何使用现有的相机应用拍摄照片&返回我的应用程序的结果。

有时图像会保存,有时则不会。我正在测试三星Galaxy平板电脑(8.9)。如果我将分辨率保持在最高设置(2048x1536)&以肖像拍摄照片,图像永不保存。如果我拍摄横向照片,图像可以节省大部分时间。如果我将其缩小到1024x768,图像可以节省大部分时间(无论是纵向还是横向)。

寻找方向来解决这个问题。

private void startCameraForCapture() {

    // create Intent to take a picture and return control to the calling application    
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    try {

        fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE, getApplicationContext()); // create a file to save the image  
        intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the image file name

        // start the image capture Intent
        startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);


    } catch (Exception e) {
        // TODO Auto-generated catch block

        _errorMessageTitle = "Error 'StartCamera'";

        _errorMessage = "Error: " + e.toString();

        showDialog(DIALOG_ERROR_GENERAL);

    }

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {    
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {        

        if (resultCode == RESULT_OK) {            

            showPhoto(2);

        } else if (resultCode == RESULT_CANCELED) {            

            // User cancelled the image capture        

        } else {            

            // Image capture failed, advise user    
            _errorMessageTitle = "Error in 'Take Photo'";

            _errorMessage = "Image Capture Failed";

            showDialog(DIALOG_NOTICE_GENERAL);

        }    

    }    

    if (requestCode == CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE) {        

        if (resultCode == RESULT_OK) {    

            Toast.makeText(getApplicationContext(), "Video not yet supported", Toast.LENGTH_LONG).show(); 

            // Video captured and saved to fileUri specified in the Intent           


        } else if (resultCode == RESULT_CANCELED) {           

            // User cancelled the video capture       

        } else {           

            // Video capture failed, advise user       

        }    

    }

}

1 个答案:

答案 0 :(得分:0)

对不起,应该已经解决了这一段时间。问题是我是Android的菜鸟。

在OnCreate方法中,我有一个函数正在删除Temp文件夹中的文件,我用来存储照片中的图像(我在OnCreate中添加了用于清理的目的)。

我发现当方向发生变化时会再次调用OnCreate。

在某些三星设备上,相机将屏幕从纵向(这是我在我的应用中允许的唯一方向)旋转到横向。

拍摄照片时,根据用户是否在选择“保存图像”之前旋转设备,方向会发生变化。

由于方向正在改变,我正在调用用于删除临时文件的函数。我弄清楚之后感到非常愚蠢。