Demo entry 6355307

代码

   

Submitted by anonymous on Apr 13, 2017 at 15:44
Language: Java. Code size: 6.5 kB.

public class MusicTestActivity extends ListActivity {
//用来存放音乐文件路径
private ArrayList musiclist = new ArrayList();

//用来存放音乐文件名字 private ArrayList musicnamelist = new ArrayList(); //音乐路径.<常量> private final String MUSIC_PUTH = 

private TextView tv ; //音乐的进度条 private SeekBar musicBar; //过虑器 private MusicFilter mf;
//用来标记是否为播放状态 (0:初始状态,1:播放状态,2:暂停状态)
private int falg = 0 ;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mf = new MusicFilter();
//播放对象初始化
mediaPlayer = new MediaPlayer();
//调用音乐绑定方法
this.musicList();
//将5个按钮进行初始化
imageStop = (ImageButton)this.findViewById(R.id.imageStop);
// imagePause = (ImageButton)this.findViewById(R.id.imagePause); imageLast = (ImageButton)this.findViewById(R.id.imageLast); imageStart = (ImageButton)this.findViewById(R.id.imageStart); imageNext = (ImageButton)this.findViewById(R.id.imageNext); //获取系统声音管理器
audioManager
this.getSystemService(Context.AUDIO_SERVICE); =(AudioManager)
//获取系统声音的最大值
maxVolume
audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
//获取系统当前的声音值 大小
currentVolume
audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
//初始化音量拖动条
soundBar = (SeekBar)this.findViewById(R.id.soundBar);
//设置音量拖动条的最大值
soundBar.setMax(maxVolume);
//设置音量拖动条的当前值
soundBar.setProgress(currentVolume);
//时间显示控件初始化
tv = (TextView)this.findViewById(R.id.textView1);
//把音乐播放进度条进行初始化
musicBar =(SeekBar) this.findViewById(R.id.musicBar);
//调用listener方法
this.listener();
} = =
//递归....通过递归把sdcard里面所有的音乐文件中的路径和音乐名字分区保存到
(musiclist和musicnamelist)
private void showInfo(String path){

File f = new File(path);//先实现文件类对象 File [] fileList = f.listFiles(mf); if(fileList!=null){ for (int i = 0; i < fileList.length; i++) { if(fileList[i].isFile()){ musiclist.add(fileList[i].getAbsolutePath()); musicnamelist.add(fileList[i].getName()); }
if(fileList[i].isDirectory()){//判断是否是一个目录如果是就递归 showInfo(fileList[i].getPath());
}
}
}
}

private void musicList(){
//调用上面的递归方法.把sdcard里面的所有音乐文件的名字和路径分区保存到(musiclist和musicnamelist)这两个容器中
showInfo(MUSIC_PUTH); //1设置面板容器 2设置布局3音乐例表
ArrayAdapteradap=newArrayAdapter
(MusicTestActivity.this, R.layout.musicitem, musicnamelist);
//将适配器里面的数据添充到ListView(例表视图)中
this.setListAdapter(adap);
}

