1600802002
2024-06-02 12:08:57
1.播放界面截图:
播放列表:
2.关键代码:
获取音乐列表(通过多媒体数据库中存储的的信息)(首先定义了一个Music类用于存储音乐文件的各种信息):
public List<Music> getmusics( Context context){ List<Music> musiclist=new ArrayList<Music>();//定义一个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.代码链接:https://git.coding.net/ck__/Android_finalwork.git
4.APK地址(文件后缀apk):https://git.coding.net/ck__/Android_finalwork.git
5.程序录屏链接:https://www.bilibili.com/video/av39817213/
转载于:https://www.cnblogs.com/ck03/p/10105319.html
1600802002相关推荐
- 软件工程—团队作业1
软件工程-团队作业1 团队称号:Thanos (灭霸,超叼的一个动漫人物) 团队成员: 队长 成凯 1600802002 博客链接: http://www.cnblogs.com/ck03/ 党 ...
- android 大作业
一.团队成员 姓名 学号 博客地址 班级 成凯 1600802002 http://www.cnblogs.com/ck03/ 161 党康 1600802004 http://www.cnblogs ...
最新文章
- Android线程之主线程向子线程发送消息
- 【转】体验 Silverlight 5 3D开发之环境搭配篇
- 百度地图api 去左下角百度地图logo的方法
- window7下nginx配置文件详解
- 2014第3周四杂记
- IIS 崩溃的后的感受
- Linux下遍历目录下的文件
- TCP快速重传为什么是三次冗余ack
- cad通过钢筋大样生成钢筋明细表插件_如何设计一套建筑电气CAD施工图?看完你就知道!涨知识...
- 读写分离 mysql_详解MySQL实现主从复制过程及mycat读写分离步骤
- Codeforces.1051G.Distinctification(线段树合并 并查集)
- 上海道宁联合德国think-cell,为您提供更便捷高效的PowerPoint插件
- ray 渲染基本使用流程
- 谈谈本人做广告联盟的经验
- 世界上最流行的开放源代码冲锋枪AK-47
- 明港镇计算机培训班,平桥区建筑工匠培训班在明港新集村开班
- 蓝拓扑便携式分析仪驱动程序_拔出便携式USB硬盘驱动器会损坏计算机吗?
- android 4.4 获取图片主色调,Android Lollipop:使用Palette抽取图片主色调
- 错误计算机怎么打开,例举电脑无法开机出现a disk read error错误怎么办呢?
- python变量的使用_python变量赋值的几种形式细节
热门文章
- 5G:这次中国说了算!
- linux学习之VNC远程控制(一)
- 1.mongodb在centos上面安装
- 一位39岁程序员的困惑:知道得越多编程越慢怎么办?
- 搞死了 报错【libc-client.a: could not read symbols: ...
- asp.net用url重写URLReWriter实现任意二级域名 (转)
- mongodb 结果二次调用_mongodb慢查询记录
- python多行字符串输入_python中怎么输入多行字符串
- 分享6 个值得收藏的 Python 代码
- Python是世界上最好的语言,你不服不行!(附资料)