用例-目前,我正在开发视频上传模块。要获取视频,我已经激发了SAF视频选择器的意图,但是即使我已经看过Google IO 19准备范围存储视频,也无法通过任何方法或代码从uri中的uri获取视频详细信息,但也没有提供任何示例代码要做到这一点。 (视频详细信息表示持续时间大小,名称解析度和名称)
要获取视频详细信息,我们必须使用MediaStore api(推荐一个),如果我传递文件uri,则MediaStore仅适用于内容URI,那么光标将始终为null 并且仅当光标不为null时才获得内容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中的
通过传递从intent中获得的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")
}
已经通过Internet搜索解决方案,但没有任何解决方案,因此请在此处发布。我的测试设备是Honor 8x(Android 10版本)