首页 > 解决方案 > 如何在音频播放器主活动代码中添加共享首选项

问题描述

我正在开发一个 android 音乐播放器,但不知道如何在我的代码中使用 sharedpreferences。
我想将最后一首歌保存在音乐播放器上,以便下次打开应用程序时,它会显示播放器上的最后一个音频。但是现在它丢失了播放器的前一首歌曲。这是我的项目的代码。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);
            }
        }
    });

标签: javaandroidsharedpreferences

解决方案


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

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


推荐阅读