J'ai un MediaPlayerService, actuellement démarré lorsque l'on clique sur le bouton Lecture/Pause sur un élément ListView. Voir le code ci-dessous (CustomListAdapter):ANDROID - Créer une notification avec Media Controls au démarrage du service
Intent intent = new Intent(v.getContext(),MediaPlayerService.class);
intent.putExtra("StreamLink",audio);
activity.startService(intent);
Lorsque ce service est démarré par le code ci-dessus, je veux créer une notification avec un bouton Play/Stop. L'utilisateur devrait être en mesure de sortir de l'application, être en mesure d'arrêter Media Playback, par exemple. player.stop() et lancez player.start(). En outre, lorsque l'utilisateur clique sur Notification, il doit renvoyer l'utilisateur à MainActivity.
Le code pour mes 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();
}
}