通过Xamarin IDE从{SD}读取.mp3文件

时间:2015-10-16 07:28:34

标签: c# android xamarin mp3 media

我正在为家庭作业和使用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。那很好。

2 个答案:

答案 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");