Java 如何在音频播放器主活动代码中添加SharedReference

Java 如何在音频播放器主活动代码中添加SharedReference,java,android,sharedpreferences,Java,Android,Sharedpreferences,我正在开发android音乐播放器,但不知道如何在代码中使用SharedReference。 我想在音乐播放器上保存最后一首歌,以便下次打开应用程序时显示播放器上的最后一首音频。但现在它失去了播放器上一首歌。这是我的项目代码。这里给出了URI代码 private void initPlayer(final int position) { if (mMediaPlayer != null && mMediaPlayer.isPlaying()) { mMe

我正在开发android音乐播放器,但不知道如何在代码中使用SharedReference。
我想在音乐播放器上保存最后一首歌,以便下次打开应用程序时显示播放器上的最后一首音频。但现在它失去了播放器上一首歌。这是我的项目代码。这里给出了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);
            }
        }
    });
private void initPlayer(最终整数位置){
if(mMediaPlayer!=null&&mMediaPlayer.isPlaying()){
mmediplayer.reset();
}
字符串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);//使用歌曲资源创建并加载MediaPlayer
mmediplayer.setOnPreparedListener(新的MediaPlayer.OnPreparedListener(){
@凌驾
已准备好公开作废(MediaPlayer mp){
字符串totalTime=createTimeLabel(mmediplayer.getDuration());
totTime.setText(totalTime);
mSeekBar.setMax(mmediplayer.getDuration());
mmediplayer.start();
playIcon.setBackgroundResource(R.drawable.stop);
}
});
mmediplayer.setOnCompletionListener(新的MediaPlayer.OnCompletionListener(){
@凌驾
完成时的公共作废(MediaPlayer mp){
int curSongPoition=位置;
//重复歌曲的代码,直到
if(光标位置
使用下面的类存储共享首选项

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());

使用下面的类存储共享首选项

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());

//方法从SharedReferences获取存储的歌曲

//方法来存储以前的歌曲

publicstaticvoidset\u song\u路径(上下文,字符串路径){
SharedReferences.Editor saver=act.getSharedReferences(“SharedReferName”,context.MODE_PRIVATE).edit();
putString(“song_path”,path);
commit();
}
私人玩家(最终积分位置){
if(mMediaPlayer!=null&&mMediaPlayer.isPlaying()){
mmediplayer.reset();
}
字符串sname=mySongs.get(position.getName().replace(“.mp3”,”).replace(“.m4a”,”).replace(“.wav”,”).replace(“.m4b”,”);
songTitle.setText(sname);
Uri songResourceUri=Uri.parse(mySongs.get(position.toString());
设置歌曲路径(您的歌曲上下文,songResourceUri.toString());//这是为了保存
mMediaPlayer=MediaPlayer.create(getApplicationContext(),songResourceUri);//使用歌曲资源创建并加载MediaPlayer
mmediplayer.setOnPreparedListener(新的MediaPlayer.OnPreparedListener(){
@凌驾
已准备好公开作废(MediaPlayer mp){
字符串totalTime=createTimeLabel(mmediplayer.getDuration());
totTime.setText(totalTime);
mSeekBar.setMax(mmediplayer.getDuration());
mmediplayer.start();
playIcon.setBackgroundResource(R.drawable.stop);
}
});
mmediplayer.setOnCompletionListener(新的MediaPlayer.OnCompletionListener(){
@凌驾
完成时的公共作废(MediaPlayer mp){
int curSongPoition=位置;
//重复歌曲的代码,直到
if(光标位置
要检索歌曲路径,请为Uri调用
Uri savedsongResourceUri=Uri.parse(歌曲路径(您的上下文));

//方法从SharedReferences获取存储的歌曲

//方法来存储以前的歌曲

publicstaticvoidset\u song\u路径(上下文,字符串路径){
SharedReferences.Editor saver=act.getSharedReferences(“SharedReferName”,context.MODE_PRIVATE).edit();
putString(“song_path”,path);
commit();
}
私人玩家(最终积分位置){
if(mMediaPlayer!=null&&mMediaPlayer.isPlaying()){
mmediplayer.reset();
}
字符串sname=mySongs.get(position.getName().replace(“.mp3”,”).replace(“.m4a”,”).replace(“.wav”,”).replace(“.m4b”,”);
songTitle.setText(sname);
Uri songResourceUri=Uri.parse(mySongs.get(position.toString());
设置歌曲路径(您的歌曲上下文,songResourceUri.toString());//这是为了保存
mMediaPlayer=MediaPlayer.create(getApplicationContext(),songResourceUri);//使用歌曲资源创建并加载MediaPlayer
mmediplayer.setOnPreparedListener(新的MediaPlayer.OnPreparedListener(){
@凌驾
已准备好公开作废(MediaPlayer mp){
字符串totalTime=createTimeLabel(mmediplayer.getDuration());
totTime.setText(totalTime);
mSeekBar.setMax(mmediplayer.getDuration());
mmediplayer.start();
playIcon.setBackgroundResource(R.drawable.stop);
}
});
mmediplayer.setOnCompletionListene
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);
            }
        }
    });
  }