如何在音频播放器主活动代码中添加共享首选项
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));
我正在开发 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));