我想建立一個簡單的攝影應用。啓動後,用戶將看到一個具有工具欄和imageView的基本mainActivity。用戶按下操作欄中的操作按鈕,該操作按鈕使用startActivityForResult()
創建啓動相機應用程序的意圖。用戶使用相機應用拍攝的照片然後返回到mainActivity。我得到的圖像和ImageView的大小均有,並利用它們來計算我用一個比例係數來解碼位圖的縮小版,就像這樣:ImageView的高度和寬度變爲0時,屏幕旋轉,而在相機
BitmapFactory.Options bitmapFactoryOptions = new BitmapFactory.Options();
bitmapFactoryOptions.inJustDecodeBounds = true;
BitmapFactory.decodeFile(mImageFileLocation, bitmapFactoryOptions);
int actualCameraImageWidth = bitmapFactoryOptions.outWidth;
int actualCameraImageHeight = bitmapFactoryOptions.outHeight;
int heightScale = actualCameraImageHeight/imageViewHeight;
int widthScale = actualCameraImageWidth/imageViewWidth;
Integer factorToUse;
if (heightScale == widthScale) {
Toast.makeText(this, "scales are the same: " + heightScale, Toast.LENGTH_SHORT).show();
factorToUse = heightScale;
} else {
factorToUse = Math.min(heightScale, widthScale);
Toast.makeText(this, "scales are DIFFERENT: " + factorToUse, Toast.LENGTH_SHORT).show();
}
bitmapFactoryOptions.inSampleSize = factorToUse;
bitmapFactoryOptions.inJustDecodeBounds = false;
Bitmap reducedSizePhoto = BitmapFactory.decodeFile(mImageFileLocation, bitmapFactoryOptions); //decode the image with that scale option set
imageView.setImageBitmap(reducedSizePhoto);
我則顯示,在ImageView的解碼位圖mainActivity的。如果用戶保持他們的設備在同一個方向,同時他們拍照
該應用程序的偉大工程。但是,如果他們按操作鍵,然後改變他們的設備的方向,而在相機應用程序,然後一個RuntimeException與以下消息java.lang.RuntimeException: Unable to resume activity {com.wescj.cameraapplication/com.wescj.cameraapplication.MainActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=Intent { }} to activity {com.wescj.cameraapplication/com.wescj.cameraapplication.MainActivity}: java.lang.ArithmeticException: divide by zero
,然後一個巨大的堆棧跟蹤拋出。
使用調試器,我想我已經追溯到這個錯誤的根源,出於某種原因,當用戶在相機應用程序中更改設備方向時,imageView的高度和寬度變爲0,導致'除以0'的錯誤。
我已經試過所有我能想到的,以停止應用程序,如果在使用相機時的方向改變崩潰。我搜索了android文檔,並在stackOverflow上查看了很多線程。我曾嘗試加入不同的XML屬性的ImageView的,如adjustViewBounds
和setScaleType
。我甚至嘗試在onResultActivity()
上使用意圖來啓動mainActivity並顯示圖像。但他們都沒有工作。任何人都可以闡明爲什麼imageView尺寸變爲0? https://github.com/Wes1324/CameraApplication/tree/action_bar_button
感謝提前任何人,試圖幫助我:
完整的代碼可以看出。