已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕 业 论 文题目 基于安卓 Android 的 MP3 播放器 的设计与实现 学生所在学院专 业学 号 学 生 姓 名 指 导 教 师 起 止 日 期 摘要I摘要Android 平台是 Google 针对移动设备所推出的一个操作平台,此平台是以Apache 开源许可的方式的进行发布的,所以使用该系统是免费的,所以开发人员能够在该平台上开发属于自己的应用。Android 平台是由“操作系统”、“中间件”、“用户界面”和“应用程序”组成的。它采用了软件堆层的架构设计,分为三部分,其中底层以 Linux 内核工作为基础,只提供基本功能来处理事件;中间层包括函数库和虚拟机,负责系统运行所必须的环境;最上层是各种应用程序,包括 Android 系统自带的通话、短信、相机等应用;应用软件则由其他自由开发人员或公司自行开发,然后发布到 Android 应用市场供用户下载。本文以 Android 开发平台为基础,首先简要介绍了 Android 平台的发展历程、以及当前国内外关于音乐播放器的发展现状。然后描述了 Android 开发平台的开发环境的搭建。之后便对本播放器做了一个详细的需求分析。再然后便开始描述本播放器所需使用的数据库的设计。然后对本播放器中的所有功能界面进行详细介绍和功能实现。关键词:Android 音乐播放器 Android 平台的开发与设计目录II目 录摘要 .I1. 概述 .11.1 项目背景 .11.2 国内外相关研究现状及发展趋势 .11.3 项目研究意义 .21.4 本文主要内容 .22. ANDROID 开发环境搭建 .33. 项目需求分析 .43.1 目的 .43.2 系统背景 .43.3 问题说明 .43.4 系统范围 .43.5 用例图及用例描述 .43.6 功能摘要 .63.7 假定与约束 .74. 数据库设计 .84.1 数据库概念设计 .84.2 数据表设计 .84.3 数据库的连接及操作类的编写 .115. 项目实现 .145.1 欢迎界面 .145.1.1 欢迎界面概述 .145.1.2 欢迎界面技术分析 .145.2 播放器主界面 .155.2.1 播放器主界面概述 .155.2.2 主界面技术分析 .16目录III5.3 歌曲列表 .175.3.1 歌曲列表概述 .175.3.2 歌曲列表实现 .175.4 网络歌曲榜单界面 .185.4.1 网络 歌曲榜单界面概述 .185.4.2 网络歌曲榜单界面实现 .185.5 歌曲详情界面 .245.5.1 歌曲详情界面概述 .245.5.2 歌曲详情界面实现 .255.6 歌曲播放界面 .265.6.1 歌曲播放界面概述 .265.6.2 歌曲播放界面实现 .265.6.3 歌词显示 .265.7 歌曲播放 .295.7.1 Service 简介 .295.7.2 播放服务 PlayService 实现 .315.8 播放控制 .346. 系统测试 .376.1 扫描音乐测试 .376.2 播放音乐测试 .376.3 切歌测试 .386.4 搜索歌曲测试 .39总结 .40致谢 .41参考文献 .42 毕业设计正文11. 概述1.1 项目背景在大学前三学年的学习生活中,我学会了 C+、C#、Java 这三门编程语言,正因为掌握了编程的基础,于是在大学第四学年中,我自学了 Android 开发,转眼就要毕业了,我想要用我所学到的知识去完成一个基于 Android 的音乐播放器开发来给我的大学画上一个圆满的句号。至于说为什么想到的会是一款基于 Android 的音乐播放器,我想说既然最近一学年在学习 Android 开发,那就应该用现阶段自己掌握得最熟练的技术去开发。至于为什么是音乐播放器,那就得说说音乐在平时生活中所占的比重了。音乐已经成为了人们生活中不可或缺的一部分了,闲暇无聊时听一首安静的慢歌、朋友聚会时在 KTV 高歌一曲,听歌成了习惯后,软件开发商发现了商机。各式各样的手机音乐播放器随之被推出。诚然,作为专业的软件应用开发商所开发的产品功能还是很强大的,不管是在音乐资源还是界面效果上都是很符合大众口味的。然而秉着虚心学习的态度,都不能抑制我想要开发一款属于自己的音乐播放器的想法。1.2 国内外相关研究现状及发展趋势目前国内较为流行的几款手机端音乐播放器主要有:网易云音乐、酷狗音乐、酷我音乐、多米音乐、虾米音乐、天天动听等,这些播放器大都有海量的曲库支持,专业的音效,炫酷的皮肤,详细的歌曲信息、专辑信息等等。因这些播放器功能大都雷同,因本次所开发的播放器使用了百度音乐提供的开放接口,所以此处仅以百度音乐为例介绍其特点:百度音乐 Android 版是一款专为手机定制的功能强大的音乐播放器,数量庞大的音乐资源提供试听下载,权威的推荐音乐榜单,新鲜的新歌推送,智能语音搜歌,登录账号收藏音乐,PC 端和手机即可同步显示。而对于国外的音乐播放器,因为接触得少,这里只介绍一款。Beoplayer,是一款丹麦的音乐播放器,Beoplayer 是一款免费软件,由丹麦的 Bang & Olufsen 公司所设计开发,这是一家全球顶级的数字设备产品提供商, 毕业设计正文2他们的产品设计理念是“独特高贵”,因此其公司的产品一直被音乐爱好者所喜爱。1.3 项目研究意义作为即将毕业的大学生,毕业设计是对大学学习过程中知识积累量的一次考验,而我也想知道在大学四年期间我到底有什么收获,所以我想要通过这次的毕业设计课题“基于 Android 的音乐播放器”来面对这场考验,并以一个令人满意的成绩完成考验。1.4 本文主要内容本次项目的主要研究内容是研究、分析和实现基于 Android 手机平台的音乐播放器,具体包括以下几个部分:(1)第一章介绍项目背景和国内外现状(2)第二章介绍 Android 平台的历史和开发环境的搭建(3)第三章介绍对播放器的需求分析(4)第四章介绍数据库的设计(5)第五章介绍项目详细的设计(6)第六章介绍系统测试 毕业设计正文32. Android 开发环境搭建Android Studio 是 Google 推出的 Android 开发工具,基于 IntelliJ IDEA 开发,类似于 Eclipse 等开发工具,Android Studio 集成了 Android 开发工具用于开发和调试,并且在 Android Studio 的安装包中已经封装了 Android SDK,所以只需要安装 Java JDK 和 Android Studio 即可开始 Android 应用的开发。在本次开发中,所采用的开发工具及其下载地址如下表 1-1 所示。表 1-1 Android 开发所需工具软件版本信息及下载地址软件名称 下载地址Java JDK/technetwork/java/javase/downloads/jdk8-downloads-2133151.htmlAndroid Studio/index.php/component/content/category/88-download将上述工具下载,首先安装 Java JDK,安装完成后配置环境变量的 Path 路径和 classPath 路径,打开 cmd 命令行工具,输入 java 和 javac 命令查看是否配置成功。安装 Android Studio 时,若本机上并没有 Android SDK,需要勾选上Android SDK 项,在安装完毕以后需要打开 Android SDK 并选在一些必须的Android API,只有这样才能使 Android Studio 成功编译 Android 项目。完成以上步骤,便可开始 Android 应用的开发了。 毕业设计正文43. 项目需求分析3.1 目的开发一款属于自己的个性化的音乐播放器。3.2 系统背景市场上各式各样的播放器让人眼花缭乱,让人选择起来却无从下手。本着学习交流的心态,在觉得自己有这种能力的情况下,开发一款自己的个性化的音乐播放器。3.3 问题说明音乐播放器是手机必不可少的一部分,一个好的播放器能极大的增加用户体验,同时,界面简洁,操作快捷也是一个播放器所应具备的。本播放器系统流程图如图 3.1 所示。3.4 系统范围音乐播放器主要为用户提供播放音频文件的功能,文件范围不限于本地文件,可播放或下载网络歌曲文件,适合所有喜爱音乐的人群使用。3.5 用例图及用例描述用例图如图 3.2 所示。 毕业设计正文5欢饮界面是否第一次打开数据库播放器主界面播放界面扫描音乐本地歌曲 网络歌曲开始结束图 3.1 系统流程图用户获取本地歌曲列表获取网络歌曲列表播放界面歌词显示歌曲专辑图片显示图 3.2 系统用例图 毕业设计正文6音乐播放器的用例详情描述如下:(1) 用例名称:获取本地歌曲列表。参与者:系统。目标:第一次使用系统时系统自动获取本地符合条件歌曲的信息并存入数据库,并生成歌曲列表供用户选择。基本事件流:打开播放器,播放器在欢迎界面中判断是否初次使用本系统。(2) 用例名称:获取网络歌曲列表。参与者:用户。目标:获取百度音乐提供的各类型的歌曲榜单,方便用户收听或下载。基本事件流:用户打开“发现”栏目,选择对应的榜单,系统请求服务器返回歌曲信息并以列表形式返回给用户。(3) 用例名称:播放。参与者:用户。目标:播放用户选定的歌曲。基本事件流:用户在歌曲列表中选择某项,系统在后台开始播放与该项对应的歌曲。(4) 用例名称:播放界面。参与者:用户。目标:用户打开对应的歌曲的播放界面。基本事件流:用户打开播放界面,系统显示当前播放歌曲的详细信息和播放进度。3.6 功能摘要软件详细功能如表 3-1 所示。 毕业设计正文7表 3-1 功能摘要序号 角色 功能1 用户1、 生成本地歌曲列表2、 播放本地或网络歌曲3、 下载网络歌曲4、 歌词同步显示5、 搜索网络歌曲6、 自动查找歌词7、 自动加载专辑图片3.7 假定与约束运行环境约束详情如表 3-2 所示。表 3-2 运行环境约束名称 详细要求操作系统 Android2.2 Android5.1数据库 SQLite3 毕业设计正文84. 数据库设计4.1 数据库概念设计根据上一章节所描述的需求分析可得到本播放器中所要使用的数据库实体为“歌曲”,且歌曲信息实体包括歌曲 id、名称、演唱者、专辑、歌词路径、歌曲路径、歌曲专辑图片等属性,其中歌曲 id 为数据表的主键。歌曲信息实体E-R 图如图 4.1 所示。歌曲歌曲 i d歌曲名称 歌手 歌曲路径所属专辑发行年代歌词路径歌曲文件大小专辑图片声道比特率是否为最爱图 4.1 歌曲 E-R 图4.2 数据表设计在对歌曲信息实体分析以后,就需要开始进行数据库表的设计了。在本播放器中,需要进行保存在数据库中的信息主要有“本地歌曲”、“最近下载任务”、“最爱歌曲”、“最近播放的歌曲”,而“最爱歌曲”已经在“本地歌曲”中设置属性判断,无需再创建数据表,所以本播放器中供需使用三个表:本地歌曲表 tb_local、下载任务表 tb_download、最近播放表 tb_lately。本地歌曲表 tb_local 毕业设计正文9tb_local 表用来负责存储由用户扫描出的音乐文件信息,信息包括由系统自动生成的歌曲编号,从歌曲文件中解析出的相关信息,具体字段定义见表 4-1。表 4-1 tb_local 表字段序号 字段 类型 大小 允许为空 备注1 _id INTEGER 4 自增编号 表主键2 song_id INTEGER 10 否 歌曲编号3 url TEXT 100 否 歌曲路径4 title TEXT 100 否 歌曲名称5 artist TEXT 100 是 歌手6 artist_id INTEGER 10 是 歌手编号7 album TEXT 100 是 歌曲专辑8 album_id INTEGER 10 是 歌曲专辑编号9 size INTEGER 10 是 歌曲文件大小10 duration INTEGER 10 是 歌曲播放时长11 album_image TEXT 100 是 歌曲专辑图片12 bitrate INTEGER 10 是 歌曲比特率13 lrc TEXT 100 是 歌词路径14 year INTEGER 10 是 年代15 channel TEXT 100 是 声道16 simple_rate TEXT 100 是 歌曲采样率17 comment TEXT 100 是 备注18 favorite INTEGER 10 否 是否为爱歌曲下载任务表 tb_downloadtb_download 负责保存用户下载的歌曲信息,因歌曲下载完毕后会将信息转存到 tb_local 表中,所以在 tb_download 中仅保存了歌曲编号信息,这个编号是从百度音乐接口获取的歌曲编号。tb_download 字段定义如表 4-2 所示。表 4-2 tb_download 表字段 毕业设计正文10序号 字段 类型 大小 允许为空 备注1 _id INTEGER 4 自增编号 表主键2 song_id INTEGER 10 否 歌曲编号最近播放表 tb_latelytb_lately 负责保存用户最近播放的 15 首歌曲,因播放的可能会是来源于网络的歌曲,所以此表中也会保存如 tb_local 中除却 favorite 的其他信息。字段定义如表 4-3 所示。表 4-3 tb_lately 字段序号 字段 类型 大小 允许为空 备注1 _id INTEGER 4 自增编号 表主键2 song_id INTEGER 10 否 歌曲编号3 url TEXT 100 否 歌曲路径4 title TEXT 100 否 歌曲名称5 artist TEXT 100 是 歌手6 artist_id INTEGER 10 是 歌手编号7 album TEXT 100 是 歌曲专辑8 album_id INTEGER 10 是 歌曲专辑编号9 size INTEGER 10 是 歌曲文件大小10 duration INTEGER 10 是 歌曲播放时长11 album_image TEXT 100 是 歌曲专辑图片12 bitrate INTEGER 10 是 歌曲比特率13 lrc TEXT 100 是 歌词路径14 year INTEGER 10 是 年代15 channel TEXT 100 是 声道16 simple_rate TEXT 100 是 歌曲采样率4.3 数据库的连接及操作类的编写 毕业设计正文11在数据库连接及操作类中,主要包括对数据库的连接及对数据库的增删修改操作,要连接到 SQLite 数据库,需要自定义工具类去继承 SQLiteOpenHelper抽象类,并实现其方法。此处先贴出代码再做介绍。public class DataBaseHelper extends SQLiteOpenHelper private static final String DATABASE_NAME = music.db;private static final int VERSION = 1;public DataBaseHelper(Context context)this(context,DATABASE_NAME,null,VERSION);public DataBaseHelper(Context context,String name,SQLiteDatabase.CursorFactory cursorFactory,int version)super(context,name,cursorFactory,version);Overridepublic void onCreate(SQLiteDatabase db) db.execSQL(MyMusicTable.CREATE_TABLE_SQL_LOCAL);db.execSQL(MyMusicTable.CREATE_TABLE_SQL_DOWNLOAD);db.execSQL(MyMusicTable.CREATE_TABLE_LATELY);Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 在 DatabaseHelper 类中,通过实现构造方法去创建数据库,然后在onCreate 方法中执行创建表的语句,当进行应用更新时,再在 onUpgrade 方法中进行更新数据库的操作。然而到此还并没有完成数据库的连接。可以看到,在构造方法中使用到了 Context 对象,可以想到要连接到数据库,就需要传入这个 Context 对象,这就需要在 Activity 中对该数据库连接对象 毕业设计正文12进行实例化了。同时,为了使代码更加简洁,此处将数据库的其他操作方法写到另一个操作类 MyDatabase 中。在 MyDatabase 中,通过实例化 DataBaseHelper 对象 dbHelper,调用其父类中的方法 getWiteableDatabase 获取一个 SQLiteDatabase 实例,通过这个实例的方法就可以进行数据库的增删修改操作了。查询操作在本播放器中,并没有针对某项数据进行查询,而是查询某表中所有的歌曲信息并保存到一个游标集 Cursor 中,然后可通过此表中所拥有的字段再获取一个信息集合 List。下面代码为根据表名称获取一个 Cursor 对象。public Cursor getTable(String tableName)SQLiteDatabase db = dbHelper.getReadableDatabase();return db.query(tableName, null, null, null, null, null, null);插入操作此处仅以向本地歌曲表中插入一项数据为例介绍如何插入数据。要向本地歌曲表中插入数据,需要传入一个 Music 对象,并获取 SQLiteDatabase 的可写对象,然后执行此对象的 insert 方法即可,代码如下:public long insertToSong(String tableName,Music music)SQLiteDatabase db = dbHelper.getWritableDatabase();ContentValues values = new ContentValues();values.put(MyMusicTable.SONG_ID,music.getSong_id();values.put(MyMusicTable.URL,music.getUrl();values.put(MyMusicTable.TITLE,music.getTitle();values.put(MyMusicTable.ARTIST,music.getArtist();values.put(MyMusicTable.ARTIST_ID,music.getArtist_id();values.put(MyMusicTable.ALBUM,music.getAlbum();values.put(MyMusicTable.ALBUM_ID,music.getAlbum_id();values.put(MyMusicTable.SIZE,music.getSize(); 毕业设计正文13values.put(MyMusicTable.DURATION,music.getDuration();values.put(MyMusicTable.ALBUM_IMAGE,music.getAlbumImage();values.put(MyMusicTable.BITRATE,music.getBitrate();values.put(MyMusicTable.LRC, music.getLrc();values.put(MyMusicTable.SAMPLE_RATE,music.getSampleRate();values.put(MyMusicTable.COMMENT,music.getComment();values.put(MyMusicTable.FAVORITE,music.getFavorite();return db.insert(tableName,null,values);更新操作要更新数据表中数据,可直接调用 SQLiteDatabase 对象的 update 方法。public int update(String tableName,ContentValues cv,String whereClause,String args)SQLiteDatabase db = dbHelper.getWritableDatabase();return db.update(tableName,cv,whereClause,args);其中 tableName 表示需要更新的表的名称, cv 表示一个键值对,其键为数据表中需要修改的字段,值则为更改后的值,whereClause 等价于 sql 更新语句中的 where 条件, args 数组表示 whereClause 中的“?”的值。删除操作和更新操作一样,要删除某项数据可直接调用 SQLiteDatabase 对象的delete 方法。public int delete(String table,String whereClause,String args)SQLiteDatabase db = dbHelper.getWritableDatabase();return db.delete(table, whereClause, args); 毕业设计正文145. 项目实现从本章节开始,便要逐步开始播放器系统代码的编写了,这其中包括界面UI 的设计,各个功能的实现。但因代码过多,此处便只贴出部分功能代码,至于 UI 界面的设计等代码,请查阅源文件。5.1 欢迎界面5.1.1 欢迎界面概述一个应用是很需要一个欢迎界面的,一方面给用户表明应用的性质,一方面又可在欢迎界面的显示过程中去获取应用配置信息。在本应用的欢迎界面SplashActivity 中,通过显示一张能够表明主题的图片的同时,去获取应用的基本配置信息,如是否第一次打开应用,歌曲的播放模式,联网方式,是否打开了摇一摇切歌等信息。5.1.2 欢迎界面技术分析在执行这些可能比较耗时的操作时,我们需要另开辟一个线程去执行这些方法,在执行完毕后,通过 Handler 的消息处理机制,发送消息给主线程去执行接下来的操作。在这个另开辟的线程中执行两个方法,当启动此应用时即开始执行这个 StartThread 线程,其流程图如图 5.1 所示。部分代码如下:class StartThread implements RunnableOverridepublic void run() try Thread.sleep(2000); catch (InterruptedException e) e.printStackTrace();open(); 毕业设计正文15欢饮界面是否第一次使用扫描音乐界面播放器主界面是否图 5.1 欢迎界面流程图5.2 播放器主界面5.2.1 播放器主界面概述本应用的设计基本使用 Activity 和 Fragment 的方式进行界面的搭配,除却欢迎界面 SplashActivity,主界面 MainActivity 便成了其它的 Fragment 的父容器。此外,为方便数据的统一使用,SplashActivity 和 MainActivity 均继承自自定义的 BaseActivity,减少了代码的冗杂量。主界面上功能流程图如图 5.2 所示。在 MainActivity 中,包括三个界面:顶部的导航界面,底部的当前播放信息界面,中部则是一个 ViewPager 组件,用于放置“我的”(LocalFragment)和“榜单”(NetFragment )两个 Fragment。初始状态下显示“我的”界面,当点击上方的“榜单”或向左滑动时,则可显示网络歌曲推荐榜单界面。主界面效果如图 5.3 所示。“榜单”界面如图 5.4 所示。在主界面中可看到,LocalFragment 通过一个 GridView 组件显示播放器记录的部分信息,通过读取存于数据库中的歌曲信息,在初始化 GridView 设置其适配器时将数据显示于界面上。 毕业设计正文165.2.2 主界面技术分析在本应用中,使用到了一个第三方的开源库 SlidingMenu,其效果是可展示一个侧滑菜单,如常用的手机 QQ 的菜单样式。通过使 BaseActivity 继承其中的 SlidingFragmentActivity,即可获得这一个菜单对象,再在 MainActivity 的onCreate 方法中初始化这个对象。效果如图 5.5 所示。初始化 menu 的代码如下:private void initMenu()menu = getSlidingMenu();menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); menu.setMode(SlidingMenu.LEFT); menu.setBehindOffsetRes(R.dimen.content_width); menu.setShadowDrawable(R.drawable.shadow); menu.setShadowWidthRes(R.dimen.menu_shadow);MenuFragment menuFragment = new MenuFragment();getSupportFragmentManager().beginTransaction().replace(R.id.container_menu, menuFragment).commit();主界面 M a i n A c t i v i t y本地歌曲界面L o c a l F r a g m e n t用户选择网络歌曲界面N e t F r a g m e n t本地歌曲列表M u s i c L I s t F r a g m e n t网络歌曲榜单图 5-2 主界面功能流程图 毕业设计正文17图 5.3 播放器主界面图 图 5.4 榜单界面图 图 5.5 菜单界面5.3 歌曲列表5.3.1 歌曲列表概述歌曲列表主要用于显示用户选择的歌单的列表,如本地音乐、我的最爱、最近播放,界面包括上方的导航信息和其余部分的歌曲信息列表,当用户点击任何一首歌曲即可播放此歌曲,在每一项歌曲的列表项中都对应有菜单选项,用户可根据所需对歌曲进行移除、查看详情等操作。歌曲列表界面上的活动图如图 5.6 所示。5.3.2 歌曲列表实现根据界面的样式进行 UI 设计,在 MusicListFragment 中找出歌曲列表ListView,为了给单项歌曲增加菜单选项,我们需要自定义列表项的布局,然后在 ListView 的 Adapter 中给每个菜单项添加事件。此外,为了实现单机歌曲项播放歌曲,我们需要给这个 ListView 添加 OnItemClick 事件。除此之外,为了更方便的实现歌曲项中的菜单点击事件,我们需要定义一个回调接口OnLocalMusicListMenuClick,并使本界面对应的 Fragment 类 MusicListFragment实现这个接口中的方法,界面截图如 5.7 所示。 毕业设计正文18图 5.6 歌曲列表活动图 图 5.7 歌曲列表界面5.4 网络歌曲榜单界面5.4.1 网络歌曲榜单界面概述网络歌曲榜单界面 NetFragment 主要用来显示由百度音乐提供的网络歌曲热门榜单,如图 5.8 所示,因其接口提供数据有限,本播放器仅提供了图左侧的的部分推荐榜单,右侧则用于显示对应榜单的前 50 首歌曲,同样,这也是播放器主界面的内容,是主界面布局中的ViewPager 的一个 Fragment。图 5.8 网络歌曲榜单5.4.2 网络歌曲榜单界面实现因为在 NetFragment 的界面中同样是在两侧各放置一个 Fragment 并实现回调接口,所以需要在 NetFragment 的布局文件中为这两个 Fragment 留出空间以便于放置。此处就介绍这两个 Fragment:ListMenuFragment 和 ListFragment。选择歌曲将歌曲信息传入播放服务开始播放 毕业设计正文19榜单选项界面 ListMenuFragment此 Fragment 内容相对简单,仅需要在布局中放置所需的按钮并添加相应的点击事件即可,为提高代码的简洁性,特为此类声明了一个回调接口,以便在NetFragment 中直接调用这些方法,接口声明如下:public interface OnListMenuClickListenervoid onListMenuClick(View view);在接口的 onListMenuClick 方法中传入一个 View 参数,在 NetFragment 中根据此 View 的 ID 判断是点击了哪个按钮,并执行相应的事件方法,方法代码如下:public void onListMenuClick(View view) if (listFragment = null)return;switch (view.getId()case R.id.btn_list_menu_newMusic:listFragment.updateList(GetMusicList.MUSIC_LIST_NET);break;case R.id.btn_list_menu_hotMusic:listFragment.updateList(GetMusicList.MUSIC_LIST_HOT);break;case R.id.btn_list_menu_europeMusic:listFragment.updateList(GetMusicList.MUSIC_LIST_EUROPE);break;case R.id.btn_list_menu_classicalMusic:listFragment.updateList(GetMusicList.MUSIC_LIST_CLASSICAL_OLD);break;case R.id.btn_list_menu_lovewMusic:listFragment.updateList(GetMusicList.MUSIC_LIST_LOVE_SONG);break; 毕业设计正文20case R.id.btn_list_menu_movieMusic:listFragment.updateList(GetMusicList.MUSIC_LIST_MOVIE);break;case R.id.btn_list_menu_ne
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026-2031中国燃气灶市场发展前景预测报告
- 1.4 绝对值教学设计-2025-2026学年初中数学华东师大版2024七年级上册-华东师大版2024
- 中控操作员安全操作培训课件
- 国家电网公司华中分部2025年下半年应届高校毕业生招聘(第一批)【3人】事业单位易考易错模拟试题(共500题)试卷后附参考答案
- 债权融资专员岗位竞聘方案
- 四川行政学院事业单位2025年下半年招考易考易错模拟试题(共500题)试卷后附参考答案
- 公共卫生应急管理体系建设方案
- 区块链开发者性能优化方案
- 产品设计流程及关键阶段记录手册
- 厦门市非税收入管理中心非在编雇用人员招考易考易错模拟试题(共500题)试卷后附参考答案
- 2025民航飞行员招飞心理测试题及答案
- 2025中小学学校教材教辅征订管理工作方案
- 95式自动步枪对不动目标的射击动作要领上课讲义
- 企业会计准则实施典型案例
- ASME B16.10-2022 阀门结构长度(中英文参考版)
- 围墙大门施工方案
- 08第八章时间序列分析
- 《现代农业发展趋势》课件
- 《中国心力衰竭诊断和治疗指南2024》解读
- GB/T 45019-2024道路用玄武岩纤维沥青混合料
- 2024年中国阳台市场调查研究报告
评论
0/150
提交评论