Правильный способ запуска камеры с помощью контракта на TakePicture и сохранить изображение в галерееAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Правильный способ запуска камеры с помощью контракта на TakePicture и сохранить изображение в галерее

Сообщение Anonymous »

В моем приложении 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
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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