Tôi đang xây dựng trình phát nhạc sử dụng dịch vụ để phát lại. Tôi có một giao diện người dùng hoạt động kiểm soát (phát, tạm dừng, tiếp theo, ...) dịch vụ. Tôi muốn cập nhật giao diện người dùng từ dịch vụ của tôi khi nhấn nút tiếp theo hoặc trước đó. Tôi đã nghĩ đến việc truyền một giá trị số nguyên. Đây là mã của tôi:Gửi dữ liệu từ dịch vụ đến hoạt động Android
Tôi đã sử dụng một sứ giả để liên lạc. Các mã trong dịch vụ của tôi trông giống như:
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);
}
}
}
Phương pháp của tôi mà tôi đang kêu gọi bấm vào nút bên cạnh:
public synchronized void playnext() {
reset();
if(songIndex < (songsList.size() - 1)) {
songIndex += 1;
playSong(songIndex);
} else {
songIndex = 0;
playSong(songIndex);
}
emit(Event.NextSongChanged);
}
Ngay sau khi tôi bắn sự kiện NextSongChanged Tôi muốn vượt qua "songIndex" biến thành hoạt động của tôi. Bất kỳ ý tưởng về cách để đạt được điều này?
đang Hoạt động của tôi để xử lý sự kiện:
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
Tôi sử dụng chất kết dính cho dịch vụ liên kết và hoạt động. –