android拉起系统相机拍照

作者: 某人_Valar | 来源:发表于2018-01-03 11:34 被阅读75次

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

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


    image.png
    image.png

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


    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拉起系统相机拍照

        本文链接:https://www.haomeiwen.com/subject/xfstixtx.html