我需要在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"
编辑:我在资源putted文件中创建了“原始”文件夹,然后使用以下路径:
vView.SetVideoPath("android.resource://" + PackageName + "/" + Resource.Raw.video);
它有效,但如果有人知道如何在sdCard上获得正确的文件夹路径?
最后我明白了。问题是我的手机卡在路径/ storage / xxxx-xxxx /我的研究显示,dir的名字来自卷序列号(其中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;
它不是很复杂的解决方案,但现在可以使用。