2011-09-20 98 views
0

我有一個android應用程序,允許用戶拍照。在這種情況下,圖像並不總是正確顯示,這取決於圖像捕獲過程中手機的方向。我提供了一個可以在大多數手機上使用的旋轉圖像功能,但不是所有的手機。事實上,當它不起作用的應用程序崩潰。旋轉功能在下面提供。我很欣賞任何可以在所有手機上使用此功能的反饋。此外,該應用程序只是崩潰,錯誤陷阱不會被調用。android旋轉圖像只在某些手機上崩潰

private void rotateImage(float degrees){ 

    try{ 

     String imageFile = Environment.getExternalStorageDirectory()+"/"+Imagefile; 
     Bitmap bitmap = BitmapFactory.decodeFile(imageFile);      
     int width = bitmap.getWidth(); 
     int height = bitmap.getHeight(); 

     // resize the bit map 
     //matrix.postScale(scaleWidth, scaleHeight); 

     // rotate the Bitmap 
     Matrix matrix = new Matrix(); 
     matrix.postRotate(degrees);    
     // create the new Bitmap       
     Bitmap rotatedBitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);     

     imageAsset.setImageBitmap(rotatedBitmap); 

     // clean up 
     bitmap = null; 
     rotatedBitmap = null; 
     matrix = null; 

    }catch(Exception e){ 
     utility.logError(this,"{"+CLASS_NAME+"}[rotateImage] Error: "+e.getMessage());   
    } 
} 
+0

什麼是錯誤?你應該發佈logcat的相關部分以及可能產生錯誤的代碼。 –

+0

沒有錯誤信息。它只是崩潰。由於我無法購買每個手機型號,所以有時我只能依靠用戶反饋。 –

+0

您是否在Android Market控制檯中有任何報告?告訴用戶抱怨發送報告! –

回答

1

可能出現內存錯誤。可用的堆取決於手機的類型。儘管位圖存儲在本機內存中(這使得它們的內存消耗難以跟蹤),但它們僅限於相同的堆大小。大型位圖(來自500萬像素)的相機可輕鬆使用應用程序中的所有內存。 你將不得不發佈你的錯誤日誌,以確保儘管。

對於初學者: - 使用較小的圖像

  • 清理位圖使用bitmap.recycle();

編輯: OK,想着它Im相當肯定它是外的內存。這就是爲什麼錯誤不會被捕獲,因爲它發生在本機代碼中。

這是你做什麼:

當你解碼圖像重新取樣它以更小的尺寸:

BitmapFactory.Options resample = new BitmapFactory.Options(); 
resample.inSampleSize = 4; // whatever number seems apropriate 4 means 1/4 of the original 
bitmap = BitmapFactory.decodeFile(imageFile, resample); 
+0

我使用手機上最小的可用分辨率。如果使用全部內存,那麼存在更大的問題。 –

+0

它不是重要顯示器的分辨率。當您加載相機拍攝的位圖(解碼文件)時,會加載非常大的圖像,然後縮小以適合您的屏幕。但沒有辦法確定沒有錯誤日誌。 – pumpkee

+0

你去了! :) – pumpkee

0

androidika可能將要發生什麼。 Try

bitmap.recycle(); 
rotatedBitmap.recycle(); 
+0

我正在評估你和androidika的回覆。但是,由於這不會發生在我可以直接控制的電話上,因此可能需要一些時間。 –

+0

用戶反饋是否提供了有關正在使用的電話的詳細信息?您可以創建自定義avd來模擬這些設備的獨特功能。 – Ian

+0

是的。有問題的手機是摩托羅拉Droid 2 Global。我看過規格創建一個模擬器,但沒有找到所有。有關我可以在哪裏獲得所有規格以創建MD2G的任何建議? –