您的位置:首页 > 移动开发 > Android开发

andriod 三星手机拍照各种奇葩问题

2015-06-16 17:36 381 查看
1.界面重启问题

解决方法:

重载onConfigurationChanged方法

@Override

 public void onConfigurationChanged(Configuration newConfig) {

  super.onConfigurationChanged(newConfig);

 }

manifest配置activity时加上

android:configChanges="orientation|keyboardHidden|screenSize"

2.onActivityResult 无法获取图片

解决方法:

自定义拍照路径

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

   intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment.getExternalStorageDirectory(), IMAGE_FILE_NAME)));

   startActivityForResult(intent, REQUEST_CODE_CAPTURE_CAMEIA);

3.照片被旋转

解决方法:

先计算旋转角度,然后旋转回来。代码如下

/**

  * 读取图片属性:旋转的角度

  *

  * @param path 图片绝对路径

  * @return degree旋转的角度

  */

 public static int readPictureDegree(String path) {

  int degree = 0;

  try {

   ExifInterface exifInterface = new ExifInterface(path);

   int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);

   switch (orientation) {

   case ExifInterface.ORIENTATION_ROTATE_90:

    degree = 90;

    break;

   case ExifInterface.ORIENTATION_ROTATE_180:

    degree = 180;

    break;

   case ExifInterface.ORIENTATION_ROTATE_270:

    degree = 270;

    break;

   }

  } catch (IOException e) {

  }

  return degree;

 }

 /**

  * 旋转图片

  *

  * @param angle

  * @param bitmap

  * @return Bitmap

  */

 public static Bitmap rotaingImageView(int angle, Bitmap bitmap) {

  if (null == bitmap) {

   return null;

  }

  // 旋转图片 动作

  Matrix matrix = new Matrix();

  matrix.postRotate(angle);

  // 创建新的图片

  Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);

  return resizedBitmap;

 }


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息