В моем приложении 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
Форум для тех, кто программирует под Android
1738305197
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?
Есть более правильный способ достижения моей цели?
Подробнее здесь: [url]https://stackoverflow.com/questions/79401906/correct-way-to-launch-camera-via-takepicture-contract-and-have-the-image-saved-i[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия