如何在音频播放器主活动代码中添加共享首选项

How to add sharedpreferences in an audio player mainactivity code

我正在开发 android 音乐播放器,但不知道如何在我的代码中使用共享首选项。
我想将最后一首歌曲保存在音乐播放器上,以便下次打开应用程序时它会显示播放器上的最后一首音频。但是现在它丢失了播放器的前一首歌曲。这是我的项目的代码。 URI代码在这里给出。

private void initPlayer(final int position) {

    if (mMediaPlayer != null && mMediaPlayer.isPlaying()) {
        mMediaPlayer.reset();
    }

    String sname = mySongs.get(position).getName().replace(".mp3", "").replace(".m4a", "").replace(".wav", "").replace(".m4b", "");
    songTitle.setText(sname);
    Uri songResourceUri = Uri.parse(mySongs.get(position).toString());

    mMediaPlayer = MediaPlayer.create(getApplicationContext(), songResourceUri); // create and load mediaplayer with song resources
    mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            String totalTime = createTimeLabel(mMediaPlayer.getDuration());
            totTime.setText(totalTime);
            mSeekBar.setMax(mMediaPlayer.getDuration());
            mMediaPlayer.start();
            playIcon.setBackgroundResource(R.drawable.stop);

        }
    });

    mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp) {
            int curSongPoition = position;
            // code to repeat songs until the
            if (curSongPoition < mySongs.size() - 1) {
                curSongPoition++;
                initPlayer(curSongPoition);
            } else {
                curSongPoition = 0;
                initPlayer(curSongPoition);
            }
        }
    });

使用下方 class 存储共享偏好

public class SharedPreferencesUtils {
    private static final String TAG = SharedPreferencesUtils.class.getSimpleName();

    /* store lastplayed song*/
    public static void setPreviousSongInSharedPrefs(Context context, String songName) {
        try {
            SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
            SharedPreferences.Editor sharedPrefsEditor = sharedPrefs.edit();
            sharedPrefsEditor.putString("PREVIOUS_SONG" , songName);
            sharedPrefsEditor.apply();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /* get store previous song*/
    public static String getPreviousSongFromSharedPrefs(Context context) {
        String previousSong = "";
        try {
            SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
            previousSong = sharedPrefs.getString("PREVIOUS_SONG" , "default value");
            return previousSong;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return previousSong;
    }

}

调用相应的方法使用下面的代码:

存储歌曲名称:SharedPreferencesUtils.setPreviousSongInSharedPrefs(getContext(), songName);

获取上一首歌曲名称:String songname = SharedPreferencesUtils.getPreviousSongFromSharedPrefs(getContext());

//method to get stored song from SharedPreferences

public static String song_path(Context context) {
    SharedPreferences sharedPreferences = act.getSharedPreferences("SHAREDpREFname", context.MODE_PRIVATE);
    return sharedPreferences.getString("song_path", null);
}

//method to store previous song

public static void set_song_path(Context context, String path) {
    SharedPreferences.Editor saver = act.getSharedPreferences("SHAREDpREFname", context.MODE_PRIVATE).edit();

    saver.putString("song_path", path);
    saver.commit();
}

private void initPlayer(final int position) {
    if (mMediaPlayer != null && mMediaPlayer.isPlaying()) {
        mMediaPlayer.reset();
    }

    String sname = mySongs.get(position).getName().replace(".mp3", "").replace(".m4a", "").replace(".wav", "").replace(".m4b", "");
    songTitle.setText(sname);
    Uri songResourceUri = Uri.parse(mySongs.get(position).toString());
    set_song_path(your_context,songResourceUri.toString());//this is to save 
    mMediaPlayer = MediaPlayer.create(getApplicationContext(), songResourceUri); // create and load mediaplayer with song resources
    mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            String totalTime = createTimeLabel(mMediaPlayer.getDuration());
            totTime.setText(totalTime);
            mSeekBar.setMax(mMediaPlayer.getDuration());
            mMediaPlayer.start();
            playIcon.setBackgroundResource(R.drawable.stop);

        }
    });

    mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp) {
            int curSongPoition = position;
            // code to repeat songs until the
            if (curSongPoition < mySongs.size() - 1) {
                curSongPoition++;
                initPlayer(curSongPoition);
            } else {
                curSongPoition = 0;
                initPlayer(curSongPoition);
            }
        }
    });
  }

检索歌曲路径调用 String path=song_path(your_context); for Uri Uri savedsongResourceUri = Uri.parse(song_path(your_context));