Отправить данные из сервиса в Android деятельности
Я создаю музыкальный плеер, который использует сервис для воспроизведения. У меня есть пользовательский интерфейс Activity, который контролирует (воспроизведение, пауза, далее, ...) службу. Я хочу обновить пользовательский интерфейс моего сервиса при нажатии следующей или предыдущей кнопки. Я думал о передаче целочисленного значения. Вот мой код:
Я использовал мессенджер для общения. Код в моем сервисе выглядит так:
enum Event {
NextSongChanged, CurrentPlayingSong
};
public synchronized void registerHandler(Messenger m) {
clients.add(m);
}
private void emit(Event e) {
for (Messenger m : clients) {
try {
m.send(Message.obtain(null, e.ordinal()));
} catch (RemoteException exception) {
/* The client must've died */
clients.remove(m);
}
}
}
Мой метод, который я вызываю при нажатии следующей кнопки:
public synchronized void playnext() {
reset();
if(songIndex < (songsList.size() - 1)) {
songIndex += 1;
playSong(songIndex);
} else {
songIndex = 0;
playSong(songIndex);
}
emit(Event.NextSongChanged);
}
Как только я запускаю событие NextSongChanged, я хочу пропуститьsongIndex» Переменная в моей деятельности. Есть идеи, как этого добиться?
Код моей активности для обработки события:
private Messenger playerMessenger = new Messenger(new Handler() {
@Override
public void handleMessage(Message msg) {
switch (MyService.Event.values()[msg.what]) {
case NextSongChanged:
//String songTitle = songsList.get(currentSongIndex+1).get("songTitle");
//currentSongIndex += 1;
//songTitleLabel.setText(songTitle);
//updatePlaying();
break;
case CurrentPlayingSong:
break;
}
}
});