演示视频
android apk的安装,本文用的自带模版是Bottom Navigation Activity,android api 30
在AndroidManifest.xml文件中添加相机权限,与</application>标签同级
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
这里用了一个Button和ImageView组件
写在onCreateView函数下面
//按钮触发器
Button button = binding.buttonContinue;
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 在这里处理点击事件
requestCameraPermission();
}
});
return root;
// 请求相机权限
private void requestCameraPermission() {
if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.CAMERA}, PERMISSIONS_REQUEST_CAMERA);
} else {
takePhoto();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == PERMISSIONS_REQUEST_CAMERA) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 权限被授予,执行拍照操作
takePhoto();
} else {
// 权限被拒绝
Toast.makeText(getContext(), "Camera permission is required to take a photo.", Toast.LENGTH_SHORT).show();
}
}
}
// 启动相机并拍照
private void takePhoto() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_TAKE_PHOTO) {
if (resultCode == Activity.RESULT_OK) {
Bundle extras = data.getExtras();
if (extras != null && extras.containsKey("data")) {
Bitmap imageBitmap = (Bitmap) extras.get("data");
// 将Bitmap显示在ImageView中
binding.imageViewCamera.setImageBitmap(imageBitmap);
} else {
// 获取照片的URI
Uri photoUri = data.getData();
if (photoUri != null) {
// 显示图片
binding.imageViewCamera.setImageURI(photoUri);
} else {
Log.e("HomeFragment", "Photo URI is null, cannot display image.");
}
}
} else if (resultCode == Activity.RESULT_CANCELED) {
// 用户取消了拍照
Log.i("HomeFragment", "User cancelled the photo capture.");
} else {
// 其他错误处理
Log.e("HomeFragment", "Unexpected result code: " + resultCode);
}
}
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。