美文网首页
Android - 调用系统相机 (适配Android10)

Android - 调用系统相机 (适配Android10)

作者: xlq | 来源:发表于2021-05-26 18:10 被阅读0次
    1. 相机拍照
    private Uri mImageUri;
    
    
    //假设拍照片保存在DCIM公共目录,为了查看方便,尽可能的将逻辑写在一个方法里
    private void takePicture() {
        String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath();
        String name = System.currentTimeMillis() + ".jpg";
        File file = new File(path,name);
    
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        /**
         *  主要适配的点在mImageUri赋值这里
         */
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
            // Android Q得用MediaStore先存一下
            ContentValues values = new ContentValues();
            values.put(MediaStore.Images.Media.DISPLAY_NAME,name);
            values.put(MediaStore.Images.Media.RELATIVE_PATH,Environment.DIRECTORY_DCIM);
            values.put(MediaStore.Images.Media.MIME_TYPE,"image/jpeg");
            mUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,values);
        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            // Android N版本需要用FileProvider
            mUri = FileProvider.getUriForFile(this,getPackageName()+ "fileProvider",file);
        } else {
            // 古老的版本用这个
            mUri = Uri.fromFile(file);
        }
        // 指定图片保存的位置
        intent.putExtra(MediaStore.EXTRA_OUTPUT,mUri); 
        startActivityForResult(intent,REQUEST_CODE_CAMERA);
    }
    
    @Override
        protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if (requestCode == REQUEST_CODE_CAMERA) {
                if (resultCode == RESULT_OK) {
                    // 这里就不要用data.getData()了,有可能返回空。
                    // 直接用之前的mUri
                    // 低版本需要绝对地址的,直接拿方法中的path
                    Glide.with(this).load(mUri).into(mImageView);
                }
            }
        }
    
    1. 拍视频
      依葫芦画瓢吧!

    相关文章

      网友评论

          本文标题:Android - 调用系统相机 (适配Android10)

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