音乐播放器.docx
- 文档编号:24834644
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:16
- 大小:17.62KB
音乐播放器.docx
《音乐播放器.docx》由会员分享,可在线阅读,更多相关《音乐播放器.docx(16页珍藏版)》请在冰豆网上搜索。
音乐播放器
//音乐列表界面,点击播放音乐
packagecom.example.musicplayer;
importjava.util.ArrayList;
importjava.util.List;
importlist.MyList;
importadapter.NaAdapter;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.database.Cursor;
importandroid.os.Bundle;
importandroid.provider.MediaStore;
importandroid.view.View;
importandroid.widget.AdapterView;
importandroid.widget.AdapterView.OnItemClickListener;
importandroid.widget.ListView;
importcom.example.bean.Native;
publicclassMainActivityextendsActivity{
ListViewmylistview;
privateStringtitle;
privateStringartist;
privateintduration;
privateStringurl;
NaAdapteradapter;
//publicstaticList
@Override
protectedvoidonCreate(BundlesavedInstanceState){
//TODOAuto-generatedmethodstub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
privatevoidinit(){
//TODOAuto-generatedmethodstub
mylistview=(ListView)findViewById(R.id.mylistview);
getmusicdata();
NaAdapteradapter=newNaAdapter(this,MyList.list);
mylistview.setAdapter(adapter);
mylistview.setOnItemClickListener(newOnItemClickListener(){
@Override
publicvoidonItemClick(AdapterView
>arg0,Viewarg1,intarg2,
longarg3){
//TODOAuto-generatedmethodstub
Nativena=MyList.list.get(arg2);
Intentintent=newIntent(MainActivity.this,PlayerActivity.class);
intent.putExtra("na",na);
intent.putExtra("123",arg2);
startActivity(intent);
}
});
}
/*
*获取本地的音乐
*/
privatevoidgetmusicdata(){
//获得ContextResolver()对象调用query方法查询
Cursorcursor=getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
null,null,null,null);
while(cursor.moveToNext()){
title=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE));
artist=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST));
duration=cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION));
//获取歌曲的大小
longsize=cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE));
url=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));
Nativemusic=newNative(title,duration,size,artist,url);
MyList.list.add(music);
}
}
}
//播放音乐的界面
packagecom.example.musicplayer;
importjava.io.IOException;
importjava.util.ArrayList;
importjava.util.List;
importjava.util.Timer;
importjava.util.TimerTask;
importlist.MyList;
importcom.example.bean.Native;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.media.MediaPlayer;
importandroid.media.MediaPlayer.OnCompletionListener;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.os.Message;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.AdapterView;
importandroid.widget.AdapterView.OnItemClickListener;
importandroid.widget.Button;
importandroid.widget.ImageView;
importandroid.widget.ListView;
importandroid.widget.SeekBar;
importandroid.widget.SeekBar.OnSeekBarChangeListener;
importandroid.widget.TextView;
publicclassPlayerActivityextendsActivity{
privateNativena;
privateImageViewiv_start;
privateImageViewiv_pause;
privateImageViewiv_stop;
privateTextViewup;//上一曲
privateTextViewnext;//下一曲
privateMediaPlayerm;//音乐播放器
privateintn=0;//播放顺序
privateSeekBarsb_progress;//拖动条
privateTimertimer;//时间器
privateHandlerhandler=newHandler(){
publicvoidhandleMessage(Messagemsg){
super.handleMessage(msg);
if(msg.arg1==0){
sb_progress.setProgress(m.getCurrentPosition());
}
//if(m.getCurrentPosition()==m.getDuration()){
//timer.cancel();
//}else{
//sb_progress.setProgress(m.getDuration());
//}
}
};
//privateMusicmusic;
privateSeekBarsb_lound;//音量
privateTextViewmusic;
privateintposition;
privateTextViewbt_back;
//privateList
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_player);
init();
}
publicvoidinit(){
//找对象
bt_back=(TextView)findViewById(R.id.bt_back);
music=(TextView)findViewById(R.id.music);
iv_start=(ImageView)findViewById(R.id.start);
iv_pause=(ImageView)findViewById(R.id.pause);
iv_stop=(ImageView)findViewById(R.id.stop);
up=(TextView)findViewById(R.id.up);
next=(TextView)findViewById(R.id.next);
sb_progress=(SeekBar)findViewById(R.id.sb_progress);
sb_lound=(SeekBar)findViewById(R.id.sb_lound);
m=MediaPlayer.create(PlayerActivity.this,R.raw.music1);
//接收传来的数据
Intentin=getIntent();
na=(Native)in.getSerializableExtra("na");
//设置歌曲名
music.setText(na.getTitle());
position=in.getIntExtra("123",0);
try{
if(m!
=null){
m.pause();
}
//创建mediaplayer对象,并加载音乐资源
m=newMediaPlayer();
//加载sdcard音乐路径
m.setDataSource(na.getUrl());
m.prepare();
m.start();
seek();
//加监听,当歌曲播放完毕后自动播放下一曲
m.setOnCompletionListener(newOnCompletionListener(){
publicvoidonCompletion(MediaPlayermp){
musicAuto();
}
});
}catch(IllegalArgumentExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(SecurityExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IllegalStateExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
bt_back.setOnClickListener(l);
iv_start.setOnClickListener(l);
iv_pause.setOnClickListener(l);
iv_stop.setOnClickListener(l);
up.setOnClickListener(l);
next.setOnClickListener(l);
////给拖拽条加监听
sb_progress.setOnSeekBarChangeListener(newOnSeekBarChangeListener(){
publicvoidonStopTrackingTouch(SeekBarseekBar){
m.seekTo(seekBar.getProgress());
}
publicvoidonStartTrackingTouch(SeekBarseekBar){
}
publicvoidonProgressChanged(SeekBarseekBar,intprogress,
booleanfromUser){
}
});
//拖拽进度条改变音量
sb_lound.setOnSeekBarChangeListener(newOnSeekBarChangeListener(){
@Override
publicvoidonStopTrackingTouch(SeekBarseekBar){
}
@Override
publicvoidonStartTrackingTouch(SeekBarseekBar){
}
//调节音量
publicvoidonProgressChanged(SeekBarseekBar,intprogress,
booleanfromUser){
//此方法有两个floa类型参数左右声道的音量音量大小的增幅为0——1之间
//max已设置为10
m.setVolume((float)progress/100,(float)progress/100);
}
});
}
publicvoidseek(){
if(timer!
=null){
timer.cancel();
}
sb_progress.setMax(m.getDuration());
timer=newTimer();
timer.schedule(newTimerTask(){
@Override
publicvoidrun(){
//TODOAuto-generatedmethodstub
handler.sendEmptyMessage(0);
}
},0,100);
}
//自动播放下一曲
publicvoidmusicAuto(){
m.stop();
position++;
if(position==(na.getUrl().length())){
position=0;
}
//设置歌曲名
music.setText(MyList.list.get(position).getTitle());
//music=mlist.get(n);
m=newMediaPlayer();
try{
m.setDataSource(MyList.list.get(position).getUrl());
m.prepare();
//sb_progress.setMax(m.getDuration());
seek();
m.start();
m.setOnCompletionListener(newOnCompletionListener(){
publicvoidonCompletion(MediaPlayermp){
musicAuto();
}
});
}catch(IllegalArgumentExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(SecurityExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IllegalStateExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
OnClickListenerl=newOnClickListener(){
publicvoidonClick(Viewv){
switch(v.getId()){
caseR.id.bt_back:
//返回
finish();
break;
caseR.id.start:
//开始播放
m.start();
break;
caseR.id.pause:
//暂停
if(m.isPlaying()){
m.pause();
}else{
m.start();
}
break;
caseR.id.stop:
//销毁
m.stop();//stop以后就会销毁mediaplayer对象,再点stop也没用
break;
caseR.id.up:
//上一首v
m.stop();
position--;
if(position==-1){
position=MyList.list.size();
}
//设置歌曲名
music.setText(MyList.list.get(position).getTitle());
m=newMediaPlayer();
//加载sdcard音乐路径
try{
m.setDataSource(MyList.list.get(position).getUrl());
m.prepare();
//sb_progress.setMax(m.getDuration());
seek();
m.start();
//给多媒体加监听(音乐播放完后)
m.setOnCompletionListener(newOnCompletionListener(){
publicvoidonCompletion(MediaPlayermp){
musicAuto();//用了个递归
}
});
}catch(IllegalArgumentExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(SecurityExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IllegalStateExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
break;
caseR.id.next:
//下一首
//m.stop();//先销毁上一个MediaPlayer
musicAuto();
break;
}
}
};
}
//封装类
packagecom.example.bean;
importjava.io.Serializable;
publicclassNativeimplementsSerializable{
privateStringtitle;
privatelongduration;
privatelongsize;
privateStringartist;
privateStringurl;
privatebooleannative_guanli_item_ck
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 音乐 播放