[英]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.