2014-01-31 10 views
0

Когда я отправить проигрывателя по умолчаниюAndroid медиаплеер по умолчанию «старт» после «остановки» ошибки (com.android.music.musicservicecommand)

Intent i = new Intent("com.android.music.musicservicecommand"); 
i.putExtra("command", "play"); 
ACTIVITY.sendBroadcast(i); 

он начинает играть. Когда я отправлю

Intent i = new Intent("com.android.music.musicservicecommand"); 
     i.putExtra("command", "stop"); 
     ACTIVITY.sendBroadcast(i); 

останавливается. но когда я пытаюсь играть снова, тогда он не играет. Он просто играет секунду, а затем снова останавливается. Я видел в журнале, я получаю два намерения.

intent.getBooleanExtra("playing", false); 

первый раз является «истинным», а затем «ложным». Этого не происходит, когда я пытаюсь «togglepause». Я также заметил, что когда я отправляю игру, запускается музыкальное приложение android и музыка. Кто-нибудь поможет?

------------------- РЕДАКТИРОВАТЬ ----------------- На самом деле я выяснил, что google play music был причиной этого. По-видимому, оба приложения получают намерение, и когда я отправляю игру, музыкальный плеер отвечает isPlaying = true, а музыка для игры google isPlaying = false. Вы знаете какой-либо способ исправить это? отправлять или получать только от игрока по умолчанию ??

ответ

4

Немного поздно, но публикую для других, которые ищут это. Вы можете управлять медиа-плеер по умолчанию, посылая упорядоченную передачу в систему, которая была нажата кнопка медиа и released.The следующий код будет играть или приостановки воспроизведения музыки в зависимости от текущего состояния:

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); 

таким же образом, вы можете предупредите систему о том, что нажата следующая или предыдущая кнопка трека.

+0

Я просто пробовал это, но ключи не работают все время. Иногда они работают иногда, они этого не делают. Я помещаю сообщение журнала, чтобы появляться каждый раз, когда я нажимаю кнопку. В журнале отображаются сообщения «play» и «pause», но музыка не останавливается. Может быть, если я его несколько раз нажму, он остановится. Вы знаете, почему это происходит? –

+1

Он отлично работает для меня, и я пробовал его на многих телефонах. на всякий случай .... попробуйте добавить задержку для события кнопки. KeyEvent upEvent = новый KeyEvent (eventtime + 100, eventtime + 100, KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE, 0); дайте мне знать, как это происходит. – Anonymous

+0

Хорошо спасибо! Это была моя ошибка, я только послал вниз или вверх. Теперь это работает. Вы знаете, как отправить следующий/предыдущий тоже? Нужно ли мне отправлять их в парах? –

0

Вместо того, чтобы выдавать команду «stop», вы пытались «приостановить»?

Intent i = new Intent("com.android.music.musicservicecommand"); 
    i.putExtra("command", "pause"); 

Кажется возможным вызвать паузу/воспроизведение столько раз, сколько вам захочется, и оно перезапускается просто отлично.

+0

Как я могу играть в определенный файл с проигрывателем по умолчанию –

Смежные вопросы