I have this code below which plays audio locally (raw/audio.mp3) from the raw folder and saves the seekbar progress to shared preferences. I want to change location of the audio from raw folder to assets folder without losing the functionality of saving the audio seekbar progress.
mPreferences = PreferenceManager.getDefaultSharedPreferences(this); editor = mPreferences.edit();
int duration = mPreferences.getInt("duration", 0);
int current = mPreferences.getInt("current", 0);
int mediaprogress = mPreferences.getInt("mediaprogress",0);
seekBar.setProgress(0);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean FromUser) {
if (FromUser){
seekBar.setProgress(progress);
mediaPlayer.seekTo(progress);
editor.putInt("mediaprogress",progress);
editor.apply();}}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}});
lastbuttn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (playing){
if (mediaPlayer == null){
mediaPlayer = MediaPlayer.create(getApplicationContext(),R.raw.audio);
mediaPlayer.seekTo(mediaprogress);
mediaPlayer.start();
int progress = mPreferences.getInt("mediaprogress",0);
editor.putInt("mediaprogress",progress);
editor.apply();
} else if (!mediaPlayer.isPlaying()){
mediaPlayer.seekTo(currentposition);
mediaPlayer.start();}
updateSeekBar();
playbttn.setImageResource(R.drawable.ic_pause);
playing = false;}
else {
if(mediaPlayer !=null){
mediaPlayer.pause();
currentposition = mediaPlayer.getCurrentPosition();
playbttn.setImageResource(R.drawable.ic_play);
playing = true;
}}}
});
playbttn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {if (playing){if (mediaPlayer == null){
mediaPlayer = MediaPlayer.create(getApplicationContext(),R.raw.audio);
mediaPlayer.start();
int progress = mPreferences.getInt("mediaprogress",0);
editor.putInt("mediaprogress",progress);
editor.apply();}
else if (!mediaPlayer.isPlaying()){
mediaPlayer.seekTo(currentposition);
mediaPlayer.start();}
updateSeekBar();
playbttn.setImageResource(R.drawable.ic_pause);
playing = false;}
else {if(mediaPlayer !=null){
mediaPlayer.pause();
currentposition = mediaPlayer.getCurrentPosition();
playbttn.setImageResource(R.drawable.ic_play);
playing = true;
}}}});}
public void updateSeekBar(){
int current = mediaPlayer.getCurrentPosition();
seekBar.setProgress(current);
int duration = mediaPlayer.getDuration();
seekBar.setMax(duration);
editor.putInt("current",current);
editor.apply();
editor.putInt("duration",duration);
editor.apply();
runnable = new Runnable() {
@Override
public void run() {
updateSeekBar();
}};
handler.postDelayed(runnable,1000);
}
toast message for showing progress saved
@Override
protected void onStop() {
super.onStop();
if (mediaPlayer == null){
Toast.makeText(getApplicationContext(), "saved progress", Toast.LENGTH_LONG).show();}
else if(mediaPlayer.isPlaying()){
mediaPlayer.pause();
playbttn.setImageResource(R.drawable.ic_play);}
}
After you have moved your file to assets folder, Try this: