Cercherò di fornire una soluzione che ho usato e la maggior parte del lettore musicale utilizza anche la stessa tecnica per mostrare i controlli del lettore nella barra di notifica.
Sto eseguendo un servizio che viene utilizzato per gestire Media Player e tutti i suoi controlli. Attività Il controllo utente interagisce con il servizio, ad esempio inviando Intent al servizio
Intent i = new Intent(MainActivity.this, MyRadioService.class);
i.setAction(Constants.Player.ACTION_PAUSE);
startService(i);
Per ricevere gli intenti ed eseguire l'azione nella classe Service, sto usando il codice seguente nel metodo di servizio onStartCommand
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent.getAction().equals(Constants.Player.ACTION_PAUSE)) {
if(mediaPlayer.isPlaying()) {
pauseAudio();
}
}
Ora per rispondere esattamente alla tua domanda per mostrare la notifica con i controlli di riproduzione. Puoi chiamare i seguenti metodi per mostrare la notifica con i controlli.
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);
} Spero che questo ti aiuti davvero. E sarai in grado di ottenere ciò che desideri. Buona programmazione :)