2012-05-07 81 views
1

我遇到了一个问题,我正在使用相机应用拍照&该照片在我有机会在我的应用中使用之前被删除。似乎只发生在某些设备上(三星Galaxy S2,三星Galaxy Tab 10.1和LG,不记得该型号)。我的应用程序中的每个活动都将屏幕方向设置为纵向(清单:android:screenOrientation =“portrait”)。我如何重现问题: 1.从我的应用程序中点击“拍照”按钮,这将加载相机应用程序。 2.以纵向拍照,在合适的位置创建文件(基于我提供的URI)&在相机应用中显示预览。 3.保持设备在肖像&中点击“保存图像”(这会将您带回我的应用程序)。 4.当我回到我的应用程序时,我检查文件是否存在,而不是。Android - 相机意图 - 删除照片

如果以纵向拍摄照片,然后将设备旋转到横向(当显示预览时),然后点击“保存图像”(横向时),照片不会被删除。

如果以横向模式拍摄照片(并在保存时让设备保持横向),照片不会被删除。

如果以横向拍摄照片,然后将预览旋转为纵向,照片不会被删除。

我读过&谷歌搜索&已经拉出我的头发试图找出这一个。

当拍摄照片&保存为肖像时,当我的应用程序返回到我的应用程序时,我的应用程序在横向,然后旋转到肖像。

任何帮助(即使它是一个链接到另一个职位有答案)赞赏!

谢谢:)

下面是我的一些代码(时出现问题,_cameraFileUri为null):

 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

     _cameraFileUri = Uri.fromFile(new File(_tempFolder, "tempFromCamera.jpg")); 

     intent.putExtra(MediaStore.EXTRA_OUTPUT, _cameraFileUri); // set the image file name 

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


        if (_cameraFileUri != null) { 

        File origFile = new File(_cameraFileUri.getPath()); 

        resizePhoto(origFile); 

        showPhoto(); 

       } else { 
        Toast.makeText(getApplicationContext(), "Error: Capture Photo Failed.", Toast.LENGTH_LONG).show(); 

       } 
+0

注意:startActivityForResult实际上被包围在它自己的例程中的try/catch块中。 if(_cameraFileUri! - null)在“onActivityResult”中,在检查结果代码等的代码块中,我忽略了从我的帖子和重读后的所有内容,这看起来有点奇怪。想澄清:) – Chris

+0

老实说,我在这个论坛发帖之前等了好一个星期。我知道,只要我发布它,我会找出答案。 旋转的应用程序是免费的。它重新创建活动,因此它正在重新运行onCreate方法。对于“管家”我删除我的临时文件夹中的文件。我在“onCreate”中这样做。 因此,应用程序旋转,重新通过“onCreate”,它从存储(杜)删除我的临时文件。 :) – Chris

+1

好你想通了。我花了一些时间才意识到你在告诉你解决了它。让你的评论更加清晰,以免任何一位elsse花时间去调查 – png

回答

0

对不起,这一次得到解决。我真的等了一个星期才发布在这个论坛上。我知道,只要我发布它,我会找出答案。

旋转的应用程序是赠品。它重新创建活动,因此它正在重新运行onCreate方法。对于“管家”我删除我的临时文件夹中的文件。我在“onCreate”中这样做。所以当onCreate重新运行时,它会删除相机放在Temp文件夹中的照片。