1

Here is my code:

package com.justforyou.bestnarutosongs;


import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.app.NotificationCompat;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SeekBar;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.concurrent.TimeUnit;

public class SongsListActivity extends AppCompatActivity
{

public boolean IsPaused = false;
public int Old_Song = -326523;
public TextView NameD;
public ImageView ImageD;
public TextView RateD;
public int II;
public Runnable UpdateSongTime;
public int startTime;
public int IIII;
public Handler myHandler = new Handler();
public SeekBar seekBar;
public TextView Current_Time;
public TextView Duration;
public int Repeat_Value = 0;
public ImageButton Stop;
public Songs song;
public ArrayList<Songs> Song;
public ImageButton P_and_P = null;
public ImageButton Repeat = null;
public ImageButton Next = null;
public ImageButton Previous = null;
private MediaPlayer mediaplayer;
private AudioManager mAudioManager;
private AudioManager.OnAudioFocusChangeListener mOnAudioFocusChangeListener = new AudioManager.OnAudioFocusChangeListener()
{
    @Override
    public void onAudioFocusChange(int focusChange){
        if(focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK || focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT){
            mediaplayer.pause();
            IsPaused = true;
            P_and_P.setImageResource(R.drawable.ic_play_arrow_white_48dp);
        }
        else if(focusChange == AudioManager.AUDIOFOCUS_GAIN){
            mediaplayer.start();
        }
        else if(focusChange == AudioManager.AUDIOFOCUS_LOSS){
            if(mediaplayer != null)
            {
                mediaplayer.pause();
                IsPaused = true;
                P_and_P.setImageResource(R.drawable.ic_play_arrow_white_48dp);

            }
        }
    }
};


public void showNotification() {
    PendingIntent pi = PendingIntent.getActivity(this, 0, new Intent(this, SongsListActivity.class), 0);
    Notification notification = new NotificationCompat.Builder(this)
            .setTicker(NameD.getText())
            .setSmallIcon(R.mipmap.ic_launcher)
            .setContentTitle(NameD.getText())
            .setContentText(RateD.getText())
            .setContentIntent(pi)
            .setAutoCancel(false)
            .build();

    NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    notificationManager.notify(0, notification);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_songs_list);

    Repeat = (ImageButton) findViewById(R.id.Repeat);
    Next = (ImageButton) findViewById(R.id.Next);
    Previous = (ImageButton) findViewById(R.id.Previous);
    NameD = (TextView) findViewById(R.id.NameD);
    ImageD = (ImageView) findViewById(R.id.ImageD);
    RateD = (TextView) findViewById(R.id.RateD);
    P_and_P = (ImageButton) findViewById(R.id.P_and_P);
    Stop = (ImageButton) findViewById(R.id.Stop);
    Duration = (TextView) findViewById(R.id.Duration);
    Current_Time = (TextView) findViewById(R.id.Current_Time);
    seekBar = (SeekBar) findViewById(R.id.SeekBar);
    seekBar.setClickable(false);

    mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

