在我用 -
拍照后我的问题是这个private void dispatchTakePictureIntent() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// Ensure that there's a camera activity to handle the intent
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, 2);
}
}
在我将图片保存到文件系统并在ImageView上显示图片后
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 2 && resultCode == RESULT_OK) {
try{
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
File picFile=createImageFile();
FileOutputStream fo = new FileOutputStream(picFile);
imageBitmap.compress(Bitmap.CompressFormat.PNG, 90, fo);
fo.close();
//rotating the picture if its rotated wrong
ExifInterface ei = new ExifInterface(FileAbsPath);
int orientation = ei.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
switch(orientation) {
case ExifInterface.ORIENTATION_ROTATE_90:
Matrix matrix = new Matrix();
matrix.postRotate(90);
imageBitmap=Bitmap.createBitmap(imageBitmap, 0, 0, imageBitmap.getWidth(), imageBitmap.getHeight(), matrix, true);
break;
case ExifInterface.ORIENTATION_ROTATE_180:
Matrix matrix2 = new Matrix();
matrix2.postRotate(180);
imageBitmap=Bitmap.createBitmap(imageBitmap, 0, 0, imageBitmap.getWidth(), imageBitmap.getHeight(), matrix2, true);
break;
// etc.
}
myBitMap=imageBitmap;
if (mImageView.getMeasuredHeight()>0){
mImageView.setImageBitmap(myBitMap);
}
}catch (IOException e) {System.out.println("exception catched.");}
}
}
有时会发生的是,当我正在使用应用程序时,在我拍照后,选择“保存”,然后回到我的应用程序,整个屏幕(包括图片)旋转90度顺时针旋转一秒钟,然后它回到常规肖像模式。
它并不总是发生,但大部分时间都会发生。
此问题与图片是否轮换的switch
case
无关(即使此部分不存在也会发生),即使我将活动定义为肖像活动。
我发现这不是我手机的问题因为在whatsap这样的应用程序中没有发生这个问题,所以大多数都有代码来处理这个问题。
请帮帮我。 感谢。