0

Ich habe einen MediaPlayerService, der gerade gestartet wird, wenn auf die Play/Pause-Schaltfläche eines ListView-Elements geklickt wird. Siehe Code (CustomListAdapter):ANDROID - Benachrichtigung mit Mediensteuerungen beim Start des Dienstes erstellen

Intent intent = new Intent(v.getContext(),MediaPlayerService.class); 
intent.putExtra("StreamLink",audio); 
activity.startService(intent); 

Wenn dieser Dienst durch den Code gestartet wird oben ich eine Mitteilung mit einem Spiel erstellen möchten/Stopp-Taste. Der Benutzer sollte in der Lage sein, die App zu verlassen, die Medienwiedergabe z. player.stop() und starte player.start(). Auch wenn die Benachrichtigung angeklickt wird, sollte der Benutzer zur MainActivity zurückkehren.

Der Code für meine MediaPlayerService.java:

public class MediaPlayerService extends Service implements MediaPlayer.OnPreparedListener { 

MediaPlayer mMediaPlayer = null; 
public String audioStreamLink; 

public int onStartCommand(Intent intent, int flags, int startId) { 

    // Get the Audio Streaming Link from the parsed JSON in the Main Activity 
    audioStreamLink = intent.getStringExtra("StreamLink"); 

    // Instantiate MediaPlayer, set the Audio Type and acquire a wakelock, set the Media Player Data Source and Prepare. 
    mMediaPlayer = new MediaPlayer(); 
    mMediaPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK); 
    mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    try { 
     mMediaPlayer.setDataSource(audioStreamLink); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    mMediaPlayer.setOnPreparedListener(this); 
    mMediaPlayer.prepareAsync(); 

    return START_STICKY; 

} 

@Nullable 
@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 

/** Called when MediaPlayer is ready */ 
@Override 
public void onPrepared(MediaPlayer player) { 
    player.start(); 
} 

@Override 
public void onDestroy() { 
    mMediaPlayer.stop(); 
    mMediaPlayer.reset(); 
    if (mMediaPlayer != null) mMediaPlayer.release(); 

} 
} 

Antwort

0

Der Prozess eine Benachrichtigung über immer nach unten vollständig dokumentiert wird in den Dokumenten zum Beispiel see this.

Damit Sie gehen durch alle diese große Dokumentation sind dies die Punkte:

  • Sie müssen die benutzerdefinierte Benachrichtigung mit einem NotificationCompat.Builder
  • Einem typischen Musik-Player-Dienst erstellen würde die Benachrichtigung über startForeground()
  • starten
  • Um klickbare Schaltflächen zur Benachrichtigung hinzuzufügen, verwenden Sie addAction() beim Erstellen der Benachrichtigungen.
  • Aktionen in Benachrichtigungen sind definiert durch PendingIntent, es ist eine Art von normalen Intent, wenn es darum geht, darauf zu reagieren.
  • Wenn auf eine Schaltfläche in der Benachrichtigung geklickt wird, wird onStartCommand() mit der Absicht ausgelöst, die Sie für diese Schaltfläche angegeben haben (wenn Sie die Absicht richtig konfigurieren).
  • Jede Schaltfläche sollte eine andere action haben, damit Sie die Absicht erkennen können, wenn sie empfangen wird.
  • Innerhalb der onStartCommand() können Sie spielen/pausieren und andere Operationen basierend auf dieser Absicht Aktion ausführen.

Einige Referenz Ich würde Ihnen vorschlagen zu lesen:

Dinge ein wenig anders gewesen wäre, wenn Sie eine MediaSession Verwendung wurden spiele die Medien.

Verwandte Themen