拍照摄像头,从片段中 [英] Take photo from camera in fragment

查看:236
本文介绍了拍照摄像头,从片段中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的片段我试图拍照从我的相机,但的onActivityResult 我的片段不叫。拍照这个之后片段未显示,并切换到我的第一个片段。在那里捕捉照片的任何其他方式片段,或者我究竟做错了什么?

下面是我目前的code:

 公共无效takePhoto(){
        意向意图=新意图(android.media.action.IMAGE_CAPTURE);
        文件照片=新的文件(Environment.getExternalStorageDirectory(),Pic.jpg);
        intent.putExtra(MediaStore.EXTRA_OUTPUT,
                Uri.fromFile(照片));
        imageUri = Uri.fromFile(照片);
        PhotosListFragment.this.startActivityForResult(意向,100);
    }    @覆盖
    公共无效的onActivityResult(INT申请code,INT结果code,意图数据){
        super.onActivityResult(要求code,结果code,数据);
        开关(要求code){
        案例100:
            如果(结果code == Activity.RESULT_OK){
                乌里selectedImage = imageUri;
                。getActivity()getContentResolver()有NotifyChange(selectedImage,NULL);
                ContentResolver的CR = getActivity()getContentResolver()。
                位图位图;
                尝试{
                     位= android.provider.MediaStore.Images.Media
                     .getBitmap(CR,selectedImage);                    viewHolder.imageView.setImageBitmap(位图);
                    Toast.makeText(getActivity(),selectedImage.toString(),
                            Toast.LENGTH_LONG).show();
                }赶上(例外五){
                    Toast.makeText(getActivity(),无法加载,Toast.LENGTH_SHORT)
                            。显示();
                    Log.e(照相机,e.toString());
                }
            }
        }
    }


解决方案

我想你的code其做工精细的花花公子。我换

  PhotosListFragment.this.startActivityForResult(意向,100);

  getActivity()startActivityForResult(意向,100)。

这后拍照,返回回同样的活动。

我想无论你的片段都在同一活动。

如果是这样的情况,我建议你创建一个新的活动,并把新的片段在那里。

In my Fragment I try to take picture from my camera but the onActivityResult of my Fragment is not called. After taking photo this Fragment is not showing and is switching to my first Fragment. In there any other way for capturing photos in a Fragment, or what am I doing wrong?

Here is my current code:

public void takePhoto() {
        Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
        File photo = new File(Environment.getExternalStorageDirectory(),  "Pic.jpg");
        intent.putExtra(MediaStore.EXTRA_OUTPUT,
                Uri.fromFile(photo));
        imageUri = Uri.fromFile(photo);
        PhotosListFragment.this.startActivityForResult(intent, 100);
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
        case 100:
            if (resultCode == Activity.RESULT_OK) {
                Uri selectedImage = imageUri;
                getActivity().getContentResolver().notifyChange(selectedImage, null);
                ContentResolver cr = getActivity().getContentResolver();
                Bitmap bitmap;
                try {
                     bitmap = android.provider.MediaStore.Images.Media
                     .getBitmap(cr, selectedImage);

                    viewHolder.imageView.setImageBitmap(bitmap);
                    Toast.makeText(getActivity(), selectedImage.toString(),
                            Toast.LENGTH_LONG).show();
                } catch (Exception e) {
                    Toast.makeText(getActivity(), "Failed to load", Toast.LENGTH_SHORT)
                            .show();
                    Log.e("Camera", e.toString());
                }
            }
        }
    }

解决方案

I tried your code its working fine dude. I changed

PhotosListFragment.this.startActivityForResult(intent, 100);

to

getActivity().startActivityForResult(intent, 100);

which after taking the picture, returning back to same activity.

I think both of your fragments are on same activity.

if that is the situation, I suggest you to create a new activity and put the new fragment in there.

这篇关于拍照摄像头,从片段中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