Android通过Intent方式调用相机拍照取得图片

Android通过Intent方式调用相机拍照取得图片

AndroidManifest.XML

权限设置:

XML布局设置:

 Android通过Intent方式调用相机拍照取得图片_第1张图片

代码:

public classMainActivityextendsAppCompatActivity  implementsView.OnClickListener{
    private static intREQUST_SUO=1;//获取缩略图信号标识
    private static int  REQUST_ORIGINAL=2;//获取原图信号标识
    privateButtonbtn1;
    private Buttonbtn2;
    private ImageViewiv1;
    private ImageViewiv2;
    private StringsdPath;
    private StringpicPath;
    @Override
    protected voidonCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
    }
    private voidinit(){
        btn1= ((Button) findViewById(R.id.btn1));
        btn2= ((Button) findViewById(R.id.btn2));
        iv1= ((ImageView) findViewById(R.id.iv1));
        iv2= ((ImageView) findViewById(R.id.iv2));
        sdPath= Environment.getExternalStorageDirectory().getPath();//获取sd卡的路径
        picPath=sdPath+"/"+"temp.png";//保存图片的路径
        btn1.setOnClickListener(this);
        btn2.setOnClickListener(this);
    }

    public voidonClick(View view){
        switch(view.getId()){
            caseR.id.btn1:
            Intent intent = newIntent(MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(intent,REQUST_SUO);//启动并设置返回请求码为缩略图的
            break;
            case R.id.btn2:
                Intent intent1 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//调用手机的相机
                Uri uri = Uri.fromFile(newFile(picPath));//根据图片路径生成一个uri
                intent1.putExtra(MediaStore.EXTRA_OUTPUT,uri);//设置相机拍照图片保存的位置
                startActivityForResult(intent1,REQUST_ORIGINAL);//启动并设置返回请求码为原图的
            break;
        }
    }
    @Override
    protected voidonActivityResult(intrequestCode, intresultCode,Intent data) {
        super.onActivityResult(requestCode,resultCode,data);
        if (resultCode ==RESULT_OK){
            if(requestCode ==REQUST_SUO){
                Bundle bundle = data.getExtras();
                Bitmap bitmap = (Bitmap) bundle.get("data");//data里面的数据是压缩过的缩略图,不是原图
                iv1.setImageBitmap(bitmap);
            }else if(requestCode ==REQUST_ORIGINAL){
                FileInputStream fileInputStream =null;
                try {
                    fileInputStream =newFileInputStream(picPath);//从路径中读取拍照所得图片的原图
                    Bitmap b = BitmapFactory.decodeStream(fileInputStream);//把所得文件输入流转为bitmap图
                    iv2.setImageBitmap(b);
                }catch(FileNotFoundException e) {
                    e.printStackTrace();
                }finally{
                    try{
                        fileInputStream.close();
                    }catch(IOException e){
                        e.printStackTrace();
                    }
                }
            }
        }
    }
}

效果图:

Android通过Intent方式调用相机拍照取得图片_第2张图片

 demo下载(百度云)

http://pan.baidu.com/s/1nvhs63v

提取密码:89a5

 

你可能感兴趣的:(Android学习之路)