在我的Android應用程序中,我使用MediaPlayer類播放不同的mp3文件。Android應用程序暫停/恢復其他音樂播放器應用程序的音樂
用戶正在使用默認音樂應用程序播放他/她自己的音樂。
我想:
- 暫停默認的音樂應用程序的音樂。
- 從我的應用程序開始播放音樂。
- 當我的音樂完成播放時,我的應用程序將恢復用戶的默認音樂。
我想從我的應用程序暫停和恢復默認音樂播放器的音樂。
可以做到這一點嗎?
在我的Android應用程序中,我使用MediaPlayer類播放不同的mp3文件。Android應用程序暫停/恢復其他音樂播放器應用程序的音樂
用戶正在使用默認音樂應用程序播放他/她自己的音樂。
我想:
我想從我的應用程序暫停和恢復默認音樂播放器的音樂。
可以做到這一點嗎?
下面的代碼將通過發送廣播暫停默認的MediaPlayer:
AudioManager mAudioManager = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
if (mAudioManager.isMusicActive()) {
Intent i = new Intent("com.android.music.musicservicecommand");
i.putExtra("command", "pause");
YourApplicationClass.this.sendBroadcast(i);
}
我在一個應用程序中播放了一個mp3文件,而在另一個應用程序中,我編寫了這段代碼。但它不起作用。是否需要任何許可?或者這隻適用於一個應用程序內? – MobiDev 2013-09-09 12:53:44
這隻適用於播放音樂。是否有其他方式可以適用於所有音樂應用程序? @Mcingwe – 2017-07-28 10:36:30
// pause
Intent i = new Intent("com.android.music.musicservicecommand");
i.putExtra("command", "pause");
sendBroadcast(i);
// play
Intent i = new Intent("com.android.music.musicservicecommand");
i.putExtra("command", "play");
sendBroadcast(i);
// next
Intent i = new Intent("com.android.music.musicservicecommand");
i.putExtra("command", "next");
sendBroadcast(i);
// previous
Intent i = new Intent("com.android.music.musicservicecommand");
i.putExtra("command", "previous");
sendBroadcast(i);
有關可用命令一些更多的信息:
public static final String SERVICECMD = "com.android.music.musicservicecommand";
public static final String CMDNAME = "command";
public static final String CMDTOGGLEPAUSE = "togglepause";
public static final String CMDSTOP = "stop";
public static final String CMDPAUSE = "pause";
public static final String CMDPLAY = "play";
public static final String CMDPREVIOUS = "previous";
public static final String CMDNEXT = "next";
要控制當前播放的音樂使用此代碼。
AudioManager mAudioManager = (AudioManager) c.getSystemService(Context.AUDIO_SERVICE);
if(mode == Config.MUSIC_NEXT) {
KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_NEXT);
mAudioManager.dispatchMediaKeyEvent(event);
}else if(mode == Config.MUSIC_PLAY){
KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PLAY);
mAudioManager.dispatchMediaKeyEvent(event);
}
else if(mode == Config.MUSIC_PREV){
KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PREVIOUS);
mAudioManager.dispatchMediaKeyEvent(event);
}
INFACT這是正在爲所有的音樂應用程序我使用的唯一代碼。 用
參考http://stackoverflow.com/a/37374679/2254969。這裏發佈的答案現在已經老了。 – 2016-05-22 13:02:20