在哪里放置媒体资源并启动媒体播放器?

时间:2018-01-19 13:44:51

标签: c# android visual-studio xamarin.android

我想使用标准的Android媒体播放器在Xamarin应用中播放一首歌。

我有两个问题,我无法自己回答:

  1. 这里我把媒体文件(.mp3文件)或如何链接到文件(它也保存在我的SD卡上)我试着将它保存在原始文件夹中,但是似乎不起作用
  2. 如何正确启动播放器?要么我的代码不起作用,要么播放器找不到该文件,因为它没有正确存储。
  3. 然而,这是我用来准备媒体播放器的方法:

    protected MediaPlayer player;
    
    public void StartPlayer() {
        if (player == null) {
            player = new MediaPlayer();
            player.SetDataSource("Ressources.raw.test");
            player.Prepare();
            player.Start();
            text = "Running";
        } else {
            player.Reset();
            player.SetDataSource("Ressources.raw.test");
            player.Prepare();
            player.Start();
        }
    }
    

1 个答案:

答案 0 :(得分:0)

  

我尝试将其保存在原始文件夹中,但这似乎无法正常工作

您不能直接使用字符串“Ressources.raw.test”作为DataSource。如果您需要播放Resource/Raw文件夹中的歌曲,这里有两个解决方案。

解决方案1:

您可以尝试使用MediaPlayer.Create(Context context, int resid)  方法:

  

为给定资源ID创建MediaPlayer的便捷方法。成功时,prepare()已经被调用,不能再被调用。

用法:

MediaPlayer player = MediaPlayer.Create(this, Resource.Raw.test);
player.Start();

解决方案2:

Resource/Raw/test路径转换为Android.Net.Uri

player = new MediaPlayer();
Android.Net.Uri uri = Android.Net.Uri.Parse("android.resource://" + PackageName + "/" + Resource.Raw.test);
player.SetDataSource(this, uri2);
player.Prepare();
player.Start();
  

如何链接到该文件(它也保存在我的SD卡上)

解决方案:

尝试使用SetDataSource (Context context, Uri uri)方法,例如:

player = new MediaPlayer();

//My file path is Path == file:///storage/emulated/0/netease/cloudmusic/Music/love.MP3
var uri = Android.Net.Uri.Parse("file://" + Android.OS.Environment.ExternalStorageDirectory + "/netease/cloudmusic/Music/love.MP3");

player.SetDataSource(this, uri);
player.Prepare();
player.Start();