我正在开发一个媒体应用程序,可以在手机上播放mp3。就那么简单。 但是,我有一个带有“开始/停止”按钮的耳机。当我单击此按钮时,手机会自动打开SAMSUNG MUSIC并播放当前暂停的歌曲,而不会在正在打开的应用程序中停止或播放这些歌曲。 这是我的按钮的广播接收器:
[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。)我是否仍需要将自己的媒体播放器应用设置为某种“标准”应用? (也许以编程方式,也许是在android操作系统内的某个位置?),以便将“暂停”和“播放”按钮映射到“我的应用”而不是标准的媒体播放器?
4。)您看到,我在switch语句中敬酒了,只是想看看是否有任何事情要触发。到目前为止,什么都没有。我可能还缺少其他东西吗?
谢谢你这么经常帮我!
答案 0 :(得分:0)
所以,回答我所有的问题:
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中完成。
故事的结尾!