首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >控制android或任何其他音乐播放器的默认音乐播放器

控制android或任何其他音乐播放器的默认音乐播放器
EN

Stack Overflow用户
提问于 2013-09-14 17:16:18
回答 4查看 19.9K关注 0票数 21

如何控制android或其他播放器的默认音乐播放器?所谓控制,我指的是暂停、播放、下一步等等。我必须绑定服务吗?我试过使用IMediaPlaybackService,但它不工作。正如我在android市场看到的控制音乐播放器的应用程序一样,肯定有一条出路。有什么想法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-09-14 17:21:09

代码语言:javascript
复制
AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

if(mAudioManager.isMusicActive()) {
    Intent i = new Intent(SERVICECMD);
    i.putExtra(CMDNAME , CMDSTOP );
    YourApplicationClass.this.sendBroadcast(i);
}

您可以通过获取音频管理器,然后向其发送命令。

这些是命令。

代码语言:javascript
复制
 public static final String CMDTOGGLEPAUSE = "togglepause";
 public static final String CMDPAUSE = "pause";
 public static final String CMDPREVIOUS = "previous";
 public static final String CMDNEXT = "next";
 public static final String SERVICECMD = "com.android.music.musicservicecommand";
 public static final String CMDNAME = "command";
 public static final String CMDSTOP = "stop";
票数 23
EN

Stack Overflow用户

发布于 2013-09-20 13:59:06

发送广播接收器的Intent的问题是,用户必须至少打开音乐播放器一次,而且,它不适用于许多第三方音乐播放器。

下面给出的代码适用于所有音乐播放器。

代码语言:javascript
复制
long eventtime = SystemClock.uptimeMillis();

Intent downIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
KeyEvent downEvent = new KeyEvent(eventtime, eventtime, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE, 0);
downIntent.putExtra(Intent.EXTRA_KEY_EVENT, downEvent);
sendOrderedBroadcast(downIntent, null);

Intent upIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
KeyEvent upEvent = new KeyEvent(eventtime, eventtime, KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE, 0);
upIntent.putExtra(Intent.EXTRA_KEY_EVENT, upEvent);
sendOrderedBroadcast(upIntent, null);

/*NEXT*/
Intent downIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
KeyEvent downEvent = new KeyEvent(eventtime, eventtime, KeyEvent.ACTION_DOWN,   KeyEvent.KEYCODE_MEDIA_NEXT, 0);
downIntent.putExtra(Intent.EXTRA_KEY_EVENT, downEvent);
sendOrderedBroadcast(downIntent, null);

/*PREVIOUS*/
Intent downIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
KeyEvent downEvent = new KeyEvent(eventtime, eventtime, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PREVIOUS, 0);
downIntent.putExtra(Intent.EXTRA_KEY_EVENT, downEvent);
sendOrderedBroadcast(downIntent, null);

我已经在索尼、Htc和三星的设备上测试了这段代码。

此代码模拟免提(耳机)中的播放/暂停按钮操作。

票数 11
EN

Stack Overflow用户

发布于 2016-11-09 01:45:34

如果您想控制音乐播放器(当前正在播放的播放器),有一种方法可以将KeyEvents发送到它:

代码语言:javascript
复制
if (mAudioManager == null) mAudioManager = (AudioManager)getSystemService(AUDIO_SERVICE);

KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PLAY);
mAudioManager.dispatchMediaKeyEvent(event);

这是一种更安全的方式,因为通常广播keyEvent可能会导致同时播放多个玩家。

注意:它需要minSdk 19或更高版本。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18800198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档