我需要在VideoView
上播放sdcard中的视频,并且总是收到“无法播放此视频消息”的信息。我正在物理设备上进行测试。文件位于外部存储设备上,可以通过内置的电话应用程序正常播放。
我之前已经阅读了一些主题,并尝试更改文件格式和分辨率无效。
第二个猜测是文件的路径,因此尝试使用Android.OS.Environment.ExternalStorageDirectory.AbsolutePath
在许多变体中对其进行多次更改,创建File变量并从File.Path
获取路径。
每次我放置路径的位置TextView
总是正确的。
我不知道为什么它不起作用。
代码:
Java.IO.File file = new Java.IO.File (Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/myimage/", "video.mp4");
tView.Text = file.Path;
MediaController mediaController = new MediaController(context: this);
vView.SetMediaController(mediaController);
mediaController.SetAnchorView(vView);
vView.SetVideoPath(file.Path);
vView.Start();
File.Path
值:
"/storage/emulated/0/myimage/video.mp4"
编辑:我在资源放置文件中创建了“原始”文件夹,然后使用以下路径:
vView.SetVideoPath("android.resource://" + PackageName + "/" + Resource.Raw.video);
它可以工作,但是如果有人知道如何获取sdCard上文件夹的正确路径?
答案 0 :(得分:0)
最后我明白了。问题是我的手机安装卡位于/ storage / xxxx-xxxx /路径,我的研究发现该目录的名称来自卷序列号(Android自动安装卡),ExternalStorageDirectory指向每个Android设备中的其他位置。有时是内部存储,有时是USB大容量存储。
无论如何,没有找到任何方法返回以下方法创建的路径:
string GetCardMountPoint()
{
string[] listOfDirs = Directory.GetDirectories("/storage/");
string path = null;
foreach ( string dir in listOfDirs)
{
if(dir.Contains('-'))
{
path = dir;
}
}
return path;
这不是复杂的解决方案,但它现在可以使用。