返回

Android 拍照:轻松获取缩略图和完整图像(兼容 Android N)

Android

Android 拍照:获取缩略图和完整图像(兼容 Android N)

在 Android 应用程序中,我们经常需要使用相机拍摄照片。我们可能需要获取图像的缩略图或完整版本以进行进一步处理。本文将指导您在 Android 中获取缩略图和完整图像,并涵盖适用于 Android N 及更高版本的兼容性调整。

获取缩略图

默认情况下,当您使用系统相机拍照而不指定输出路径时,系统会返回一张缩略图图像。要获取缩略图,请按照以下步骤操作:

  1. 创建一个意图以启动系统相机应用程序:
val takePictureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
  1. 启动相机意图并等待结果:
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE)
  1. onActivityResult() 回调中,从意图中获取缩略图图像:
val thumbnailBitmap = data?.extras?.get("data") as Bitmap

获取完整图像

要获取完整图像,您需要指定一个输出路径以将图像保存到磁盘中。以下是实现它的步骤:

  1. 创建一个文件来存储图像:
val imageFile = File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), "image.jpg")
  1. 创建一个 Uri 来表示图像文件:
val imageUri = FileProvider.getUriForFile(this, "com.your.app.fileprovider", imageFile)
  1. 将 Uri 设置为意图的输出:
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri)
  1. 启动相机意图并等待结果:
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE)
  1. onActivityResult() 回调中,从文件路径加载完整图像:
val fullImageBitmap = BitmapFactory.decodeFile(imageFile.absolutePath)

兼容 Android N 及更高版本

在 Android N(API 24)及更高版本中,对相机权限处理进行了更改。为了在这些版本中获取相机权限,您需要在 AndroidManifest.xml 文件中声明 CAMERA 权限。此外,您需要在运行时检查权限并请求用户授予它。以下是执行此操作的代码示例:

if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.CAMERA), REQUEST_CAMERA_PERMISSION)
} else {
    // 权限已授予,您可以拍照
}

结论

通过遵循本文中的步骤,您可以在 Android 应用程序中轻松获取缩略图和完整图像。本文还涵盖了适用于 Android N 及更高版本的兼容性调整,确保您的代码在所有设备上都能正常运行。通过利用这些技术,您可以创建功能强大的应用程序,充分利用 Android 相机功能。