Android 调用系统相册和系统照相机功能雨实例源码.zip
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
在Android开发中,调用系统相册和相机是常见的用户交互功能,允许用户选择或拍摄图片,以便在应用中使用。下面将详细讲解如何实现这些功能,并提供相关的代码实例。 一、调用系统相册 1. 请求权限: 在Android 6.0及以上版本,需要在运行时请求权限。确保在`AndroidManifest.xml`中添加读取存储的权限: ```xml <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> ``` 然后在运行时请求权限: ```java if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_PERMISSIONS_REQUEST_CODE); } ``` 2. 使用Intent启动相册: 在获取权限后,可以通过Intent启动系统相册: ```java Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(intent, GALLERY_REQUEST_CODE); ``` 这里`GALLERY_REQUEST_CODE`是自定义的请求码,用于在回调方法中区分来源。 3. 处理返回结果: 在`onActivityResult()`方法中处理选中的图片: ```java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == GALLERY_REQUEST_CODE && resultCode == RESULT_OK && data != null) { Uri selectedImage = data.getData(); // 对选中的图片进行进一步操作,如显示在ImageView中 } } ``` 二、调用系统相机 1. 请求权限: 同样需要读写存储权限,已在上面提及。 2. 创建临时文件: 因为相机拍摄的照片需要保存到本地,可以创建一个临时文件来接收: ```java File imageFile = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), "temp_image.jpg"); Uri imageUri = FileProvider.getUriForFile(this, getPackageName() + ".fileprovider", imageFile); ``` 注意,`fileprovider`需要在`AndroidManifest.xml`中配置: ```xml <provider android:name="androidx.core.content.FileProvider" android:authorities="${applicationId}.fileprovider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"></meta-data> </provider> ``` 并在`res/xml/file_paths.xml`中指定可访问的路径。 3. 启动相机: 使用创建的文件Uri启动相机: ```java Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); startActivityForResult(takePictureIntent, CAMERA_REQUEST_CODE); ``` 4. 处理返回结果: 与调用相册类似,处理拍照后的图片: ```java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == CAMERA_REQUEST_CODE && resultCode == RESULT_OK) { // 图片已保存在imageFile中,可以进行后续处理 } } ``` 通过以上步骤,你可以在Android应用中实现调用系统相册和相机的功能。注意,实际应用中还需要考虑错误处理、图片裁剪、权限管理等问题,以提供更完善的用户体验。在提供的源码中,应该包含了这些功能的完整实现,你可以参考源码进行学习和修改,以适应你的项目需求。
- 1
- 粉丝: 309
- 资源: 5579
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助