0

用例 - 目前我正在开发视频上传模块。为了获取视频,我已经触发了 SAF 视频选择器意图,但即使我已经观看了 Google IO 19 Preparing Scoped Storage Video 但我也无法获得任何方式或代码来从 OnActivityResult 中的 uri 获取视频详细信息,但也没有提供任何示例代码如何要做到这一点。(视频细节意味着持续时间大小名称分辨率和名称)

要获取视频详细信息,我们必须使用推荐的 MediaStore api,如果我传递文件 uri,MediaStore 仅适用于内容 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 调用了这个函数-

    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")
}

已通过互联网搜索解决方案,但没有找到任何解决方案,因此在此处发布。我的测试设备是荣耀 8x(Android 10 版本)

4

0 回答 0