Вариант использования - В настоящее время я работаю над модулем загрузки видео. Чтобы получить видео, я запустил средство выбора видео SAF, но я не могу получить какой-либо способ или код для получения подробностей видео из URI в OnActivityResult, даже когда я смотрел Google IO 19 Подготовка видео для хранения с определенными областями, но там также не предоставлен пример кода, как сделать это. (Детали видео означают разрешение и имя имени продолжительности размера)
Чтобы получить подробности видео, мы должны использовать API MediaStore, который рекомендовал, и MediaStore работает только с URI контента, если я передам файл URI, тогда курсор всегда будет нулевым и URI контента мы получаем только тогда, когда курсор не равен нулю
Надеюсь, кто-то мне поможет
Я открываю средство выбора видео, используя этот код
private fun openVideoChooser() {
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT)
intent.type = "video/*"
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, false)
startActivityForResult(Intent.createChooser(intent, "Select Picture"), 100)
}
в onActivityResult. эта функция, передавая uri, полученный из intent-
private fun getVideoDetails(it: Uri) {
var fileName: String? = null
var duration: Long = 0
val projection = arrayOf(MediaStore.Video.VideoColumns.DATA, MediaStore.Video.VideoColumns.DURATION)
val cursor = contentResolver.query(it, projection, null, null, null)
if (cursor != null) {
if (cursor.moveToFirst()) {
fileName = cursor.getString(cursor.getColumnIndexOrThrow(projection[0]))
duration = cursor.getLong(cursor.getColumnIndex(projection[1]))
}
cursor.close()
} else
LogUtil.info("videoInfo ", "Cursor Null :")
if (fileName == null) fileName = "NA"
LogUtil.info("videoInfo ", "Path : $fileName")
LogUtil.info("videoInfo ", "Duration : $duration")
}
, выполнила поиск решения по inte rnet, но не получила никакого решения, так что публикация здесь. Мое тестовое устройство - Honor 8x (Android 10 версия)