Tôi sẽ cố gắng đưa ra giải pháp mà tôi đã sử dụng và hầu hết trình phát nhạc cũng sử dụng kỹ thuật tương tự để hiển thị các điều khiển trình phát trên thanh thông báo.
Tôi đang chạy một dịch vụ được sử dụng để quản lý Media Player và tất cả các điều khiển của nó. Ví dụ: Kiểm soát hoạt động của người dùng tương tác với Dịch vụ bằng cách gửi Ý định đến dịch vụ
Intent i = new Intent(MainActivity.this, MyRadioService.class);
i.setAction(Constants.Player.ACTION_PAUSE);
startService(i);
ĐỂ nhận ý định và thực hiện hành động trong lớp Dịch vụ Tôi đang sử dụng mã sau trong phương thức onStartCommand của Dịch vụ
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent.getAction().equals(Constants.Player.ACTION_PAUSE)) {
if(mediaPlayer.isPlaying()) {
pauseAudio();
}
}
Bây giờ để trả lời chính xác câu hỏi của bạn để hiển thị thông báo với các điều khiển đang phát. Bạn có thể gọi các phương pháp sau để hiển thị thông báo với các điều khiển.
private void startAppInForeground() {
RemoteViews views = new RemoteViews(getPackageName(),
R.layout.notification_status_bar);
Intent playIntent = new Intent(this, MyRadioService.class);
playIntent.setAction(Constants.Player.ACTION_PLAY);
PendingIntent pplayIntent = PendingIntent.getService(this, 0,
playIntent, 0);
views.setOnClickPendingIntent(R.id.status_bar_play, pplayIntent);
views.setImageViewResource(R.id.status_bar_play,
R.drawable.status_bg);
Notification status = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
status = new Notification.Builder(this).build();
}
status.flags = Notification.FLAG_ONGOING_EVENT;
status.icon = R.mipmap.ic_launcher;
status.contentIntent = pendingIntent;
startForeground(Constants.FOREGROUND_SERVICE, status);
} Hy vọng điều này thực sự hữu ích cho bạn. Và bạn sẽ có thể đạt được những gì bạn muốn. Chúc bạn có một mã hóa vui vẻ :)