假设我在我的活动中有一个方法,如下所示:
private void dispatchTakeVideoIntent() {
Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
if (takeVideoIntent.resolveActivity(getActivity().getPackageManager()) != null) {
startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE);
}
}然后,如果一切顺利,我将通过它的URI访问拍摄的视频:
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent intent) {
if (requestCode == REQUEST_VIDEO_CAPTURE && resultCode == Activity.RESULT_OK) {
Uri videoUri = intent.getData();
// process video
}
}这段视频的实际位置在哪里?它是暂时存储在内存中,还是保存到永久存储中?
如果我想让我的应用程序在以后的某个时候可靠地访问视频,那么最好的方法是什么呢?我必须将视频复制到应用程序的存储文件夹中吗?
发布于 2022-04-26 23:47:38
,这段视频的实际位置在哪里?
它将居住在用户的相机应用程序选择放置它的地方。有数百种不同的相机应用程序,既有制造商预装的,也有用户从Play Store或其他地方安装的。
是暂时存储在内存中,还是保存到永久存储中?
这取决于相机应用程序。
如果我想让我的应用程序在以后的某个时候可靠地访问视频,那么最好的方法是什么呢?
您可以尝试将content Uri值via EXTRA_OUTPUT作为Intent上的额外值传递。您可以使用FileProvider获取Uri,指向您控制的位置上的某个文件(例如,getFilesDir() on Context)。大多数相机应用程序都应该遵守这一额外规定,但并不是所有的应用程序都会这样。
或者,你可以像你建议的那样复制视频。
或者,你可以使用相机库(例如,FotoApparat,CameraKit-Android)并在你自己的应用程序中录制视频。
https://stackoverflow.com/questions/72021435
复制相似问题