本文主要是介绍android使用MediaPlayer播放音乐+进度条,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这几天一直在学习android,向着把一些东西记下来,网络是最好的了。
mediaPlayer实现音频的播放
直接看这个图片可以比较的清晰知道应该怎么调用MediaPlayer的一些函数。
这个小实现是实现进度条跟踪的,进度条的跟踪我放在了一个子线程里面
代码:
class progressThread extends Thread{boolean flag=true;@Overridepublic void run() {super.run();while(flag){if(player.isPlaying()) {progress.setProgress(player.getCurrentPosition()); //实时获取播放音乐的位置并且设置进度条的位置}}}//下面的函数是外部调用种植线程的,因为现在是不提倡直接带哦用stop方法的public void stopThread(){this.flag=false;}}
APP播放界面(只是实现了播放以及控制播放的功能,界面还有待优化)
然后就是主程序中的一些代码设置了
一些代码
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_play);try {player.setDataSource(main.getAbsolutePath()+"/test.wav"); //获取到音频文件设置MediaPlayer的资源player.setLooping(false); //只播放一次player.prepare();player.start();} catch (IOException e) {e.printStackTrace();Toast.makeText(this, "IO error", Toast.LENGTH_SHORT).show();}//MediaPlayer准备资源的监听器player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {@Overridepublic void onPrepared(MediaPlayer mediaPlayer) {Log.e("TAG", "preparing");}});//音频播放完成的监听器player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {@Overridepublic void onCompletion(MediaPlayer mediaPlayer) {Log.e("TAG", "completed!");//把所有的都回归到0progress.setProgress(0);player.seekTo(0);play_button.setSelected(player.isPlaying());}});//初始化进度条initProgress();//I am thinking about use a thread to listen to the progress of the music//开启进度条跟踪线程progressThread= new progressThread();progressThread.start();//这个是播放和暂停的图标play_button=findViewById(R.id.start_stop);//根据当前音乐的播放情况设置这个图标是暂停还是播放中play_button.setSelected(player.isPlaying());play_button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {//控制音频的播放和暂停if(player.isPlaying()){player.pause();}else{player.start();}play_button.setSelected(player.isPlaying());}});
private void initProgress() {progress =findViewById(R.id.progress_bar);//根据音乐的时长设置进度条的最大进度progress.setMax(player.getDuration());progress.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {@Overridepublic void onProgressChanged(SeekBar seekBar, int i, boolean b) {}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {}@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {player.seekTo(seekBar.getProgress());//松开之后音乐跳转到相应位置}});}
好了,记录到这里。
这篇关于android使用MediaPlayer播放音乐+进度条的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!