先檢查使用下面摘錄相機方向:
private int lookupRotation() {
WindowManager mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
Display mDisplay = mWindowManager.getDefaultDisplay();
int rotation = mDisplay.getRotation();
Log.v(LOG_TAG, "rotation: " + rotation);
return rotation;
}
然後使用檢查所需的旋轉,並設置你的定位:
if (rotation == Surface.ROTATION_0) {
int degreesRotate = 90;
}
調整的位圖和旋轉你的位圖基於以下使用方向代碼段:
private Bitmap createBitmap(byte[] imageData, int maxWidth, int maxHeight,
int rotationDegrees) throws FileNotFoundException {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;
options.inDensity = 240;
int imageWidth = 0;
int imageHeight = 0;
Bitmap image = BitmapFactory.decodeByteArray(imageData, 0,
imageData.length, options);
imageWidth = image.getWidth();
imageHeight = image.getHeight();
if (imageWidth > maxWidth || imageHeight > maxHeight) {
double imageAspect = (double) imageWidth/imageHeight;
double desiredAspect = (double) maxWidth/maxHeight;
double scaleFactor;
if (imageAspect < desiredAspect) {
scaleFactor = (double) maxHeight/imageHeight;
} else {
scaleFactor = (double) maxWidth/imageWidth;
}
float scaleWidth = ((float) scaleFactor) * imageWidth;
float scaleHeight = ((float) scaleFactor) * imageHeight;
Bitmap scaledBitmap = Bitmap.createScaledBitmap(image,
(int) scaleWidth, (int) scaleHeight, true);
image = scaledBitmap;
}
if (rotationDegrees != 0) {
int w = image.getWidth();
int h = image.getHeight();
mtx.postRotate(rotationDegrees);
Bitmap rotatedBMP = Bitmap.createBitmap(image, 0, 0, w, h, mtx,
true);
image = rotatedBMP;
}
return image;
}
上述方法將retu基於方向的rns位圖。
您只需要將圖像保存在橫向模式下? @Doomsknight – Venky
像是,他們只能保存在肖像模式。或者爲了檢測當前的方向,並採取相應的行動 – Doomsknight