Я пытаюсь создать музыкальный проигрыватель, в котором медиа-плеер подключен к службе, а уведомление в фоновом режиме поддерживает воспроизведение.Действие не восстанавливается после нажатия панели уведомлений
Но когда я нажимаю на уведомление, он создает новый экземпляр действия, а не восстанавливает его.
Вот мои коды, Пожалуйста, проверьте их: -
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.player);
MusicService.mPlayer = new MediaPlayer();
MusicService.mPlayer.setOnCompletionListener(this); // Important
startService(Explicit(getApplicationContext(),new Intent(MusicService.ACTION_SETUP)));
playSong(currentSongIndex);
}
public static void playSong(int songIndex){
MusicService.mPlayer.reset();
MusicService.mPlayer.setDataSource(getPathForsongname(Playlist.get(songIndex)));
MusicService.mPlayer.prepare();
MusicService.mPlayer.start();
songTitle = Playlist.get(songIndex);
songTitleLabel.setText(songTitle);
songArtistLabel.setText(getArtistForsongname(songTitle));
songProgressBar.setProgress(0);
songProgressBar.setMax(100);
updateProgressBar();//It updates the progress by using handler progress bar simply
}
}
В настоящее время в службе я настройка на переднем плане, как это: -
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
String action = intent.getAction();
if (action.equals(ACTION_SETUP)){
setupAsForeground(AndroidBuildingMusicPlayerActivity.Playlist.get(AndroidBuildingMusicPlayerActivity.currentSongIndex));
}
return START_NOT_STICKY; }
void setUpAsForeground(String text) {
stopForeground(true);
Intent intent = new Intent(this, AndroidBuildingMusicPlayerActivity.class);
PendingIntent pi = PendingIntent.getActivity(this, 1, intent, 0);
RemoteViews r = new RemoteViews(this.getPackageName(),
R.layout.notification_layout);//set your custom layout
Intent nextIntent = new Intent(this, MusicService.class);
nextIntent.setAction(ACTION_SKIP);
PendingIntent pnextIntent = PendingIntent.getService(this, 0,
nextIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Intent prevIntent = new Intent(this, MusicService.class);
prevIntent.setAction(ACTION_PREVIOUS);
PendingIntent pprevIntent = PendingIntent.getService(this, 0,
prevIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Intent playIntent = new Intent(this, MusicService.class);
playIntent.setAction(ACTION_PLAY);
PendingIntent pplayIntent = PendingIntent.getService(this, 0,
playIntent, PendingIntent.FLAG_UPDATE_CURRENT);
mSongTitle=AndroidBuildingMusicPlayerActivity.Playlist.get(AndroidBuildingMusicPlayerActivity.current);
artist=AndroidBuildingMusicPlayerActivity.getArtistForsongname(mSongTitle);
r.setOnClickPendingIntent(R.id.btnNext, pnextIntent);
r.setOnClickPendingIntent(R.id.btnPrevious, pprevIntent);
r.setOnClickPendingIntent(R.id.btnPlay, pplayIntent);
r.setTextViewText(R.id.songTitle1, mSongTitle);
r.setTextViewText(R.id.Artist1, artist);
r.setFloat(R.id.songTitle1, "setTextSize", 14);
Notification.Builder mBuilder = new Notification.Builder(
this)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle(" Music Player")
.setContentText(text)
.setContent(r)
.setContentIntent(pi)
.setOngoing(true)
.setWhen(0)
.setAutoCancel(false);
startForeground(1,mBuilder.build());
}
Но когда я уничтожить деятельность путем удаления его из недавние задачи.
И если вы нажмете на панели уведомлений, он начнет новую деятельность и начнет воспроизведение песни с 0:00.
Есть ли способ возобновить действие с того же состояния? Я пробовал onsaveinstance() и onrestoreinstance(), ничего не работало для меня.
Пожалуйста, предложите мне способ сделать это.
Любая помощь будет оценена ... спасибо юй заранее :)
попробуйте с 'android: launchMode =" singleTask "' в манифесте активности –
Вы сбросите медиаплеер в своей игре playSong (currentSongIndex); 'call. – tachyonflux
Единственная цель вашего сервиса, похоже, заключается в установке уведомления переднего плана, в то время как ваше эфемерное действие отвечает за фактическое управление воспроизведением. Лучшая реализация заключается в перемещении всех реализаций воспроизведения музыки в службу и предоставлении методов, позволяющих вашей Деятельности управлять ею и получать ее статус. – Kai