如何在我的应用程序中将相机意图中的图像添加到ImageView

时间:2015-09-01 13:50:27

标签: android android-intent

我正在尝试在我的应用中拍摄图像,然后将该图像返回到imageview。它会拍摄图像,但不会将图像返回到我的ImageView

这就是我所做的:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    View rootView = inflater.inflate(R.layout.fragment_images, container, false);

    imagev = (ImageView) rootView.findViewById(R.id.MyImages);
    imagev.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            timeStamp = new SimpleDateFormat("ddMMMyyyy_HH:mm:ss").format(new Date());
            File imagesFolder = new File(Environment.getExternalStorageDirectory(), "My Taken Images");
            imagesFolder.mkdirs();
            image = new File(imagesFolder.getPath(), "Image_" + timeStamp + ".jpg");
            fileUri = Uri.fromFile(image);

            imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
            startActivityForResult(imageIntent, TAKE_PICTURE);
        }
    });
    return rootView;
}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == TAKE_PICTURE && resultCode == RESULT_OK) {
            imageview = ThumbnailUtils.extractThumbnail(BitmapFactory.decodeFile(String.valueOf(fileUri), 512, 384);
            ExifInterface exif = null;
            try {
                exif = new ExifInterface(filep);
            } catch (IOException e) {
                e.printStackTrace();
            }
            int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, -1);
            if (orientation != -1) {
                switch (orientation) {
                    case ExifInterface.ORIENTATION_ROTATE_90:
                        rotate = 90;
                        break;
                    case ExifInterface.ORIENTATION_ROTATE_180:
                        rotate = 180;
                        break;
                    case ExifInterface.ORIENTATION_ROTATE_270:
                        rotate = 270;
                        break;
                    default:
                        rotate = 0;
                        break;
                }
            }
            Matrix matrix = new Matrix();
            matrix.postRotate(rotate);
            imagev.setImageBitmap(imageview);

        }
    }
}
}

我在这里做错了什么? 请帮忙!

由于

1 个答案:

答案 0 :(得分:0)

这里至少有两个问题。

您未获得结果的原因是您将无效值传递给decodeFile()decodeFile()走了一条路;你正在传递一个file:///字符串。从image抓住onCreateView(),或在getPath()上使用Uri,以获取该文件的路径。

此外:

  • 设置Matrix时遇到很多麻烦,然后似乎永远不会使用它。

  • onCreateView()开始活动很奇怪。