繁体   English   中英

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

[英]Where to put media resource and start media player?

我想使用标准的 android 媒体播放器在 Xamarin 应用程序中播放歌曲。

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

  1. 我在此处放置媒体文件(.mp3 文件)还是如何链接到该文件(它也保存在我的 SD 卡上)我尝试将其保存在原始文件夹中,但这似乎不起作用
  2. 如何正确启动播放器? 要么我的代码不起作用,要么播放器找不到文件,因为它没有正确存储。

但是,这是我用来准备媒体播放器的方法:

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();
    }
}

我尝试将其保存在原始文件夹中,但这似乎不起作用

您不能直接使用字符串 "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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM