I Want To Play Audio One After Another When I Click Button In Android
ArrayList videolist = new ArrayList<>(); videolist.add('http://muurl.com/abc/song1.mp3'); videolist.add('http://muurl.com/abc/song2.mp3'); videolist.add('http:/
Solution 1:
Have a look at the MediaPlayer class in conjunction with a OnCompletionListener:
You would do something like:
int playListPos = 0; // declare this outside the button click probably as a global variable (so we can access it and increment in the on click listener of the button// the below code should go inside the button click
String url = videolist.get(playListPos); // your URL here
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioAttributes(
AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.setUsage(AudioAttributes.USAGE_MEDIA)
.build()
);
mediaPlayer.setDataSource(url);
mediaPlayer.prepare(); // might take long! (for buffering, etc)
mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
// this will be called every time a file is finished playingif (videolist.size() < playListPos) { // let's see if there is more files to play
mediaPlayer.setDataSource(videolist.get(playlistPos));
mediaPlayer.prepare();
mediaPlayer.start();
playListPos++;
} else {
// we played until the end. reset to 0 for when button is clicked again to restart from the beginning
playListPos = 0;
}
});
mediaPlayer.start();
Solution 2:
Here is the solution that satisfies 3 conditions:
When user click Start button first time, the app will play video list one after one
When user click Start button second time, the app will play the first video in the video list
Release MediaPlayer when the app goes to background
MainActivity.java
publicclassMainActivityextendsAppCompatActivity {
privateMediaPlayer mediaPlayer;
privateList<String> videolist;
private int currentPlayingPosition;
@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_activity);
videolist = newArrayList<>();
videolist.add("http://muurl.com/abc/song1.mp3");
videolist.add("http://muurl.com/abc/song2.mp3");
videolist.add("http://muurl.com/abc/song3.mp3");
// User click this button to play video in video listButton buttonPlayVideoList = findViewById(R.id.buttonPlayVideoList);
buttonPlayVideoList.setOnClickListener(newView.OnClickListener() {
@OverridepublicvoidonClick(View v) {
playVideoList();
}
});
}
privatevoidplayVideoList() {
if (mediaPlayer == null) {
mediaPlayer = newMediaPlayer();
mediaPlayer.setLooping(false);
mediaPlayer.setOnPreparedListener(newMediaPlayer.OnPreparedListener() {
@OverridepublicvoidonPrepared(MediaPlayer mp) {
mediaPlayer.start();
}
});
mediaPlayer.setOnCompletionListener(newMediaPlayer.OnCompletionListener() {
@OverridepublicvoidonCompletion(MediaPlayer mp) {
++currentPlayingPosition;
if (currentPlayingPosition < videolist.size()) {
playVideoAtPosition(currentPlayingPosition);
}
}
});
}
currentPlayingPosition = 0;
playVideoAtPosition(currentPlayingPosition);
}
privatevoidplayVideoAtPosition(int position) {
try {
mediaPlayer.reset();
mediaPlayer.setDataSource(videolist.get(position));
mediaPlayer.prepareAsync();
} catch (IOException e) {
e.printStackTrace();
}
}
@OverrideprotectedvoidonStop() {
// Release media player when app goes to backgroundif (mediaPlayer != null) {
mediaPlayer.stop();
mediaPlayer.release();
}
super.onStop();
}
}
Post a Comment for "I Want To Play Audio One After Another When I Click Button In Android"