android多媒体音乐(MediaPlayer)播放器制作代码
本文实例为大家分享了android多媒体音乐播放器的具体实现代码,供大家参考,具体内容如下
首先,在AndroidManifest.xml中配置权限
<!--读取手机中的音乐--> <uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/>
注释:Android多媒体音乐的几种来源
1.在andriod的应用中
MediaPlayer.create(this,R.raw.roar); //mnt/sdcard/手机内存卡
2.放在自己的sd卡中(内存卡)
mediaPlayer.setDataSource(this,Uri.parse("file://mnt/sdcard/1/123.mp3"));
3.在网络上(要知道哪个路径)
mediaPlayer.setDataSource(this,Uri.parse("http://192.168.43.202:8080/sister.mp3"));
接下来,在Java代码中写
在onCreate方法中写全局变量:
privateMediaPlayermediaPlayer;
privateSeekBarseekBar;
privateSurfaceViewsv_main_suffce;
publicvoidonplay(Viewview)throwsIOException{
imageButton=(ImageButton)view;
if(mediaPlayer==null){
//播放应用的音频文件
//mediaPlayer=MediaPlayer.create(this,R.raw.roar);
//播放内存卡中的音频文件
mediaPlayer=newMediaPlayer();
//音频流的类型
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
//设置音频的来源
//mediaPlayer.setDataSource(this,Uri.parse("file://mnt/sdcard/1/roar.mp3"));
//mediaPlayer.prepare();//准备一下
//播放网络音乐
mediaPlayer.setDataSource(this,Uri.parse("http://192.168.43.202:8080/crickets.mp3"));
//一步准备
mediaPlayer.prepareAsync();
//设置准备完的监听
mediaPlayer.setOnPreparedListener(newMediaPlayer.OnPreparedListener(){
@Override
publicvoidonPrepared(MediaPlayermediaPlayer){
//开始播放
mediaPlayer.start();
//点击播放改变图标
imageButton.setImageResource(android.R.drawable.ic_media_pause);
//获取音乐的播放最大时间
intdurtion=mediaPlayer.getDuration();
//设置进度条的最大值为音乐的播放最大时间
seekBar.setMax(durtion);
newMythred().start();
}
});
//给进度条设置一个事件
seekBar.setOnSeekBarChangeListener(newSeekBar.OnSeekBarChangeListener(){
@Override
publicvoidonProgressChanged(SeekBarseekBar,inti,booleanb){
}
@Override
publicvoidonStartTrackingTouch(SeekBarseekBar){
}
@Override
publicvoidonStopTrackingTouch(SeekBarseekBar){
//获取拖动的进度
intprogress=seekBar.getProgress();
//到那个位置播放
mediaPlayer.seekTo(progress);
}
});
}
elseif(mediaPlayer.isPlaying()){
mediaPlayer.pause();
imageButton.setImageResource(android.R.drawable.ic_media_play);
}
else{
mediaPlayer.start();
imageButton.setImageResource(android.R.drawable.ic_media_pause);
}
}
写了一个子线程extendsThread(seekbar进度条):
classMythrodextendsThread{
@Override
publicvoidrun(){
super.run();
while(seekBar.getProgress()<=seekBar.getMax()){
//获取音乐的当前播放位置
intcurrentPosition=mediaPlayer.getCurrentPosition();
seekBar.setProgress(currentPosition);
}
}
}
另建一个类SoundActivity,通过soundPool例化音频池可以实现多种声音一起播放
//实例化音频池
soundPool=newSoundPool(4,AudioManager.STREAM_MUSIC,0);
soundPool.setOnLoadCompleteListener(newSoundPool.OnLoadCompleteListener(){
@Override
publicvoidonLoadComplete(SoundPoolsoundPool,inti,intstatus){
//播放
soundPool.play(i,1,1,1,-1,1);
}
});
//写声音按钮的方法
publicvoidplayKFC(Viewview){
//音频池的路径
soundPool.load(this,R.raw.rooster,1);
}
publicvoidplayTwo(Viewview){
soundPool.load(this,R.raw.chimp,1);
}
publicvoidplayThree(Viewview){
soundPool.load(this,R.raw.crickets,1);
}
publicvoidplayFour(Viewview){
soundPool.load(this,R.raw.roar,1);
}
publicvoidplayDog(Viewview){
soundPool.load(this,R.raw.dogbark,1);
}
//销毁音频池soundPool
@Override
protectedvoidonDestroy(){
super.onDestroy();
if(soundPool!=null){
//释放内存
soundPool.release();
soundPool=null;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。