public String toTime(int time) {
time /= 1000;
int minute = time / 60;
int hour = minute / 60;
int second = time % 60;
minute %= 60;
return String.format(
}

private void playMusic(String path){
try {

mediaPlayer.reset();//先重置一下 mediaPlayer.setDataSource(path);//设置音乐文件的路径 mediaPlayer.prepare();//准备 mediaPlayer.setLooping(true);//循环播放 mediaPlayer.start();//开始播放

//设置音乐拖动度的当前进度初始值 musicBar.setProgress(mediaPlayer.getCurrentPosition()); //设置音乐拖动条的最大值 musicBar.setMax(mediaPlayer.getDuration());
//System.out.println(
//显示出来当前音乐的时间
tv.setText( toTime(mediaPlayer.getCurrentPosition()) + 
//当歌曲开始播放时.线程也开始运行
this.startProgressUpdate();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

private Handler mHandle = new Handler(){
public void handleMessage(Message msg) {
//对音乐显示时间每一秒钟付值一次
tv.setText( toTime(mediaPlayer.getCurrentPosition()) + 
//不断将音乐播放的位置赋值给MusicBar...
musicBar.setProgress(mediaPlayer.getCurrentPosition());
}
};
//申明一个线程类
public class th extends Thread{
//实例化此类的用户会转一个时间毫秒数进来付值给i
int i ;
//构造方法
public th(int i){
this.i = i;
}
//线程方法
public void run(){
while(true){
try {
this.sleep(i);
} catch (InterruptedException e) {
e.printStackTrace();
}
+ 
mHandle.sendEmptyMessage(0);
}
}
}
//开辟Thread 用于定期刷新SeekBar,改变音乐时间
public void startProgressUpdate(){
th t = new th(1000);//初始化线程类转入1000毫秒
t.start();//开启一个线程
}

//当用户返回时结束音乐并释放音乐对象
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){

//

// //音乐停止 mediaPlayer.stop(); //可以释放播放器占用的资源,一旦确定不再使用播放器时应当尽早调用它释放资源。 mediaPlayer.release();
//结束
// this.finish();
System.exit(0);
}
return true;
}

protected void onListItemClick(ListView l, View v, int position, long id) {

//获取到当前点击的音乐文件索引 this.currentListItem = position ; //调用playMusic方法进行音乐播放并传入音乐的文件路径 this.playMusic(musiclist.get(currentListItem) ) ; imageStart.setImageResource(R.drawable.pause); falg = 1; } private void listener(){ //音乐播放进度条的事件处理 musicBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { public void onStopTrackingTouch(SeekBar seekBar) { //把音乐播放进度条的当前位置 的值赋给mediaPlayer.. mediaPlayer.seekTo(seekBar.getProgress()); } public void onStartTrackingTouch(SeekBar seekBar) { } public void onProgressChanged(SeekBar seekBar, int progress,


} }); boolean fromUser) { //调声音大小拖动条的事件处理 soundBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { public void onStopTrackingTouch(SeekBar seekBar) { //System.out.println(
//System.out.println(
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, progress,1);
}
});

//1.为imageStart这个图片按钮添加一个单击事件 imageStart.setOnClickListener(new OnClickListener() { public void onClick(View v) { //用来标记是否为播放状态 (0:初始状态,1:播放状态,2:暂停状态) if( falg == 0 ){//0:初始状态 //调playMusic方法进行音乐 播放 MusicTestActivity.this.playMusic(musiclist.get(currentListItem)); } } //把播放状态的图片切换成暂停状态的图片 imageStart.setImageResource(R.drawable.pause); falg = 1 ; }else if(falg == 1){//1:播放状态 //暂停播放 mediaPlayer.pause(); //把暂停状态的图片切换成播放状态的图片 imageStart.setImageResource(R.drawable.start); falg = 2 ; }else if(falg == 2){//2:暂停状态 mediaPlayer.start();//播放 //把暂停状态的图片切换成播放状态的图片 imageStart.setImageResource(R.drawable.pause); falg = 1; }
);
//2.停止按钮进行事件处理()
imageStop.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
falg = 0 ;
imageStart.setImageResource(R.drawable.start);
mediaPlayer.seekTo(0);
//musicBar.setProgress(0);
mediaPlayer.stop();//停止
}
});

//4.下一首
imageNext.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
falg = 1 ;
imageStart.setImageResource(R.drawable.pause);
currentListItem = (currentListItem+1)%musiclist.size();
MusicTestActivity.this.playMusic(musiclist.get(currentListItem)); }
});
//5.上一首
imageLast.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
falg = 1 ;
imageStart.setImageResource(R.drawable.pause);
currentListItem
(currentListItem-1+musiclist.size())%musiclist.size();

MusicTestActivity.this.playMusic(musiclist.get(currentListItem)); }
});
}
}

This snippet took 0.01 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).