android - 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>
解决方案
推荐阅读
- javascript - 如何使用 PDFMake 在 ui-grid pdf 导出中添加自定义标题?
- html - 将宽度:100% 高度:100 设置为公共元素时,打印预览性能非常慢
- sql-server - 更改存储过程参数列表
- xamarin.forms - Xamarin Android 蓝牙扫描设备未找到特定设备
- html - 引导背景图像不会滚动
- swift - 如何填充文本颜色并设置自动单元格大小,如 macOS 的缩放聊天
- openmdao - 在 OpenMDAO 中将组件连接到 Auto-IVC 的问题
- postgresql - VS 代码在正确的 sql 中显示不正确的语法错误
- python - PYTHON : ': [Errno 2] 没有这样的文件或目录py
- android - 从应用程序内的 ProcessBuilder 执行程序