    Song = new ArrayList<>();
    Song.add(new Songs("Alone", "Rate: 4.0", R.raw.alone, R.drawable.alone));
    Song.add(new Songs("Anger", "Rate: 4.5", R.raw.anger, R.drawable.anger ));
    Song.add(new Songs("Bad Situation", "Rate: 3.6", R.raw.bad_situation, R.drawable.badsitu));
    Song.add(new Songs("Beni Soubi", "Rate: 4.0", R.raw.beni_soubi, R.drawable.beni));
    Song.add(new Songs("Confronting", "Rate: 3.2", R.raw.confronting, R.drawable.confronting));
    Song.add(new Songs("Daylight Of Konoha", "Rate: 4.7", R.raw.d_o_k, R.drawable.d_o_k ));
    Song.add(new Songs("Dark Clouds", "Rate: 3.1", R.raw.dark_clouds, R.drawable.darkc));
    Song.add(new Songs("Dept. To The Front Lines", "Rate: 5.0", R.raw.departure_to_the_front_lines, R.drawable.d_t_t_f_l));
    Song.add(new Songs("Despair", "Rate: 3.6", R.raw.despair, R.drawable.despair));
    Song.add(new Songs("Dokushinjutsu(Mt. Neoboku)", "Rate: 2.9", R.raw.dokushinjutsu, R.drawable.dokushin));
    Song.add(new Songs("Emergence Of Talent", "Rate: 4.6", R.raw.emergence_of_talents, R.drawable.e_o_t));
    Song.add(new Songs("Evening", "Rate: 3.4", R.raw.evening, R.drawable.evening));
    Song.add(new Songs("Experienced Many Battles", "Rate: 4.0", R.raw.experienced_many_battles, R.drawable.e_m_b ));
    Song.add(new Songs("Gekiha", "Rate: 4.0", R.raw.gekiha, R.drawable.gekiha ));
    Song.add(new Songs("Genshi(Vision)", "Rate: 2.9", R.raw.genshi, R.drawable.genshi));
    Song.add(new Songs("Girei(Pain's Theme)", "Rate: 4.5", R.raw.girei, R.drawable.girei));
    Song.add(new Songs("Glued State", "Rate: 3.5", R.raw.glued_state, R.drawable.glue));
    Song.add(new Songs("Guren", "Rate: 3.5", R.raw.guren, R.drawable.guren));
    Song.add(new Songs("Heaven Shaking Event", "Rate: 5.0", R.raw.heaven_shaking_event, R.drawable.h_s_e));
    Song.add(new Songs("Hidan", "Rate: 3.0", R.raw.hidan, R.drawable.hidan ));
    Song.add(new Songs("Hidden Will To Fight", "Rate: 2.1", R.raw.hidden_will_to_fight, R.drawable.h_w_t_f));
    Song.add(new Songs("Himoji", "Rate: 5.0", R.raw.himoji, R.drawable.himoji));
    Song.add(new Songs("Hinata and Neji", "Rate: 5.0", R.raw.hinata_vs_neji, R.drawable.hi_vs_ne));
    Song.add(new Songs("Homecoming", "Rate: 3.5", R.raw.homecoming, R.drawable.homecoming));
    Song.add(new Songs("I said I'm Naruto", "Rate: 5.0", R.raw.i_said_i_am_naruto, R.drawable.i_s_i_a_n));
    Song.add(new Songs("Jinchuuriki", "Rate: 2.5", R.raw.jinchuuriki, R.drawable.jinchu));
    Song.add(new Songs("Kakuzu", "Rate: 5.0", R.raw.kakuzu, R.drawable.kakuzu));
    Song.add(new Songs("Kokuten", "Rate: 5.0", R.raw.kokuten, R.drawable.kokuten));
    Song.add(new Songs("Kouen", "Rate: 5.0", R.raw.kouen, R.drawable.kouen));
    Song.add(new Songs("Nankou Furaku", "Rate: 5.0", R.raw.nankou_furaku, R.drawable.n_furu));
    Song.add(new Songs("Naruto Main Theme", "Rate: 5.0", R.raw.naruto_main_theme, R.drawable.narutomt ));
    Song.add(new Songs("Orochimaru's Theme", "Rate: 3.8", R.raw.orochimaru_theme, R.drawable.orochi));
    Song.add(new Songs("Ranpatsu", "Rate: 5.0", R.raw.ranpatsu, R.drawable.ranpatsu));
    Song.add(new Songs("Risking It All", "Rate: 5.0+", R.raw.risking_it_all, R.drawable.r_i_a));
    Song.add(new Songs("Saika", "Rate: 4.9", R.raw.saika, R.drawable.saika));
    Song.add(new Songs("Sasuke's Destiny", "Rate: 5.0", R.raw.sasuke_destiny, R.drawable.sasudesti));
    Song.add(new Songs("Senya(Itachi's Theme)", "Rate: 5.0", R.raw.senya, R.drawable.senya ));
    Song.add(new Songs("Shirotsumekusa", "Rate: 3.0", R.raw.shirotsumekusa, R.drawable.shirot ));
    Song.add(new Songs("Shouryuu", "Rate: 5.0", R.raw.shouryuu, R.drawable.shouryuu));
    Song.add(new Songs("Shippuuden", "Rate: 5.0", R.raw.shippuuden, R.drawable.shippuuden));
    Song.add(new Songs("Turn Over", "Rate: 4.6", R.raw.turn_over, R.drawable.turn_over));

    SongsAdapter SongAdapter = new SongsAdapter(this, Song, R.color.Main_Color);
    ListView listView = (ListView) findViewById(R.id.list_Col);
    listView.setAdapter(SongAdapter);

    seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        int ProgressChanged = 0;
        @Override
        public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
            ProgressChanged = i;
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            mediaplayer.seekTo(ProgressChanged);

        }
    });

    Repeat.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (Repeat_Value == 0) {
                Repeat_Value = 1;
                Repeat.setImageResource(R.drawable.ic_repeat_one_white_48dp);
            } else {
                Repeat_Value = 0;
                Repeat.setImageResource(R.drawable.ic_repeat_white_48dp);
            }
        }
    });

    Next.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View view) {

                                    if (mediaplayer != null) {
                                        mediaplayer.release();
                                        mediaplayer = null;

                                        if (II == (Song.size() - 1)) {
                                            II = 0;
                                        } else {
                                            II += 1;
                                        }
                                        music_player(II);

                                    }
                                }
                            }
    );

    Previous.setOnClickListener(new View.OnClickListener() {
                                    @Override
                                    public void onClick(View view) {

                                        if (mediaplayer != null) {
                                            mediaplayer.release();
                                            mediaplayer = null;
                                            if (II == 0) {
                                                II = (Song.size() - 1);
                                            } else {
                                                II -= 1;
                                            }
                                            music_player(II);
                                        }
                                    }
                                }
    );

    P_and_P.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (mediaplayer != null) {
                if (!mediaplayer.isPlaying() || IsPaused) {
                    P_and_P.setImageResource(R.drawable.ic_pause_white_48dp);
                    IsPaused = false;
                    mediaplayer.start();
                } else {
                    P_and_P.setImageResource(R.drawable.ic_play_arrow_white_48dp);
                    IsPaused = true;
                    mediaplayer.pause();
                }
            }

        }
    });


    Stop.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (mediaplayer != null) {
                P_and_P.setImageResource(R.drawable.ic_play_arrow_white_48dp);
                mediaplayer.pause();
                mediaplayer.seekTo(0);
                IsPaused = true;
            }
        }
    });



    listView.setOnItemClickListener
            (new AdapterView.OnItemClickListener()
             {
                 @Override
                 public void onItemClick(AdapterView<?> adapterView, View view, int i, long l)
                 {

                     Log.v("1", "Just upon entering onItemClick");
                     music_player(i);
                     showNotification();
                 }
             }
            );
}

public void music_player(int I) {

    UpdateSongTime = new Runnable() {
        public void run() {
            startTime = mediaplayer.getCurrentPosition();
            if ((TimeUnit.MILLISECONDS.toSeconds((long) startTime)) -
                    TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long) startTime)) < 10) {
                Current_Time.setText(String.format("0%d:0%d",
                        TimeUnit.MILLISECONDS.toMinutes((long) startTime),
                        TimeUnit.MILLISECONDS.toSeconds((long) startTime) -
                                TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.
                                        toMinutes((long) startTime)))
                );
            } else {
                Current_Time.setText(String.format("0%d:%d",
                        TimeUnit.MILLISECONDS.toMinutes((long) startTime),
                        TimeUnit.MILLISECONDS.toSeconds((long) startTime) -
                                TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.
                                        toMinutes((long) startTime))));
            }

            seekBar.setProgress((int) startTime);
            myHandler.postDelayed(this, 100);
        }
    };


    II = I;
    IIII = II;
    int Current_Song;
    song = Song.get(I);

    //If mediaPlayer is not used before, this will make oldsong as present song.
    if (Old_Song == -326523) {
        Old_Song = song.getSong();
    }

    Current_Song = song.getSong();

    //If mediaPlayer is paused.
    if (IsPaused) {
        P_and_P.setImageResource(R.drawable.ic_pause_white_48dp);
        //If the song paused is same as the new song.
        if (Current_Song == Old_Song) {
            mediaplayer.start();
            NameD.setText(song.getNameOfSong());
            RateD.setText(song.getDeveloperRate());
            ImageD.setImageResource(song.getImage());
        }

        //If the song Paused is not the new song.
        else {
            if (mediaplayer != null) {
                mediaplayer.release();
                mediaplayer = null;
            }

            int result = mAudioManager.requestAudioFocus(mOnAudioFocusChangeListener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);

            if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
                mediaplayer = mediaplayer.create(SongsListActivity.this, song.getSong());
                seekBar.setMax(mediaplayer.getDuration());
                Old_Song = song.getSong();
                NameD.setText(song.getNameOfSong());
                RateD.setText(song.getDeveloperRate());
                ImageD.setImageResource(song.getImage());
                mediaplayer.start();
                if ((TimeUnit.MILLISECONDS.toSeconds((long) mediaplayer.getDuration()) -
                        TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long) mediaplayer.getDuration()))) < 10) {
                    Duration.setText(String.format("0%d:0%d",
                            TimeUnit.MILLISECONDS.toMinutes((long) mediaplayer.getDuration()),
                            TimeUnit.MILLISECONDS.toSeconds((long) mediaplayer.getDuration()) -
                                    TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long) mediaplayer.getDuration()))));
                } else {
                    Duration.setText(String.format("0%d:%d",
                            TimeUnit.MILLISECONDS.toMinutes((long) mediaplayer.getDuration()),
                            TimeUnit.MILLISECONDS.toSeconds((long) mediaplayer.getDuration()) -
                                    TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long) mediaplayer.getDuration()))));
                }

                seekBar.setProgress((int) startTime);
                myHandler.postDelayed(UpdateSongTime, 100);

                mediaplayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                    @Override
                    public void onCompletion(MediaPlayer mediaPlayer) {
                        P_and_P.setImageResource(R.drawable.ic_play_arrow_white_48dp);
                        IsPaused = true;
                        if (mediaplayer != null) {
                            mediaplayer.release();
                            mediaplayer = null;
                        }
                        if (Repeat_Value == 0) {
                            if (II == (Song.size() - 1)) {
                                II = 0;
                            } else {
                                II += 1;
                            }
                        } else {
                            II = IIII;
                        }
                        IsPaused = false;
                        music_player(II);
                    }
                });
            }
        }
        IsPaused = false;

    } else if (mediaplayer != null) {
        //If mediaPlayer is already Playing a song.
        if (mediaplayer.isPlaying()) {
            P_and_P.setImageResource(R.drawable.ic_play_arrow_white_48dp);
            mediaplayer.pause();
            IsPaused = true;
            if (Current_Song != Old_Song) {
                NameD.setText(song.getNameOfSong());
                RateD.setText(song.getDeveloperRate());
                ImageD.setImageResource(song.getImage());
                if (mediaplayer != null) {
                    mediaplayer.release();
                    mediaplayer = null;
                }
                P_and_P.setImageResource(R.drawable.ic_pause_white_48dp);
                IsPaused = false;
                music_player(II);

            }
        }
    }

    //If mediaPlayer is used for first time and if mediaPlayer is neither paused
    else {

        if (mediaplayer != null) {
            mediaplayer.release();
            mediaplayer = null;
        }

        int result = mAudioManager.requestAudioFocus(mOnAudioFocusChangeListener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);

        if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
            mediaplayer = mediaplayer.create(SongsListActivity.this, song.getSong());
            seekBar.setMax(mediaplayer.getDuration());
            Old_Song = song.getSong();
            NameD.setText(song.getNameOfSong());
            RateD.setText(song.getDeveloperRate());
            ImageD.setImageResource(song.getImage());
            mediaplayer.start();
            if ((TimeUnit.MILLISECONDS.toSeconds((long) mediaplayer.getDuration()) -
                    TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long) mediaplayer.getDuration()))) < 10) {
                Duration.setText(String.format("0%d:0%d",
                        TimeUnit.MILLISECONDS.toMinutes((long) mediaplayer.getDuration()),
                        TimeUnit.MILLISECONDS.toSeconds((long) mediaplayer.getDuration()) -
                                TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long) mediaplayer.getDuration()))));
            } else {
                Duration.setText(String.format("0%d:%d",
                        TimeUnit.MILLISECONDS.toMinutes((long) mediaplayer.getDuration()),
                        TimeUnit.MILLISECONDS.toSeconds((long) mediaplayer.getDuration()) -
                                TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long) mediaplayer.getDuration()))));
            }

            seekBar.setProgress((int) startTime);
            myHandler.postDelayed(UpdateSongTime, 100);

            P_and_P.setImageResource(R.drawable.ic_pause_white_48dp);

            mediaplayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                @Override
                public void onCompletion(MediaPlayer mediaPlayer) {
                    P_and_P.setImageResource(R.drawable.ic_play_arrow_white_48dp);
                    IsPaused = true;
                    if (mediaplayer != null) {
                        mediaplayer.release();
                        mediaplayer = null;
                    }

                    if (Repeat_Value == 0) {
                        if (II == (Song.size() - 1)) {
                            II = 0;
                        } else {
                            II += 1;
                        }
                    } else {
                        II = IIII;
                    }
                    IsPaused = false;
                    music_player(II);


                }
            });
        }
    }
}


