Ошибка при захвате изображения и его сохранении в галерее в Android API уровня 27 с использованием CameraX API.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Ошибка при захвате изображения и его сохранении в галерее в Android API уровня 27 с использованием CameraX API.

Сообщение Anonymous »

Я пытаюсь сделать снимок и сохранить его в файле с помощью cameraX Api

Код: Выделить всё

val name = "CameraxImage.jpeg"
val contentValues = ContentValues().apply {
put(DISPLAY_NAME, name)
put(MIME_TYPE, "image/jpeg")
put(Images.Media.RELATIVE_PATH, "Pictures/CameraX-Image")
}
val outputOptions = ImageCapture.OutputFileOptions
.Builder(
context.contentResolver,
Images.Media.EXTERNAL_CONTENT_URI,
contentValues
)
.build()
imageCapture.takePicture(
outputOptions,
ContextCompat.getMainExecutor(context),
object : ImageCapture.OnImageSavedCallback {
override fun onImageSaved(outputFileResults: ImageCapture.OutputFileResults) {
val bitmapImage = outputFileResults.savedUri?.let {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
ImageDecoder.decodeBitmap(ImageDecoder.createSource(context.contentResolver, it))
} else {
Images.Media.getBitmap(context.contentResolver, it)
}
}
if (bitmapImage != null) {
rotateImageIfRequired(outputFileResults.savedUri!!, context, bitmapImage)
onPhotoCaptured(cropImage(bitmapImage, croppedRect, parentFrame))
}
}

override fun onError(exception: ImageCaptureException) {
Log.d(TAG, "onError: ${exception.message}")
}
})
Этот код хорошо работает в Android API 30. Но при попытке захвата на уровнях API 27 и 25 выдается следующая ошибка.

Код: Выделить всё

onError: Failed to insert a MediaStore URI.
Альтернатива MediaStore.getBitmap() работает в API 29. Как захватить и сохранить изображение в API 27 и 25 ?

Подробнее здесь: https://stackoverflow.com/questions/791 ... ng-camerax
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»