Android Scoped Stoage - получить подробности видео в onActivityResult - PullRequest
0 голосов
/ 20 апреля 2020

Вариант использования - В настоящее время я работаю над модулем загрузки видео. Чтобы получить видео, я запустил средство выбора видео 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 версия)

...