Oynatım için bir hizmet kullanan bir müzik çalar yapıyorum. Hizmeti kontrol eden (oynat, duraklat, sonraki, ...) bir Etkinlik Arabirim var. Bir sonraki veya önceki düğmeye basıldığında UI'yi servisimden güncellemek istiyorum. Tam sayı değerini geçmeyi düşündüm. İşte benim kodum:Verileri Hizmetten Faaliyete Gönder Android
İletişim için bir elçi kullandım. Hizmetimde kod benziyor:
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);
}
}
}
sonraki düğmeyi tıklamak sesleniyorum Benim yöntemi: Ben "songIndex" geçmek istiyorum En kısa zamanda NextSongChanged olayı olarak
public synchronized void playnext() {
reset();
if(songIndex < (songsList.size() - 1)) {
songIndex += 1;
playSong(songIndex);
} else {
songIndex = 0;
playSong(songIndex);
}
emit(Event.NextSongChanged);
}
aktivitemde değişken. Bunu nasıl başaracağınıza dair bir fikrin var mı?
olayı işlemek için My Etkinlik kodu:
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;
}
}
});
http://stackoverflow.com/questions/10664114/send-data-from-service-to-activity-and-screen-rotation – AbdulHannan
Bağlantı hizmeti ve etkinlik için bağlayıcı kullanıyorum. –