В моем приложении Android мне нужно позволить пользователю снимать фотографию, используя камеру для использования приложением, но также убедиться, что фотография сохраняется в общей галерее устройства. < /p>
Я использую контракт на результат деятельности TakePicture и передаю его URI, который я создаю, используя API Mediastore. Код в моей деятельности выглядит так: < /p>
private var takePictureUri: Uri? = null
val takePictureLauncher = registerForActivityResult(ActivityResultContracts.TakePicture()) {
result: Boolean ->
val uri = takePictureUri
if(result && uri != null) {
// Do something with the captured image
}
}
fun takePicture() {
val collectionUri = if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P) {
MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY)
} else {
MediaStore.Images.Media.EXTERNAL_CONTENT_URI
}
val timestamp = SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US)
.format(System.currentTimeMillis())
val contentValues = ContentValues().apply {
put(MediaStore.MediaColumns.DISPLAY_NAME, timestamp)
put(MediaStore.MediaColumns.MIME_TYPE, "image/jpeg")
}
takePictureUri = contentResolver.insert(collectionUri, contentValues)
takePictureLauncher.launch(takePictureUri)
}
< /code>
Все это, кажется, работает до сих пор, и это здорово! Использование API FileProvider, а не API MediaStore, поэтому я обеспокоен, что это может быть неправильным или плохо поддерживаемым подходом. Укажите тип MIME до запустить деятельность TakePicture - как я могу быть уверен, что деятельность TakePicture вернет JPEG, а не, скажем, изображение HEIF?
Есть более правильный способ достижения моей цели?
Подробнее здесь: https://stackoverflow.com/questions/794 ... ge-saved-i
Правильный способ запуска камеры с помощью контракта на TakePicture и сохранить изображение в галерее ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
ActivityResultContracts.TakePicture сохраняет изображение в галерее вместо целевого URI.
Anonymous » » в форуме JAVA - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-
-
-
ActivityResultContracts.TakePicture сохраняет изображение в галерее вместо целевого URI.
Anonymous » » в форуме Android - 0 Ответы
- 19 Просмотры
-
Последнее сообщение Anonymous
-