如何在安卓系统中暂停不同音乐播放器?

5

我使用这段代码来暂停音乐播放器,它可以暂停默认的音乐播放器,但如果安装了其他音乐播放器,例如Poweramp、RealPlayer等,则无法正常工作。

以下是我用来暂停音乐的代码:

AudioManager mAudioManager = (AudioManager)getSystemService(AUDIO_SERVICE);    

if (mAudioManager.isMusicActive()) 
{
  Intent i = new Intent("com.android.music.musicservicecommand");

  i.putExtra("command", "pause");
  ListenAndSleep.this.sendBroadcast(i);
}
2个回答

9

使用媒体按钮会不会更容易?大多数播放器都应该支持这些按钮。

private static void sendMediaButton(Context context, int keyCode) {
    KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_DOWN, keyCode);
    Intent intent = new Intent(Intent.ACTION_MEDIA_BUTTON);
    intent.putExtra(Intent.EXTRA_KEY_EVENT, keyEvent);
    context.sendOrderedBroadcast(intent, null);

    keyEvent = new KeyEvent(KeyEvent.ACTION_UP, keyCode);
    intent = new Intent(Intent.ACTION_MEDIA_BUTTON);
    intent.putExtra(Intent.EXTRA_KEY_EVENT, keyEvent);
    context.sendOrderedBroadcast(intent, null);
}

那么您可以使用:

sendMediaButton(getApplicationContext(), KeyEvent.KEYCODE_MEDIA_PAUSE);

您还可以发送停止键事件。以下是相关键的链接,http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_MEDIA_PAUSE

注:该链接提供了有关Android中可用键的详细信息。


谢谢伙计,它与几乎所有下载量最大的音乐播放器都很兼容。 - Kamran
这个答案对我不起作用。我能知道为什么它不起作用吗?我已经在Android 8中检查过了。这个链接的答案对我有用 - Ranjit

0
public static void pauseMusic() {

    KeyEvent ke = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PAUSE);
    Intent intent = new Intent(Intent.ACTION_MEDIA_BUTTON);
    intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);

    // construct a PendingIntent for the media button and unregister it
    Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
    PendingIntent pi = PendingIntent.getBroadcast(AppContext.getContext(),
            0/*requestCode, ignored*/, mediaButtonIntent, 0/*flags*/);
    intent.putExtra(Intent.EXTRA_KEY_EVENT, ke);
    sendKeyEvent(pi, AppContext.getContext(), intent);

    ke = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_PAUSE);
    intent.putExtra(Intent.EXTRA_KEY_EVENT, ke);
    sendKeyEvent(pi, AppContext.getContext(), intent);

    //        android.intent.action.MEDIA_BUTTON

}

private static void sendKeyEvent(PendingIntent pi, Context context, Intent intent) {
    try {
        pi.send(context, 0, intent);
    } catch (PendingIntent.CanceledException e) {
        Log.e(TAG, "Error sending media key down event:", e);
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接