【问题标题】:How to control currently playing music player in android?如何在android中控制当前播放的音乐播放器?
【发布时间】:2013-12-31 11:32:34
【问题描述】:

我使用此代码发送音乐播放器的播放/暂停等操作。

// play / pause
i.putExtra("command", "togglepause");
context.sendBroadcast(i);

但它仅适用于默认音乐播放器(手机自带的音乐播放器)。有什么方法可以在其他音乐播放器播放时控制它们吗?

【问题讨论】:

    标签: android android-broadcast


    【解决方案1】:

    从 API 级别 19 开始,引入了新的 API dispatchMediaKeyEvent()

    发送媒体按钮的模拟键事件。要模拟按键,您必须先发送一个使用 ACTION_DOWN 动作构建的 KeyEvent,然后再发送一个使用 ACTION_UP 动作的事件。

    AudioManager am = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
        downEvent = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE);
        am.dispatchMediaKeyEvent(downEvent);
    
        upEvent = new KeyEvent(KeyEvent.ACTION_UP,KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE);         
        am.dispatchMediaKeyEvent(upEvent);
    

    此媒体事件将仅发送到当前正在运行的音乐播放器,而不是发送到所有播放器。

    谢谢

    【讨论】:

    • 感谢您的回答。但我正在开发一个控制耳机按钮(包括媒体按钮)的应用程序。对于该事件,我的应用程序是获取事件而不是玩家的应用程序。所以这种方法不适用于我的情况。不过还是谢谢。
    • 这是我找到的唯一可行的解​​决方案!你真的帮了我大忙,谢谢!
    【解决方案2】:

    你试过了吗-

     i.putExtra("command", "pause");
    

    编辑:

    替代解决方案,使用 PackageManager、Intent、ResolveInfo 等以编程方式列出所有音乐应用,然后向列表中的所有应用发送命令。

    【讨论】:

    • 是的!但这不是重点。播放、暂停、停止、下一个、上一个所有这些仅适用于默认音乐播放器。我想以某种方式发送这些命令,这些命令也适用于其他音乐播放器。
    • hmmm.. 比您需要以编程方式列出所有使用 PackageManager、Intent、ResolveInfo 等的音乐应用程序,而不是向列表中的所有应用程序发送命令。你试过这个吗?
    • 这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
    • @Novarg UpVote 收到的评论可以被认为是原始问题的解决方案。
    • @KanakSony 在获得所有已安装音乐播放器的列表之后,我能否找出当前正在播放的音乐。因为我只想将这些命令发送给当前正在播放的那个,而不是全部。
    【解决方案3】:

    广播意图无法正常工作以及支持 Spotify。请参阅我的answer 并提供解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多