2012-05-07 91 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文件夾中的照片。