Android Studio Mediaplayer 搜索栏在 onDestroy() 之后结束;

问题描述 投票:0回答:0

所以,我有 MediaPlayer 的代码:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_meditatie1);
    getSupportActionBar().setTitle("Mindfulness");
    ColorDrawable colorDrawable
            = new ColorDrawable(Color.parseColor("#006600"));
    getSupportActionBar().setBackgroundDrawable(colorDrawable);

        play_btn=findViewById(R.id.playButton);
        back_btn=findViewById(R.id.rewindButton);
        forward_btn=findViewById(R.id.forwardButton);
        stop_btn=findViewById(R.id.pauseButton);
        time_txt=findViewById(R.id.textView2);

        seekBar=findViewById(R.id.seekBar);

        mediaPlayer= MediaPlayer.create(this, R.raw.mindfulness_pentru_incepatori );

        seekBar.setClickable(false);
        // adding functionalities for the buttons

        play_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                PlayMusic();
            }

            private void PlayMusic() {
                mediaPlayer.start();
                finalTime=mediaPlayer.getDuration();
                startTime=mediaPlayer.getCurrentPosition();
                if(oneTimeOnly==0)
                {
                    seekBar.setMax((int) finalTime);
                    oneTimeOnly=1;
                }
                time_txt.setText(String.format(
                        "%d min, %d sec", TimeUnit.MILLISECONDS.toMinutes((long) finalTime),
                        TimeUnit.MILLISECONDS.toSeconds((long) finalTime)-
                                TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long)finalTime))
                ));
                seekBar.setProgress((int) startTime);
                handler.postDelayed(UpdateSongTime, 100);
            }
            //creating runnable
            private Runnable UpdateSongTime=new Runnable() {
                @Override
                public void run() {
                    startTime=mediaPlayer.getCurrentPosition();
                    time_txt.setText(String.format("%d min, %d sec",
                            TimeUnit.MILLISECONDS.toMinutes((long) startTime),
                            TimeUnit.MILLISECONDS.toSeconds((long) startTime)
                                    -TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long) startTime))));

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

                }
            };
        });

        stop_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mediaPlayer.pause();
            }
        });
        forward_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int temp=(int) startTime;
                if((temp+forwardTime) <= finalTime)
                {
                    startTime=startTime+forwardTime;
                    mediaPlayer.seekTo((int ) startTime);

                } else {
                    Toast.makeText(Meditatie1.this, "can't make jump", Toast.LENGTH_SHORT).show();
                }
            }
        });
        back_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int temp= (int) startTime;
                if((temp-backTime)>0)
                {
                    startTime=startTime-backTime;
                    mediaPlayer.seekTo((int) startTime);
                } else {
                    Toast.makeText(Meditatie1.this, "Can't go back", Toast.LENGTH_SHORT).show();
                }
            }
        });

    }

我的第一个问题是,当我按下手机的后退按钮时,媒体仍在播放。所以我添加了这个:

@Override
protected void onDestroy() {
    super.onDestroy();
    if (mediaPlayer != null) {
        mediaPlayer.stop();
    }
}

现在它有点工作了,因为歌曲停止了,但我有另一个问题,当我第一次进入应用程序时,按下播放搜索栏就可以了,就像这样: enter image description here

按下后退按钮后,再次进入活动,然后按下播放键,搜索栏结束,如下所示:enter image description here 我能做什么?

android android-studio seekbar
© www.soinside.com 2019 - 2024. All rights reserved.