1.播放界面截图:
播放列表:
2.关键代码:
获取音乐列表(通过多媒体数据库中存储的的信息)(首先定义了一个Music类用于存储音乐文件的各种信息):
public Listgetmusics( Context context){ List musiclist=new ArrayList ();//定义一个music类型的列表 //定义一个游标,用来遍历音乐文件 Cursor cursor=context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER); if(cursor.moveToFirst()){ while(!cursor.isAfterLast()){ Music music=new Music(); int music_id=cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID));//音乐的ID int album_id=cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM_ID));//专辑的ID String album=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM));//专辑名称 String title=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE));//歌曲名称 String artist=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST));//歌手 double time=cursor.getDouble(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION))/60000; //音乐的播放时长,由于单位是毫秒所以除了60000,但暂时还没有以分:秒 形式显示出来 String url=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));//音乐文件的路径 String title_artist=title+"--"+artist; int isMusic=cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.IS_MUSIC)); if(isMusic!=0){ music.setMusic_id(music_id); music.setAlbum_id(album_id); music.setAlbum(album); music.setTitle(title); music.setArtist(artist); music.setTime(time); music.setUrl(url); music.setTitle_artist(title_artist); musiclist.add(music); } cursor.moveToNext(); } } return musiclist; } //设置数据适配器
SimpleAdapter adapter=new SimpleAdapter(getApplicationContext(),musiclist,R.layout.music_list,new String[]{"title_artist","album"},new int[]{R.id.title_artist,R.id.album}); lv.setAdapter(adapter);//绑定数据适配器
//为lv这个list设置监听器,并重写onItemClick方法,点击Item可以播放音乐
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView adapterView, View view, int i, long l) { play(mp3list.get(i).getUrl(),mediaplay);//mp3list.get(i).getURl(),是你点击的Item对应音乐的文件路径,play是自己定义的一个播放音乐的方法 } });
播放,暂停,上一首,下一首
ImageButton.OnClickListener listener = new ImageButton.OnClickListener() { public void onClick(View v) { switch (v.getId()) { case R.id.bt_last: //上一首 if (current_music > 0) { current_music = current_music - 1; mediaplay.reset(); play(mp3list.get(current_music).getUrl(), mediaplay); isrelease = false; start.setImageDrawable(getResources().getDrawable(R.drawable.paste)); if(mp3list.size()!=0){ music_name.setText(mp3list.get(current_music).getTitle()); artist_name.setText("-- "+mp3list.get(current_music).getArtist()+" --"); total_time.setText(mp3list.get(current_music).getFormatTime()); progressbar.setMax(mp3list.get(current_music).getTime()); } }else{ current_music = mp3list.size()-1; mediaplay.reset(); play(mp3list.get(current_music).getUrl(), mediaplay); isrelease = false; start.setImageDrawable(getResources().getDrawable(R.drawable.paste)); if(mp3list.size()!=0){ music_name.setText(mp3list.get(current_music).getTitle()); artist_name.setText("-- "+mp3list.get(current_music).getArtist()+" --"); total_time.setText(mp3list.get(current_music).getFormatTime()); progressbar.setMax(mp3list.get(current_music).getTime()); } } break; //播放,暂停 case R.id.bt_start: if(isrelease){ mediaplay.reset(); play(mp3list.get(current_music).getUrl(), mediaplay); isrelease=false; } if(!mediaplay.isPlaying()){ mediaplay.start(); ((ImageButton)v).setImageDrawable(getResources().getDrawable(R.drawable.paste)); }else { mediaplay.pause(); ((ImageButton) v).setImageDrawable(getResources().getDrawable(R.drawable.start)); } break; //下一首 case R.id.bt_next: if (current_music < mp3list.size()-1) { current_music = current_music + 1; mediaplay.reset(); play(mp3list.get(current_music).getUrl(), mediaplay); start.setImageDrawable(getResources().getDrawable(R.drawable.paste)); isrelease=false; if(mp3list.size()!=0){ music_name.setText(mp3list.get(current_music).getTitle()); artist_name.setText("-- "+mp3list.get(current_music).getArtist()+" --"); total_time.setText(mp3list.get(current_music).getFormatTime()); progressbar.setMax(mp3list.get(current_music).getTime()); } }else{ current_music = 0; mediaplay.reset(); play(mp3list.get(current_music).getUrl(), mediaplay); start.setImageDrawable(getResources().getDrawable(R.drawable.paste)); isrelease=false; if(mp3list.size()!=0){ music_name.setText(mp3list.get(current_music).getTitle()); artist_name.setText("-- "+mp3list.get(current_music).getArtist()+" --"); total_time.setText(mp3list.get(current_music).getFormatTime()); progressbar.setMax(mp3list.get(current_music).getTime()); } } break;
3.代码链接:
4.APK地址(文件后缀apk):
5.程序录屏链接: