Android 三种路径的音乐播放:储存在不同路径中音乐有不同的获取方式,过程大同小异,结果当然是一样。但是它们最重要的不同点是什么呢。
一. 应用内的音频文件
- public void isPlayOrPause(View view) {
- final ImageButton imageButton = (ImageButton) viewif(mediaPlayer == null) { //实例化MediaPlayer//播放应用内//mediaPlayer = MediaPlayer.create(this, R.raw.love);mediaPlayer.start();//把图标修改为暂停的图标imageButton.setImageResource(android.R.drawable.ic_media_pause);//获取音乐的总时长int duration=mediaPlayer.getDuration();//设置进度条的最大值为音乐的总时长seekBar.setMax(duration);new MyThread().start();}});}else if(mediaPlayer.isPlaying()){mediaPlayer.pause();//把图标修改为播放的图标imageButton.setImageResource(android.R.drawable.ic_media_play);}else{mediaPlayer.start();//把图标修改为暂停的图标imageButton.setImageResource(android.R.drawable.ic_media_pause);}}
二. 手机内的音频文件
手机内得在清单文件中配置可阅读文件权限
- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE">
- uses-permission>public void isPlayOrPause(View view){final ImageButton
- imageButton= (ImageButton) view;if(mediaPlayer==null){//播放内存卡中音频文件mediaPlayer=new
- MediaPlayer();//设置类型mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);//设置音源try
- {mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/Music/f.mp3"));//准备一下(内存卡)mediaPlayer.prepare();}
- catch (IOException e) {e.printStackTrace();}mediaPlayer.start();//把图标修改为暂停的图标imageButton.setImageResource(android.R.drawable.ic_media_pause);//获取音乐的总时长int
- duration=mediaPlayer.getDuration();//设置进度条的最大值为音乐的总时长seekBar.setMax(duration);new
- MyThread().start();}else if(mediaPlayer.isPlaying()){mediaPlayer.pause();//把图标修改为播放的图标imageButton.setImageResource(android.R.drawable.ic_media_play);}else{mediaPlayer.start();//把图标修改为暂停的图标imageButton.setImageResource(android.R.drawable.ic_media_pause);}}三.网络上的音频文件网络权限
- <uses-permission android:name="android.permission.INTERNET" />
- public void isPlayOrPause(View view){final ImageButton imageButton= (ImageButton)
- view;if(mediaPlayer==null){//实例化MediaPlayer//设置类型mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);//设置音源try
- {//播放网络音乐mediaPlayer.setDataSource(this, Uri.parse("http://192.168.43.135/internet.mp3"));//准备(网络)mediaPlayer.prepareAsync();}
- catch (IOException e) {e.printStackTrace();}//监听:准备完成的监听mediaPlayer.setOnPreparedListener(new
- MediaPlayer.OnPreparedListener() {@Overridepublic void onPrepared(MediaPlayer
- mediaPlayer) {mediaPlayer.start();//把图标修改为暂停的图标imageButton.setImageResource(android.R.drawable.ic_media_pause);//获取音乐的总时长int
- duration=mediaPlayer.getDuration();//设置进度条的最大值为音乐的总时长seekBar.setMax(duration);new
- MyThread().start();}});}else if(mediaPlayer.isPlaying()){mediaPlayer.pause();//把图标修改为播放的图标imageButton.setImageResource(android.R.drawable.ic_media_play);}else{mediaPlayer.start();//把图标修改为暂停的图标imageButton.setImageResource(android.R.drawable.ic_media_pause);}}
音乐播放器由一 SeekBar 作为展示,他的进度随着音乐的播放而前进,当我们对它拖拽时音乐也会相对应
的前进,这时就需要一个线程对它进行操作,同时需要监听到他当前位置
- class MyThread extends Thread {@Overridepublic void run() {
- super.run();
- while (seekBar.getProgress() <= seekBar.getMax()) { //获取当前音乐播放的位置int currentPosition=mediaPlayer.getCurrentPosition();//让进度条动起来seekBar.setProgress(currentPosition);}}}seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {@Overridepublic void onProgressChanged(SeekBar seekBar, int i, boolean b) {}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {}@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {//获取拖动结束之后的位置int progress=seekBar.getProgress();//跳转到某个位置播放mediaPlayer.seekTo(progress);}});
就爱阅读 www.92to.com 网友整理上传, 为您提供最全的知识大全, 期待您的分享,转载请注明出处。
来源: