问题描述
我是新来的。这不是一个问题,而是一个解决方案,因为我没有找到一个论坛来回答我所关心的问题。
我在下载 MP3 文件时试图播放它(流式传输)。为此,我使用了 MediaPlayer。
我读到我应该实现 IOnErrorListener 和 IOnPreparedListener。
我找到的关于实施的每个解决方案都对我不起作用。
那是因为没有人指定您的类需要从 AppCompatActivity 继承。 如果您的类确实从 AppCompatActivity 继承,则实现应该只有一个函数。如果没有,它就会变成香蕉。
检查下图:
这是我的工作代码示例:
using Android.App;
using Android.OS;
using Android.Runtime;
using AndroidX.AppCompat.App;
using Android.Media;
using Android.Widget;
using System;
namespace Test_MediaPlayerMP3Stream
{
[Activity(Label = "@string/app_name",Theme = "@style/AppTheme",MainLauncher = true)]
public class MainActivity : AppCompatActivity,MediaPlayer.IOnPreparedListener,MediaPlayer.IOnErrorListener
{
MediaPlayer mediaPlayer;
Button btnPlay;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this,savedInstanceState);
SetContentView(Resource.Layout.activity_main);
btnPlay = FindViewById<Button>(Resource.Id.btnPlay);
btnPlay.Click += btnPlay_Click;
}
private void btnPlay_Click(object sender,EventArgs e)
{
var ab = new AudioAttributes.Builder();
ab.SetContentType(AudioContentType.Speech);
ab.SetUsage(AudioUsageKind.Media);
mediaPlayer = new MediaPlayer();
mediaPlayer.SetonPreparedListener(this);
mediaPlayer.SetAudioAttributes(ab.Build());
mediaPlayer.SetDataSource("YourURL");
mediaPlayer.PrepareAsync();
}
public void OnPrepared(MediaPlayer mp)
{
mp.Start();
}
public bool OnError(MediaPlayer mp,[GeneratedEnum] MediaError what,int extra)
{
mp.Reset();
return false;
}
public override void OnRequestPermissionsResult(int requestCode,string[] permissions,[GeneratedEnum] Android.Content.PM.Permission[] grantResults)
{
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode,permissions,grantResults);
base.OnRequestPermissionsResult(requestCode,grantResults);
}
}
}
希望我能救人一些时间。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)