2011-02-26 153 views
7

在我的Android應用程序中,我使用MediaPlayer類播放不同的mp3文件。Android應用程序暫停/恢復其他音樂播放器應用程序的音樂

用戶正在使用默認音樂應用程序播放他/她自己的音樂。

我想:

  1. 暫停默認的音樂應用程序的音樂。
  2. 從我的應用程序開始播放音樂。
  3. 當我的音樂完成播放時,我的應用程序將恢復用戶的默認音樂。

我想從我的應用程序暫停和恢復默認音樂播放器的音樂。

可以做到這一點嗎?

+0

參考http://stackoverflow.com/a/37374679/2254969。這裏發佈的答案現在已經老了。 – 2016-05-22 13:02:20

回答

6

下面的代碼將通過發送廣播暫停默認的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); 
} 
+0

我在一個應用程序中播放了一個mp3文件,而在另一個應用程序中,我編寫了這段代碼。但它不起作用。是否需要任何許可?或者這隻適用於一個應用程序內? – MobiDev 2013-09-09 12:53:44

+0

這隻適用於播放音樂。是否有其他方式可以適用於所有音樂應用程序? @Mcingwe – 2017-07-28 10:36:30

2
// 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"; 
1

要控制當前播放的音樂使用此代碼。

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這是正在爲所有的音樂應用程序我使用的唯一代碼。 用

  • 谷歌播放音樂。
  • 蘋果音樂
  • 萬普拉斯音樂應用程序
相關問題