Tạo dịch vụ nền trước với cờ START_STICKY
.
@Override
public int onStartCommand(Intent startIntent, int flags, int startId) {
if (startIntent != null) {
String action = startIntent.getAction();
String command = startIntent.getStringExtra(CMD_NAME);
if (ACTION_CMD.equals(action)) {
if (CMD_PAUSE.equals(command)) {
if (mPlayback != null && mPlayback.isPlaying()) {
handlePauseRequest();
}
} else if (CMD_PLAY.equals(command)) {
ArrayList<Track> queue = new ArrayList<>();
for (Parcelable input : startIntent.getParcelableArrayListExtra(ARG_QUEUE)) {
queue.add((Track) Parcels.unwrap(input));
}
int index = startIntent.getIntExtra(ARG_INDEX, 0);
playWithQueue(queue, index);
}
}
}
return START_STICKY;
}
này sau đó có thể được gọi từ bất kỳ hoạt động để chơi một số nhạc
Intent intent = new Intent(MusicService.ACTION_CMD, fileUrlToPlay, activity, MusicService::class.java)
intent.putParcelableArrayListExtra(MusicService.ARG_QUEUE, tracks)
intent.putExtra(MusicService.ARG_INDEX, position)
intent.putExtra(MusicService.CMD_NAME, MusicService.CMD_PLAY)
activity.startService(intent)
Bạn có thể liên kết với các dịch vụ sử dụng bindService và để làm cho tạm dừng dịch vụ/dừng từ các phương pháp vòng đời hoạt động tương ứng.
Đây là hướng dẫn hay về Playing music in the background on Android
Nguồn
2016-11-08 15:07:37
Cảm ơn bạn, điều đó thực sự đã giúp tôi! :) – rohit
Tại sao bạn không thích dịch vụ đó là để kiểm soát. ? – rohit
cảm ơn bạn! hoạt động tốt nhưng tôi có một vấn đề với code.in ứng dụng của tôi Tôi có nhiều hoạt động nhưng tôi đã tuyên bố kết thúc() trong onPause().Tôi muốn chơi BGM trong khi đi qua ý định nhưng ý định cuộc gọi onpause và dừng dịch vụ (phương pháp kết thúc cz trong phương pháp onpause) .do bạn có bất kỳ giải pháp? – Hassy31