对MediaPlayer,简易的音乐播放器
来源:互联网 发布:什么软件外卖货到付款 编辑:程序博客网 时间:2024/05/06 07:52
MediaPlayer 是用来播放音频,视频和流媒体的类
reset()重置MediaPlayer的对象,清空对象的所有设置。
setDataSource(path)设置播放文件的路径。
getDuration()获得播放文件的长度。
getCurrentPosition()获得播放的进度。
seekTo(int) 调节音频文件的播放进度。
prepare() 播放前需调用的方法。
start() bofang
package musicplayer;import java.io.File;import java.io.FilenameFilter;import java.io.IOException;import com.example.musicplayer.R;import android.app.AlertDialog;import android.content.DialogInterface;import android.media.MediaPlayer;import android.os.Bundle;import android.os.Handler;import android.util.Log;import android.view.KeyEvent;import android.view.View;import android.widget.ImageButton;import android.widget.SeekBar;import android.widget.TextView;import roboguice.activity.RoboActivity;import roboguice.inject.InjectView;public class MainActivity extends RoboActivity{@InjectView (R.id.musicname) TextView musicnameView;@InjectView (R.id.previous) ImageButton prebtn;@InjectView (R.id.playorstop)ImageButton playorsotpbtn;@InjectView (R.id.next) ImageButton nextbtn;@InjectView (R.id.seekBar1) SeekBar musicSeek;@InjectView (R.id.max) TextView max;@InjectView (R.id.current) TextView current;String [] musicFile;MediaPlayer mediaPlayer;int i;boolean isPlay=false;boolean ispause=false;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.musicplay);mediaPlayer=new MediaPlayer();//监听一首音乐结束后,自动播放下一首音乐mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {@Overridepublic void onCompletion(MediaPlayer mp) {i++;prepareMusic();playMusic();}});//拖动进度条,改变音乐的播放进度musicSeek.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {}@Overridepublic void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {if(fromUser){mediaPlayer.seekTo(progress);}}});//音频文件的路径File file=new File(InitActivity.musicDir);//过滤仅读取MP3格式的文件musicFile=file.list(new FilenameFilter() {@Overridepublic boolean accept(File dir, String filename) {return filename.endsWith(".mp3");}});musicnameView.setText(musicFile[0]);prepareMusic();//上一首音乐的按钮,prebtn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(i!=0){i--;}else{i=musicFile.length-1;}musicnameView.setText(musicFile[i]);prepareMusic();if(isPlay){playMusic();}}});
<span style="white-space:pre"></span>//下一首音乐的按钮nextbtn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(i<musicFile.length-1){i++;}else{i=0;}musicnameView.setText(musicFile[i]);prepareMusic();if(isPlay){playMusic();}}});
<span style="white-space:pre"></span>//播放按钮playorsotpbtn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(isPlay){playorsotpbtn.setImageResource(android.R.drawable.ic_media_play);mediaPlayer.pause();ispause=true;}if(!isPlay){playorsotpbtn.setImageResource(android.R.drawable.ic_media_pause);mediaPlayer.start();}if(isPlay){isPlay=false;}else{isPlay=true;}}});}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {switch (keyCode) {case KeyEvent.KEYCODE_BACK:new AlertDialog.Builder(this).setTitle("退出").setIcon(android.R.drawable.ic_dialog_alert).setMessage("是否退出程序").setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {finish();}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}}).create().show();break;default:break;}return true;}Handler handle=new Handler();/** * 每一秒,修改音乐当前播放时间,及改变进度条的进度 */public Runnable updateprogress=new Runnable() {@Overridepublic void run() {int currentvalue=mediaPlayer.getCurrentPosition();musicSeek.setProgress(currentvalue);int minute=(int)((currentvalue/1000.0)/60.0);int second=(int)((currentvalue/1000.0)%60.0);current.setText(minute+":"+second);handle.postDelayed(updateprogress, 1000);}};/** * 播放音乐 */public void playMusic(){mediaPlayer.start();handle.post(updateprogress);}/** * 预备音乐文件 */public void prepareMusic() {mediaPlayer.reset();try {mediaPlayer.setDataSource(InitActivity.musicDir+"/"+musicnameView.getText().toString());mediaPlayer.prepare();} catch (IllegalArgumentException e) {e.printStackTrace();} catch (SecurityException e) {e.printStackTrace();} catch (IllegalStateException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}countTime();}/** * 获得音乐文件的播放总时间 */public void countTime(){int maxvalue=mediaPlayer.getDuration();int minute=(int)((maxvalue/1000.0)/60.0);int second=(int)((maxvalue/1000.0)%60.0);max.setText(minute+":"+second);}}
音乐播放器,首先得有音乐文件,才能播放。
所以得有一个文件路径,这里我只是简单的创建的了一个文件夹存放音乐文件。
在固定的路径下读取音乐文件然后播放
//音频文件的路径File file=new File(InitActivity.musicDir);//过滤仅读取MP3格式的文件musicFile=file.list(new FilenameFilter() {@Overridepublic boolean accept(File dir, String filename) {return filename.endsWith(".mp3");}});有了音乐文件后就可以用Mediapalyer加载文件然后播放。
/** * 预备音乐文件 */public void prepareMusic() {mediaPlayer.reset();try {mediaPlayer.setDataSource(InitActivity.musicDir+"/"+musicFile[i]);mediaPlayer.prepare();} catch (IllegalArgumentException e) {e.printStackTrace();} catch (SecurityException e) {e.printStackTrace();} catch (IllegalStateException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}countTime();}
public void playMusic(){mediaPlayer.start();handle.post(updateprogress);}
这是我第一次写博客,写的不好,希望大家能够指点我的缺漏
源码http://download.csdn.net/detail/u013387330/7883017
0 0
- 对MediaPlayer,简易的音乐播放器
- 使用MediaPlayer实现播放、暂停、继续和停止功能的简易音乐播放器
- MediaPlayer---音乐播放器
- 安卓使用MediaPlayer实现简易音乐播放器(应用内的音频文件)
- 安卓使用MediaPlayer实现简易音乐播放器(应用内的音频文件)
- 简易的音乐播放器
- 简易的音乐播放器
- MediaPlayer简单的音乐播放器
- 简易的音乐播放
- 简易音乐播放器
- 简易音乐播放器
- 简易音乐播放器
- MediaPlayer 音乐播放器进度条
- MediaPlayer(音乐播放器)
- android MediaPlayer简易播放器
- 音乐播放器的实现(简易版)
- Android的简易音乐播放器
- 一个简易的音乐播放器
- Unity3D游戏开发之基于Trigger的触发式动画设计
- SPRING指定加载本地xsd约束
- 分布式系统理解
- 【ACdream】1157 Segments cdq分治
- Building Your Project with Gradle
- 对MediaPlayer,简易的音乐播放器
- BZOJ 3629 JLOI2014 聪明的燕姿 约数和+DFS
- YARN AM与RM通信
- Hibernate内部缓存分析
- C#中使用DES和AES加密解密
- span 固定宽度,内容自适应容器自动换行
- 哈希查找
- Android 程序开发框架
- Leetcode 贪心 Jump Game