繁体   English   中英

如何使用 registerForActivityResult 启动相机?

[英]How do I use registerForActivityResult to launch Camera?

由于 startActivityForResult 已被弃用,我正在尝试计算如何使用新方法启动相机。

这是一个示例,您可以添加更多验证,但使用了registerForActivityResult

编辑:

TakePicture提到的TakePicture是一种更简单的方法

ActivityResultLauncher<Intent> someActivityResultLauncher = registerForActivityResult(
new ActivityResultContracts.TakePicture(),
new ActivityResultCallback<Boolean>() {
    @Override
    public void onActivityResult(Boolean result) {
       // stuff here                  
    }
});

 

拍照并放入一些imageView。 需要相机权限

   <uses-permission android:name="android.permission.CAMERA"/>



   if(permissionGranted){
       pickCamera();
   }

    Uri cam_uri;
    public void pickCamera() {
        ContentValues values = new ContentValues();
        values.put(MediaStore.Images.Media.TITLE, "New Picture");
        values.put(MediaStore.Images.Media.DESCRIPTION, "From Camera");
        cam_uri = requireContext().getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
        Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, cam_uri);

        //startActivityForResult(cameraIntent, IMAGE_PICK_CAMERA_CODE); // OLD WAY
        startCamera.launch(cameraIntent);                // VERY NEW WAY

       
    }


    ActivityResultLauncher<Intent> startCamera = registerForActivityResult(
            new ActivityResultContracts.StartActivityForResult(),
            new ActivityResultCallback<ActivityResult>() {
                @Override
                public void onActivityResult(ActivityResult result) {
                    if (result.getResultCode() == RESULT_OK) {
                        // There are no request codes

                        mImageView.setImageURI(cam_uri);

                    }
                }
            });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM