Pracuję więc nad prostym odtwarzaczem muzyki. Odtwarzacz muzyki, jak nazywał stany, może odtwarzać utwór, wstrzymać odtwarzanie, przejść do następnego utworu, wrócić do poprzedniego utworu i całkowicie zatrzymać odtwarzanie. Podczas odtwarzania utworu zostanie wyświetlone powiadomienie z nazwą wykonawcy i nazwą utworu; to powiadomienie ma również trzy przyciski (Akcje): Zatrzymaj, Zatrzymaj następny.Jak korzystać z działań z powiadomienia bez uruchamiania działalności
Problem polega na upewnieniu się, że po kliknięciu dowolnej akcji zostanie uruchomione sterowanie odtwarzaniem powiązane z akcją i nie mam absolutnie pojęcia, jak to zrobić. Przeszukałem Powiadomienie Androida: http://developer.android.com/guide/topics/ui/notifiers/notifications.html, ale nie wyjaśnia ono, ani nie poświęca zbyt wielu informacji o akcjach powiadomień.
Oto prosty przykład działania (które powinny być związane z „Dalej” Kliknij przycisk na zgłoszenia: Uwaga: Cały kod opisany poniżej jest napisane pod następującym pakiecie: com.deadpixels.light .player a aktywność nazywa się: PlayerActivity
public void nextSong() {
if (position == songs.size() -1) {
Toast.makeText(this, "No more songs on queue", Toast.LENGTH_SHORT).show();
if(mPlayer.isPlaying()) {
return;
}
else {
buttonPlay.setImageResource(R.drawable.button_play);
}
return;
}
else {
position++;
playSong(songs.get(position));
}
}
Oto co próbowałem zrobić:
Intent nextIntent = new Intent(KEY_NEXT);
PendingIntent nextPendingIntent = createPendingResult(0, nextIntent, 0);
Jeżeli akcja dla NextIntent jest:
public static final String KEY_NEXT = "com.deadpixels.light.player.PlayerActivity.nextSong";
a następnie dodać, że do zgłoszenia poprzez Addaction():
mBuilder.addAction(R.drawable.not_action_next, "Next", nextPendingIntent);
Czy faceci wiedzą, co jeszcze mogę spróbować? Korzystanie z tego, co wyjaśniłem powyżej, nic nie robi, pojawia się powiadomienie i ma trzy przyciski akcji, ale kliknięcie na nich nic dla mnie nie robi.
W pewnym momencie pomyślałem, że może jeśli dodałem filtry intencji z nazwami akcji, ale wtedy pomyślałem, że wszystkie są w tej samej przestrzeni nazw, dlaczego powinienem?
Pamiętaj, aby zachować instancję odbiornika. Przechowywać w miejscu? –
@anonimowy Zachowaj odniesienie do niego w swojej działalności lub usłudze. – acj
Dlaczego nie rejestrujesz BroadcastReceiver w manifeście i nie tworzysz osobnej klasy? – streamride