Android MediaStore获取视频

data class VideoInfo(
    val name: String,
    val path: String,
    val size: Long,
    val duration: Long
)

fun getVideos(context: Context): List<VideoInfo> {
    val videos = mutableListOf<VideoInfo>()

    // 定义需要查询的列
    val projection = arrayOf(
        MediaStore.Video.Media._ID,
        MediaStore.Video.Media.DISPLAY_NAME,
        MediaStore.Video.Media.DATA,
        MediaStore.Video.Media.SIZE,
        MediaStore.Video.Media.DURATION,
        MediaStore.Video.Media.DATE_MODIFIED
    )

    // 定义排序方式
    val sortOrder = "${MediaStore.Video.Media.DATE_MODIFIED} DESC"

    // 执行查询
    context.contentResolver.query(
        MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
        projection,
        null,
        null,
        sortOrder
    )?.use { cursor ->
        val idColumn = cursor.getColumnIndexOrThrow(MediaStore.Video.Media._ID)
        val nameColumn = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME)
        val dataColumn = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA)
        val sizeColumn = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE)
        val durationColumn = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATION)

        while (cursor.moveToNext()) {
            val id = cursor.getLong(idColumn)
            val name = cursor.getString(nameColumn)
            val path = cursor.getString(dataColumn)
            val size = cursor.getLong(sizeColumn)
            val duration = cursor.getLong(durationColumn)

            val videoInfo = VideoInfo(name, path, size, duration)
            videos.add(videoInfo)
        }
    }

    return videos
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容