0

私は一種のオーディオプレーヤーを作っています。現在、アクティビティ自体でMediaPlayerを実行しています (これは悪いことだとわかっています)。次のように、音楽の再生に合わせて更新されるSeekBarが画面に表示されます。

private Runnable mUpdateTimeTask = new Runnable() {     
    public void run()
    {
        long totalDuration = mp.getDuration();
        long currentDuration = mp.getCurrentPosition();

        songTotalDurationLabel.setText("" + utils.millisecondsToTimer(totalDuration));
        songCurrentDurationLabel.setText("" + utils.millisecondsToTimer(currentDuration));

        int progress = (int)(utils.getProgressPercentage(currentDuration, totalDuration));
        songProgressBar.setProgress(progress);

        if(mp.isPlaying())
            mHandler.postDelayed(this, 100);
        else
            mHandler.removeCallbacks(mUpdateTimeTask);
    }       
};

ユーザーが戻るボタンを押す、最近のアプリのリストからボタンを削除すると、音楽が停止します。今、私は音楽をバックグラウンドで実行したいので、インターネットを見回してServicestartService()で実行し、Activity から呼び出していることがわかりました。また、音楽の再生中に通知が表示され、一時停止すると削除されます。

アプリを閉じても音楽を再生できるサービスを理解しています。しかし、私が理解していなかったのは、サービスが実行されているときにユーザーが通知をタップすると、SeekBar at でアクティビティが再開されるということですprogress = 0

アクティビティの再起動後に、サービスからの SeekBar を正しい値に更新する UI を取得するにはどうすればよいですか?

4

1 に答える 1