Android:将Media-Player App设置为标准音乐播放器,以捕获外部媒体输入(如NEXT SONG等)

时间:2018-10-30 10:45:45

标签: android

我正在开发一个媒体应用程序,可以在手机上播放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语句中敬酒了,只是想看看是否有任何事情要触发。到目前为止,什么都没有。我可能还缺少其他东西吗?

谢谢你这么经常帮我!

1 个答案:

答案 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中完成。

故事的结尾!