我正在开发一个媒体应用程序,可以在手机上播放mp3。就这么简单。但是,我的耳机上有一个“开始/停止”按钮。当我点击这个按钮时,我的手机会自动打开三星音乐,并播放一首当前处于等待状态的歌曲,而不是停止或在我的活跃打开的应用程序上播放这些歌曲。这是我的广播接收器中的按钮:
[BroadcastReceiver]
[IntentFilter(new[] { Intent.ActionMediaButton })]
public class MyMediaButtonBroadcastReceiver : BroadcastReceiver
{
public string ComponentName { get { return Class.Name; } }
Activity_Player xy = new Activity_Player();
public override void OnReceive(Context context, Intent intent)
{
if (intent.Action != Intent.ActionMediaButton)
return;
var keyEvent = (KeyEvent)intent.GetParcelableExtra(Intent.ExtraKeyEvent);
switch (keyEvent.KeyCode)
{
case Keycode.MediaPlay:
Toast.MakeText(Activity_Player.ctx, "XY", ToastLength.Short).Show();
break;
case Keycode.MediaPlayPause:
Toast.MakeText(Activity_Player.ctx, "XY", ToastLength.Short).Show();
break;
case Keycode.MediaNext:
xy.ChooseRandomNewSongAndPlay(false);
break;
case Keycode.MediaPrevious:
Toast.MakeText(Activity_Player.ctx, "XY", ToastLength.Short).Show();
break;
}
}
}所以我的问题是:
1.)我是否需要像这样在我的主活动中初始化这个类:
receiver = new MyMediaButtonBroadcastReceiver();2.)我需要在我的清单中设置什么吗?因为在那里,接收者没有注册。
3.)我是否需要将自己的媒体播放器应用程序设置为某种"standart“应用程序?(也许在编程上,也许在android操作系统中的某个地方?),这样暂停和播放按钮就会映射到我的应用程序,而不是standart媒体播放器?
4.)您看,我在switch语句中使用了toast语句,只是为了看看是否会触发任何东西。到目前为止,没有什么是这样的。我是不是还漏掉了什么?
谢谢你这么经常帮我!
发布于 2018-10-30 19:14:57
所以,为了回答我的所有问题:
1) 2) 3) 4)
private void RegisterBroadCastReceiver()
{
var am = (AudioManager)this.GetSystemService(AudioService);
var componentName = new ComponentName(PackageName, new MyMediaButtonBroadcastReceiver().ComponentName);
am.RegisterMediaButtonEventReceiver(componentName);
}..。在OnCreate中执行。
故事结束了!
https://stackoverflow.com/questions/53062594
复制相似问题