如何解决为 MediaPlayer 实现 IOnErrorListener/IOnPreparedListener - Xamarin.Android (C#) API 29+
我是新来的。这不是一个问题,而是一个解决方案,因为我没有找到一个论坛来回答我所关心的问题。
我在下载 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 举报,一经查实,本站将立刻删除。