获取安卓设备视频位置

使用该方法

private fun createVideoOutputPath(context: Context): String {
        val contentResolver = context.contentResolver

        /** Represent the videos collection */
        val videosCollection: Uri = sdkAndUp(29) { // if sdk is 29 or higher
            MediaStore.Video.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY)
        } ?: MediaStore.Video.Media.EXTERNAL_CONTENT_URI

        /** Represents the data values of the video to be saved */
        val contentValues = ContentValues()

        // Adding the file title to the content values
        contentValues.put(
            MediaStore.Video.Media.TITLE,
            "VID_" + System.currentTimeMillis() + ".mp4"
        )
        // Adding the file display name to the content values
        contentValues.put(
            MediaStore.Video.Media.DISPLAY_NAME,
            "VID_" + System.currentTimeMillis() + ".mp4"
        )
        /** Represents the uri of the inserted video */
        val videoUri = contentResolver.insert(videosCollection, contentValues)!!
        // Opening a stream on to the content associated with the video content uri
        contentResolver.openOutputStream(videoUri)
        /** Represents the file path of the video uri */
        val outputPath = getUriRealPath(context, videoUri)!!
        // Deleting the video uri to create it later with the actual video
        contentResolver.delete(videoUri, null, null)
        return outputPath
    }

    private fun getUriRealPath(contentResolver: ContentResolver, uri: Uri): String {
        var filePath = ""
        val cursor = contentResolver.query(uri, null, null, null, null)
        if (cursor != null) {
            if (cursor.moveToFirst()) {
                var columnName = MediaStore.Images.Media.DATA
                when (uri) {
                    MediaStore.Images.Media.EXTERNAL_CONTENT_URI -> {
                        columnName = MediaStore.Images.Media.DATA
                    }
                    MediaStore.Video.Media.EXTERNAL_CONTENT_URI -> {
                        columnName = MediaStore.Video.Media.DATA
                    }
                }
                val filePathColumnIndex = cursor.getColumnIndex(columnName)
                filePath = cursor.getString(filePathColumnIndex)
            }
            cursor.close()
        }
        return filePath
    }

这段代码在MediaStore中插入了一个视频URI,检索其文件路径,并从MediaStore中删除它。这个路径将指向Movies目录,该目录是公开的,不需要权限。现在你可以使用这个文件路径来创建一个File对象

文章作者: AkkunYo
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 AkkunYoの博客
默认分类 其他
喜欢就支持一下吧