源码介绍:音频音效Audio,适合学习源码效果:源码片段:packagecom.example.shiyan;importjava.util.ArrayList;importjava.util.List;importandroid.app.Service;importandroid.content.Intent;importandroid.graphics.Bitmap;importandroid.graphics.BitmapFactory;importandroid.graphics.drawable.BitmapDrawable;importandroid.media.MediaPlayer;importandroid.media.MediaPlayer.OnCompletionListener;importandroid.net.Uri;importandroid.os.Handler;importandroid.os.IBinder;importandroid.view.animation.AnimationUtils;importandroid.widget.Toast;/***类说明:音乐播放服务类*@authorLiangAn*@version创建时间:2015-03-1810:24:17*/publicclassControlPlayextendsService{publicstaticMediaPlayermyMediaPlayer;publicstaticMainActivityc_ma;publicstaticintplaying_id=0;//初始化歌曲播放时间变量privateintCurrentTime=0;//初始化歌曲总时长变量privateintCountTime=0;publicstaticMusic_infoAdapterm_in;publicThreadthread;Handlerhandler=newHandler();publicbooleanplayFlag=true;publicintvOverridepublicIBinderonBind(Intentintent){returnnull;}@OverridepublicvoidonCreate(){super.onCreate();initMediaSource(initMusicUri(0));}@OverridepublicvoidonDestroy(){super.onDestroy();if(myMediaPlayer!=null){myMediaPlayer.stop();myMediaPlayer.release();myMediaPlayer=null;}}@OverridepublicvoidonStart(Intentintent,intstartId){super.onStart(intent,startId);StringplayFlag=intent.getExtras().getString("control");if("play".equals(playFlag)){playMusic();}elseif("next".equals(playFlag)){playNext();}elseif("front".equals(playFlag)){playFront();}elseif("listClick".equals(playFlag)){playing_id=intent.getExtras().getInt("musicId_1");initMediaSource(initMusicUri(playing_id));playMusic();}elseif("gridClick".equals(playFlag)){playing_id=intent.getExtras().getInt("musicId_2");initMediaSource(initMusicUri(playing_id));playMusic();}}/***初媒体对象**@parammp3Path*mp3路径*/publicvoidinitMediaSource(Stringmp3Path){Urimp3Uri=Uri.parse(mp3Path);如果(我的媒体aPlayer!=null){myMediaPlayer.stop();myMediaPlayer.reset();myMediaPlayer=null;}//为myMediaPlayer创建一个对象myMediaPlayer=MediaPlayer.create(this,mp3Uri);//myMediaPlayer=MediaPlayer.create(this,R.raw.aaaa);//c_ma.startRhythm(myMediaPlayer);}/***返回列表前几行的歌曲路径**@param_id*表示歌曲编号,从0*/publicStringinitMusicUri开始(int_id){playing_id=_id;Strings;//判断列表和列表长度得到if(Music_infoAdapter.musicList!=null&&Music_infoAdapter.musicList.size()!=0){s=Music_infoAdapter.musicList.get(_id).getMusicPath();returns;}else{//否则返回空串return"";}}/***带暂停方法的音乐播放方法*/publicvoidplayMusic(){//判断歌曲不能为空System.out.println("sfajfdsa");if(myMediaPlayer!=null&&Music_infoAdapter.musicList.size()!=0){if(myMediaPlayer.isPlaying()){//歌曲暂停myMediaPlayer.stop();//替换播放按钮MainActivity的背景。play_ImageButton.setBackgroundResource(R.drawable.play_button);//取消通知MainActivity.mNotificationManager.cancel(1);}else{System.out.println("sfajfdsa2");//myMediaPlayer.start();try{if(myMediaPlayer!=null){myMediaPlayer.stop();}myMediaPlayer.prepare();myMediaPlayer.start();}catch(Exceptione){e.printStackTrace();}//////////////////////////初始化歌词配置////////////////////////////Changebackground-MainActivity.play_ImageButton.setBackgroundResource(R.drawable.pause_button);//启动线程更新SeekBarstartSeekBarUpdate();//更新播放歌曲数intx=playing_id+1;MainActivity.music_number.setText(""+x+"/"+Music_infoAdapter.musicList.size());//截取.mp3字符串Stringa=Music_infoAdapter.musicList.get(playing_id).getMusicName();//intb=a.indexOf(".mp3");//Stringc=a.substring(0,b);//切换动画更新歌曲名MainActivity.music_Name.setText(a);MainActivity.music_Name.setAnimation(AnimationUtils.loadAnimation(ControlPlay.this,R.anim.translate_z));//用动画更新专辑名MainActivity.music_Album.setText(Music_infoAdapter.musicList.get(playing_id).getMusicAlbum());MainActivity.music_Album.setAnimation(AnimationUtils.loadAnimation(ControlPlay.this,R.anim.alpha_y));//更新歌曲时间MainActivity.time_right.setText(Music_infoAdapter.toTime(Music_infoAdapter.musicList.get(playing_id).getMusicTime()));}/***监听播放是否完成*/myMediaPlayer.setOnCompletionListener(newOnCompletionListener(){@OverridepublicvoidonCompletion(MediaPlayermp){//TODOAuto-generatedmethodstub//播放完当前歌曲后,会自动播放下一首playNext();}});}else{Toast.makeText(ControlPlay.this,"手机里没找到这首歌。.",Toast.LENGTH_SHORT).show();}}/***播放下一首*/publicvoidplayNext(){//判断歌曲不能为空if(Music_infoAdapter.musicList.size()!=0){//如果到达***一首歌继续播放***一首歌if(playing_id==Music_infoAdapter.musicList.size()-1){playing_id=Music_infoAdapter.musicList.size()-1;Toast.makeText(ControlPlay.this,"isalready***Onesong!",Toast.LENGTH_SHORT).show();MainActivity.play_ImageButton.setBackgroundResource(R.drawable.play_button);MainActivity.mNotificationManager.cancel(1);}else{initMediaSource(initMusicUri(++playing_id));playMusic();}}else{Toast.makeText(ControlPlay.this,"我没找到这首歌!",Toast.LENGTH_SHORT).show();}}/***播放上一首歌曲*/publicvoidplayFront(){//判断歌曲不能为空if(Music_infoAdapter.musicList.size()!=0){//如果到达第一首,则一直播放第一首if(playing_id==0){playing_id=0;Toast.makeText(ControlPlay.this,"现在是第一首歌!",Toast.LENGTH_SHORT).show();}else{initMediaSource(initMusicUri(--playing_id));playMusic();}}else{Toast.makeText(ControlPlay.this,"我没找到这首歌!",Toast.LENGTH_SHORT).show();}}publicvoidstartSeekBarUpdate(){handler.post(start);}Runnablestart=newRunnable(){@Overridepublicvoidrun(){//TODOAuto-generatedmethodstubhandler.post(updatesb);}};Runnableupdatesb=newRunnable(){@Overridepublicvoidrun(){//获取SeekBar移动到那里的时间MainActivity.play_time=myMediaPlayer.getCurrentPosition();//设置padding当前获取的进度MainActivity.seekbar.setProgress(MainActivity.play_time);//SeekBar的最大值填充歌曲时间MainActivity.seekbar.setMax(Music_infoAdapter.musicList.get(playing_id).getMusicTime());//线程延迟1000毫秒后启动handler.postDelayed(updatesb,1000);}};HandlermHandler=newHandler();}下载地址:http://down.51cto.com/data/2111747
