首页 > 解决方案 > MediaStore.ACTION_VIDEO_CAPTURE 未将完整字节写入文件

问题描述

我正在使用MediaStore.ACTION_VIDEO_CAPTURE Intent 通过MediaStore.EXTRA_OUTPUT将视频录制到自定义 Uri 中。在这里,我在诺基亚设备中遇到了有趣的问题。在其他设备中它工作正常。

当我录制视频(例如 10 秒)并通过进入自定义录制文件路径播放该文件时,android 默认播放器播放视频 9 秒,然后说无法播放文件。如果我没有通过MediaStore.EXTRA_OUTPUT则一切正常,设备默认播放器播放完整视频。但我需要将视频存储在自定义文件夹中。

在我看来,相机应用程序无法在自定义文件夹中写入完整字节。我该如何解决这个问题。记住我只在诺基亚 G10 设备中遇到这个问题

这是我的代码

Intent(MediaStore.ACTION_VIDEO_CAPTURE).also { takeVideoIntent ->
        takeVideoIntent.resolveActivity(activity!!.packageManager)?.also {
            takeVideoIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION)
            takeVideoIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
            takeVideoIntent.putExtra(MediaStore.EXTRA_OUTPUT, getFileUri(activity!!, filePath))
            takeVideoIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0)
            takeVideoIntent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 60)
            startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE)
        }
    }


fun getFileUri(activity: Activity, filePath: File): Uri {

    if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.N_MR1)
        return FileProvider.getUriForFile(
            activity,
            BuildConfig.APPLICATION_ID + ".provider",
            filePath
        )
    else
        return Uri.fromFile(filePath)
}


<?xml version="1.0" encoding="utf-8"?>
<paths>
    <external-path name="external" path="." />
    <files-path name="appfolderName" path="." />
    <external-path name="external_files" path="." />
    <external-files-path name="appfolderName" path="." />
    <external-files-path name="storage" path="." />
</paths>

标签: androidandroid-intentcameravideo-capturemediastore

解决方案


推荐阅读