Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在哪里放置媒体资源并启动媒体播放器?_C#_Android_Visual Studio_Xamarin.android - Fatal编程技术网

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

C# 在哪里放置媒体资源并启动媒体播放器?,c#,android,visual-studio,xamarin.android,C#,Android,Visual Studio,Xamarin.android,我想用标准的android媒体播放器在Xamarin应用程序中播放一首歌 我有两个问题我自己都无法回答: 我应该在这里放置媒体文件(.mp3文件)还是如何链接到该文件(它也保存在我的SD卡上)。我尝试将其保存在原始文件夹中,但似乎不起作用 如何正确启动播放器?要么我的代码不起作用,要么播放器找不到文件,因为它没有正确存储 但是,这是我用来准备媒体播放器的方法: protected MediaPlayer player; public void StartPlayer() { if (p

我想用标准的android媒体播放器在Xamarin应用程序中播放一首歌

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

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

    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”作为
    数据源
    。如果您需要播放
    资源/Raw
    文件夹中的歌曲,这里有两种解决方案

    解决方案1: 你可以尝试使用 方法:

    为给定资源id创建MediaPlayer的便捷方法。成功后,prepare()将已被调用,不得再次调用

    用法:

    MediaPlayer player = MediaPlayer.Create(this, Resource.Raw.test);
    player.Start();
    
    解决方案2: 将
    资源/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卡上)

    解决方案: 尝试使用方法,例如:

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

    如我所说,我是新来的this@GodmasterofDoom,如果有任何问题,请随时询问。:)