android拉起系统相机拍照

作者:某人_Valar
如需转载请保留原文链接
Android打开系统相机拍照并在返回时将照片显示在app界面上。

点击“打开相机”按钮进入拍照界面


android拉起系统相机拍照_第1张图片
image.png

image.png

拍照完成后回到app中,流程大概就是这样,这时图片已经显示在了之前布局的imageview控件中


android拉起系统相机拍照_第2张图片
image.png

代码也比较简单,不过在系统6.0以上版本需要自己设置一下动态权限(Manifest.permission.CAMERA,
Manifest.permission.WRITE_EXTERNAL_STORAGE)

//获取SD卡的路径
String sdPath = Environment.getExternalStorageDirectory().getAbsolutePath()+"/songshucang";
String picPath = sdPath + "/" + "temp.png";

 void toOpenCamera(){
        Intent intent2 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        Uri uri = Uri.fromFile(new File(picPath));
        //为拍摄的图片指定一个存储的路径
        intent2.putExtra(MediaStore.EXTRA_OUTPUT, uri);
        startActivityForResult(intent2, REQUEST_ORIGINAL);
    }

重写一下onActivityResult方法

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        CallbackContext.onActivityResult(requestCode,resultCode,data);
        super.onActivityResult(requestCode, resultCode, data);

        if (resultCode == RESULT_OK) {
            if(requestCode == 2){
                /*
                 * 通过内存卡的路径进行读取图片,得到的图片是拍摄的原图
                 */
                FileInputStream fis = null;
                try {
                    Log.e("sdPath2",picPath);
            
                    //发送系统广播通知系统相册更新
                    File fileTemp = new File(picPath);
                    Uri uri =  Uri.fromFile(fileTemp);
                    Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
                    intent.setData(uri);
                    MainActivity.this.sendBroadcast(intent);

                    //把图片转化为字节流
                    fis = new FileInputStream(picPath);
                    //把流转化图片
                    Bitmap bitmap = BitmapFactory.decodeStream(fis);
                    //将bitmap显示在控件中
                    mImageView.setImageBitmap(bitmap);
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }finally{
                    try {
                        fis.close();//关闭流
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }

你可能感兴趣的:(android拉起系统相机拍照)