Tytuł sprawia, że brzmienie jest znacznie prostsze niż jest to ... Próbuję nadać intencję, która zatrzyma większość odtwarzaczy muzycznych.Niezawodnie wstrzymywanie odtwarzania multimediów System w Androidzie
wiem, że mogę używać do tworzenia keyEvent że będzie nadawać KEYCODE_MEDIA_PLAY_PAUSE z tym:
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);
ctx.sendOrderedBroadcast(downIntent, null);
I to działa. Spowoduje to zatrzymanie zapasowego odtwarzacza multimediów w taki sposób, w jaki ja go chcę, a także większość innych odtwarzaczy muzycznych obsługujących przyciski odtwarzania/wstrzymywania słuchawek. Ale z jakiegoś powodu działa tylko raz z zapasowym odtwarzaczem muzyki. Mogę nacisnąć przycisk, aby zadzwonić, a to zatrzyma muzykę. Jeśli ponownie zacznę grać i ponownie nacisnąć przycisk pauzy, nie działa. Po ponownym uruchomieniu urządzenia zadziała ono jeszcze raz. Później jednak, z Pandorą, działa ona konsekwentnie tak, jak powinna.
Pomyślałem, że będę w stanie obejść to i po prostu zatrzymać się bez użycia KeyEvent. Próbowałem tego z AudioManager i innym intencją:
AudioManager mAudioManager = (AudioManager) ctx.getSystemService(Context.AUDIO_SERVICE);
if (mAudioManager.isMusicActive()) {
Intent mediaIntent = new Intent("com.android.music.musicservicecommand");
mediaIntent.putExtra("command", "pause");
ctx.sendBroadcast(mediaIntent);
}
To również działa i działa konsekwentnie. Ale jest to z natury delikatne, ponieważ wysyłając intencję bezpośrednio do odtwarzacza muzyki Android, jest to jedyny odtwarzacz, z którym będzie pracował. Brak kontroli nad Pandora, Last.FM itp. I potrzebuję go do pracy z większością odtwarzaczy muzycznych.
Po prostu nie jestem pewien, gdzie pójść dalej. Nie jestem wybredny, jeśli chodzi o to, jakie rozwiązanie otrzymuję, dopóki działa. Jeśli możesz mi pomóc w pracy KeyEvent, fantastycznie, jeśli masz zupełnie inne rozwiązanie, fantastyczne. Po prostu chcę, żeby to działało! Dzięki!
Cokolwiek tu zrobisz, będzie "z natury delikatne". Co więcej, będzie mnóstwo odtwarzaczy multimedialnych, które całkowicie zignorują to wydarzenie. I jest całkowicie możliwe, że kiedyś system operacyjny zacznie blokować fałszywe zdarzenia "ACTION_MEDIA_BUTTON", tak jak blokują inne podobne sfałszowane zdarzenia. Jeśli piszesz własny odtwarzacz multimedialny, użyj funkcji fokusowania dźwięku w 'AudioManager', aby uzyskać fokus dźwiękowy. – CommonsWare
Właściwie nie piszę własnego odtwarzacza multimedialnego. Wiem, że w Sklepie Play jest mnóstwo w pełni funkcjonalnych aplikacji, które zatrzymają muzykę po określonym czasie, ale nie jestem szczególnie zadowolony z żadnego z nich. Po prostu próbuję napisać własną wersję i muszę wstrzymać większość aplikacji muzycznych. – Geniusdog254