0

我想在我的 7 英寸平板电脑 3.2 的图像视图中显示通过相机捕获的图像。当我正在捕获图像并且控制返回到我的活动图像时,图像不显示在Image View. 但同样的事情在智能手机上也能正常工作。

我也尝试android:configChanges="keyboardHidden|orientation"在清单中进行该活动,但仍然存在问题。

如果我通过将平板电脑保持在横向来捕获图像,它可以正常工作并显示图像。

我将相机意图称为如下

我在3.2版的 7 英寸三星平板电脑 GT-P6200上运行我的应用程序。

我调用的相机意图如下

Intent cameraIntent = new Intent();
cameraIntent.setAction(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, PICTURE_FROM_CAMERA);

请帮我解决这个问题

我的活动结果方法

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        if (requestCode == PICTURE_FROM_CAMERA) {
            Bitmap bitmap = (Bitmap) data.getExtras().get("data");
            photoView.setImageBitmap(bitmap);
        }
    }
}
4

2 回答 2

0

尝试将设备旋转到横向,因为 MediaStore 捕获仅适用于横向模式。

于 2012-11-27T09:25:07.903 回答
0

这是 Some 选项卡中的常见问题,对于此问题,您可以尝试以下代码。这个对我有用。

 try {
        File f = new File(SD_CARD_IMAGE_PATH);
        ExifInterface exif = new ExifInterface(f.getPath());
        int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);

        int angle = 0;

        if (orientation == ExifInterface.ORIENTATION_ROTATE_90) {
            angle = 90;
        } 
        else if (orientation == ExifInterface.ORIENTATION_ROTATE_180) {
            angle = 180;
        } 
        else if (orientation == ExifInterface.ORIENTATION_ROTATE_270) {
            angle = 270;
        }

        Matrix mat = new Matrix();
        mat.postRotate(angle);

        Bitmap bmp = BitmapFactory.decodeStream(new FileInputStream(f), null, null);
        Bitmap correctBmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), mat, true);                 
    }
    catch (IOException e) {
        Log.w("TAG", "-- Error in setting image");
    }   
    catch(OutOfMemoryError oom) {
        Log.w("TAG", "-- OOM Error in setting image");
    }

但是我应该以其他形式使用吗?

于 2013-03-19T06:22:06.927 回答