【发布时间】:2020-07-17 07:53:34
【问题描述】:
我已使用以下代码在手机内部保存了我的视频:
public static void DownloadVideo(Context context, String URL) {
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(URL));
Date date = new Date();
SimpleDateFormat videoName = new SimpleDateFormat("yyyymmdd_HHmmss");
String strDate = videoName.format(date);
request.setDescription("Setting up the AR");
request.setTitle("AR setup ...");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
}
request.setDestinationInExternalFilesDir(context, "/NewVisionARVideos/", "" + strDate + System.currentTimeMillis() + ".mp4");
System.out.println("count files --- " + context.getExternalFilesDir(null).listFiles());
for(int i = 0; i < context.getExternalFilesDir(null).listFiles().length; i++){
System.out.println("** each file -- " + context.getExternalFilesDir(null).listFiles()[i]);
}
DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
manager.enqueue(request);
}
这是我在清单文件中添加的内容:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
这是加载视频的路径:
String path = "/storage/emulated/0/Android/data/com.shliama.augmentedvideotutorial/files/NewVisionARVideos/test.mp4";
以下是我尝试在媒体播放器中播放视频时出现的错误。路径是正确的,并且我已经在清单和手机中启用了权限。
以下是我得到的错误:
D/ArVideoFragment: playbackVideo = /storage/emulated/0/Android/data/com.shliama.augmentedvideotutorial/files/NewVisionARVideos/test.mp4
E/ArVideoFragment: Could not play video [/storage/emulated/0/Android/data/com.shliama.augmentedvideotutorial/files/NewVisionARVideos/test.mp4]
java.io.FileNotFoundException: /storage/emulated/0/Android/data/com.shliama.augmentedvideotutorial/files/NewVisionARVideos/test.mp4
在androidMediaPlayer有没有其他播放视频的方法?
编辑:
其实我是在关注blog这个帖子之后才发现指向assets文件夹的。
这是指向资产文件夹的方法 https://gist.github.com/huxaiphaer/268b94a0e7959822fa679a7523701187
【问题讨论】:
-
您是否自行检查过该文件是否存在于该路径中?你在安卓Q吗? getExternalFilesDir() 不需要任何权限。
-
是的,我使用的是 Android 10 (Q),@blackapps,甚至视频也可以在同一路径中使用。现在可能做错了什么?
-
在 Android Q 上,该路径不仅是特定于应用程序的,而且对于其他应用程序是不可见的。因此,当 MediaPlayer 是不同的应用程序时...
-
MediaPlayer,我的意思是 Android 的。我正在研究一个 AR 的东西,如果我扫描一个播放视频的图像,当它们存储在项目中时视频正在工作,所以我求助于将它们转移到内部存储上,所以 MediaPlayer 不会播放它们。带有 FileNotFoundException。然而它在路径中是可用的。那么从内部存储访问视频的最佳方式是什么? @blackapps
-
我不知道。它可以从uri播放吗?然后使用 FileProvider 提供您的文件。
标签: java android kotlin android-mediaplayer internal-storage