解决安卓手机竖向拍照后,图像横屏展示的问题。

您所在的位置:网站首页 华为手机横屏怎么变竖屏了 解决安卓手机竖向拍照后,图像横屏展示的问题。

解决安卓手机竖向拍照后,图像横屏展示的问题。

2024-07-09 05:01| 来源: 网络整理| 查看: 265

安卓手机调用系统的相机拍照之后,本来应该是根据你手机的拍照方向,预览照片应该是根据你手持手机的方向不一样而不一样。但是现在就有一个问题,华为手机是正常的,但是像Vivo和小米手机跳用系统的相机拍照之后,显示的预览图是横屏的。 首先试着解决Activity的显示方式只能是竖屏:

android:screenOrientation="portrait"

发现加上之后华为是可以正常显示的,但是小米和vivo手机还是不行。 Android 设置禁止横屏失效解决方法 加上代码申请竖屏之后,解决了vivo手机的问题,可以正常显示。但是小米系列手机不行! 后来发现小米手机的拍照之后,图片默认是横向显示的,也就是手机其实还是正常的竖屏,但是照片被旋转了90度显示。 下面是小米的适配代码:

hideTakePhotoLayout(); BitmapFactory.Options options = new BitmapFactory.Options(); Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length,options); //在这里判断显示图片的旋转角度,然后正确旋转之后显示 Matrix matrix = new Matrix(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); //compress方法是把一个位图写到一个OutputStream中,参数一是位图对象,二是格式,三是压缩的质量,四是输出流 bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); //输出流转成输入流 InputStream inputimage = new ByteArrayInputStream(baos.toByteArray()); matrix.postRotate(getPhotoRotation(inputimage)); Log.e(">>>>>>>>>>>>>","getPhotoRotation(inputimage):"+getPhotoRotation(inputimage)); if ("xiaomi".equalsIgnoreCase(Build.MANUFACTURER)) { matrix.postRotate(90); //小米手机需要旋转90度正常显示 } bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true); vShowPhoto.setImageBitmap(bitmap); bases64 = EncryptHelper.getBase64(bytes); if (vloadingLay != null) vloadingLay.setVisibility(View.VISIBLE); if(vloading != null) vloading.setText("翻译中..."); startTranslate(bases64);

需要获取图片旋转的角度的方法:

private int getPhotoRotation(InputStream inputStream){ try{ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { ExifInterface exifInterface = new ExifInterface(inputStream); int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL); switch (orientation){ case ExifInterface.ORIENTATION_ROTATE_90: return 90; case ExifInterface.ORIENTATION_ROTATE_180: return 180; case ExifInterface.ORIENTATION_ROTATE_270: return 270; default: return 0; } } }catch (Exception e){ Log.e(">>>>>>>>>>>>","获取图片旋转的角度报错:"+e.getMessage()); } return 0; }

但是这个代码还是根据了手机的不同型号进行了适配。 解决方案二:

把手机的拍照的方向全部设置成横屏,那么拍的照片也就是横屏的照片。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3