我正在为家庭作业和使用Xamarin IDE构建媒体播放器。 Xamarin中的MainActivity文件有外部.cs。这意味着是C#文件,我遇到了一些麻烦。 我需要从SD卡获取数据。但是当我实现它时,我有异常“SetDataSource失败”。 帮助我。
namespace PlayMusic
{
[Activity (Label = "PlayMusic", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
// Set our view from the "main" layout resource
SetContentView (Resource.Layout.Main);
// Get our button from the layout resource,
// and attach an event to it
Button play = FindViewById<Button> (Resource.Id.play_btn);
//MediaPlayer mp = MediaPlayer.Create (this, Resource.Raw.anniver);
MediaPlayer mp = new MediaPlayer ();
var directory = Android.OS.Environment.ExternalStorageDirectory;
var fullFileName = Path.Combine(directory.ToString(), "anniver.mp3");
mp.SetDataSource (fullFileName);
play.Click += delegate {
try{
mp.Start();
}
catch(Exception e)
{
e.StackTrace.ToString();
}
};
}
}
}
结果fullFileName =“/ storage / sdcard0 / anniver.mp3” 但是当IED转到SetDataSource(..)语句时,会出现异常IOException,并且失败的SetDataSource。 我查了一下anniver.mp3。那很好。
答案 0 :(得分:1)
由于您使用的是Xamarin
,因此您可以使用c#
的{{1}}来访问您的文件:
Path.Combine
答案 1 :(得分:0)
尝试将Android path separator添加到您的mp3字符串路径:
string stringPath = Android.OS.Environment.ExternalStorageDirectory.Path;
mp.SetDataSource (stringPath + Java.IO.File.Separator + "1.mp3");