@Override
protected void onDestroy() {
    super.onDestroy();
    if(mediaplayer != null)
    {
        mediaplayer.release();
        mediaplayer = null;
        mAudioManager.abandonAudioFocus(mOnAudioFocusChangeListener);
    }
}
}

Now what i Want is that when the notification is clicked, the SongsListActivity is started, but it gets restarted.

see, first the song starts playing, then seekbar is updated, Image, name, etc of the song is updated.

Now suppose i press back button from navigation bar, and then without destroying the activity, i again open the app, then this activity doesn't gets reset(that is, all the name, image, etc of the song are shown as they were before leaving the activity), but when i repeat the same process, but with only difference that I open the activity by tapping on the notification generated; then the whole activity gets reset(that is, the activity looks like it has just begun).

What should i do, so that the activity does not gets reset, instead it continues?

Tim
  • 41,901
  • 18
  • 127
  • 145
Hokkyokusei
  • 1,021
  • 13
  • 18
  • 2
    Possible duplicate of [Notification click: activity already open](http://stackoverflow.com/questions/12043671/notification-click-activity-already-open) – Bryan Aug 18 '16 at 12:34
  • One question at a time please. And leave out the "please dont downvote me" – Tim Aug 18 '16 at 12:38

1 Answers1

0

One solution is to save the changes in a .txt file and reload them again when you come back to the activity.

Copacel
  • 1,328
  • 15
  • 25