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();
}
}