
[摘要]在社会节奏持续加速的当代社会,精神解压需求呈现指数级增长态势,音乐作为数字化时代的情绪调节媒介,其播放器的功能创新和人机交互体验优化逐渐成为研发重点。本文聚焦于研发基于Android生态的音乐播放系统,着力构建集音频播放、智能推荐与场景适配于一体的移动端解决方案。技术实现层面采用Java编程语言与SQLite轻量级数据库架构,基于Android Studio集成开发环境构建系统框架。研发周期严格遵循软件工程规范,依次推进需求分析、系统设计、系统实现与系统测试四大环节:需求分析阶段明确了播放器的基本控制、友好性设置及可行性;系统设计涵盖功能模块划分、数据库设计及人机交互界面设计;核心功能模块设计集成了本地音乐播放、歌单管理、播放控制、个性化收藏系统及可扩展的在线音乐接口;系统实现重点说明了本地音乐查询、播放控制、歌单创建与管理、定时播放及倍速播放等功能的技术实现。经多机型适配测试,系统在稳定性、响应速度及界面交互等维度均达到设计预期。本项目设计的音乐播放器手机APP不仅构建了模块化移动音乐播放解决方案,也为移动音乐应用的开发提供了参考,具有一定的实际应用价值。
[关键字]音乐播放;音乐播放器;Android系统;手机APP;歌曲
Design and Implementation of a Music Player Mobile Application
[Abstract]With the acceleration of the pace of life, people's demand for mental relaxation is increasing, and music as an effective way to reduce stress, the function and user experience of its player have become the focus of attention. The purpose of this study is to design and implement a multi-functional music player APP based on the Android platform to meet the needs of users for music playback, management and personalization. The system was developed using the Java language and the SQLite database, and was implemented through Android Studio tools. The research covers the stages of requirements analysis, system design, function implementation and testing. In the demand analysis, the basic control, friendliness setting and feasibility of the player are clarified. The system design includes functional module division, database design and interface layout optimization. The core function modules include local music playback, user playlist management, recent play records, music collection, and online music support (reserved interface). The implementation part focuses on the technical implementation of local music query, playback control, playlist creation and management, timed playback, and double-speed playback. The test results show that the system runs stably on different Android devices, all functions are normal, and the user experience is good. In this study, an Android music player with perfect functions and friendly interface was successfully developed, which provides a reference for the development of mobile music applications and has certain practical application value.
[Keywords] music player; Android; Java
目录
第1章 前言 1
1.1 研究背景与意义 1
1.2 国内外研究现状 1
1.2.1 国外研究现状 1
1.2.2 国内研究现状 3
1.3 主要研究内容 4
1.3.1 系统的功能 4
1.3.2 系统的特点 5
1.4 开发平台与框架 5
1.4.1 开发平台 5
1.4.2 框架 5
1.5 开发技术 5
1.5.1 Java语言 5
1.5.2 Android studio介绍 6
1.5.3 ESM6802 Android版本工作分布图 6
1.5.4 Android SDK介绍 7
1.6 论文组织结构 8
第2章 系统分析 10
2.1 可行性分析 10
2.1.1 经济可行性 10
2.1.2 社会可行性 10
2.1.3 技术可行性 10
2.2 用例分析 11
2.3 系统流程分析 11
2.3.1 系统开发流程 11
2.3.2 业务流程分析 11
2.5 需求分析 12
2.5.1 功能需求 12
2.5.2 界面需求 15
2.5.3 性能需求 16
第3章 系统设计 16
3.1 系统整体架构设计 17
3.2 系统总体功能结构设计 17
3.3 功能模块设计 18
3.3.1 注册流程模块 18
3.3.2 登录流程模块 19
3.3.3 我的音乐模块 19
3.3.4 本地音乐查询模块 20
3.3.5 添加到我喜欢的音乐 21
3.3.6 最近播放模块 22
3.4 数据库设计 22
3.4.1 概念结构设计 22
3.4.2 逻辑结构设计 24
3.5 关键技术难点与解决方案 25
第4章 系统实现 1
4.1 开发环境与工具 1
4.2 登录模块 1
4.3 系统推荐模块 2
4.4 歌曲搜索模块 3
4.5 音乐播放器模块 5
4.6 电子书听书播放模块 6
第5章 系统测试 8
5.1 系统测试的目的及意义 8
5.2 测试方法及环境 9
5.3 测试用例与测试过程 9
5.3.1 功能黑盒测试用例 9
5.3.2 功能白盒测试用例 10
5.4 测试结果分析 12
第6章 总结与展望 13
6.1 研究成果总结 13
6.2 研究不足与局限性 13
6.3 未来工作展望 13
参考文献 15
致谢 16
第1章 前言
1.1 研究背景与意义
如今,我们的工作和生活变得更加的局促。因此,迫切地想要找到一种更好的自我释放的方法和方法,根据有关资料显示,听一曲音乐就能很好地减轻我们的精神压力,因此,一款优秀的音乐播放器的研发与实施对我们来说就显得尤为重要。本文的目的是为了让使用者拥有一款能够直接播放主流歌曲的音乐播放器。它的核心功能就是播放音乐文件,在音乐播放过程中,可以进行播放、暂停、停止、上一首歌、下一首歌等各种操作,而且在音乐播放器中,我们还可以对歌曲的喜好进行管理,播放名单进行分类查看,具有很高的视觉效果,可以让使用者获得更高的使用体验,而且使用起来也非常的便捷。
大家都知道,手机在我们的日常生活中起着非常大的作用,而手机的音乐播放功能也成为了消费者在选购时考虑的一个问题,由此可见,现代社会对于音乐输出的重视程度,功能越强的移动音乐软件就越受消费者的青睐。常规的音乐播放器不方便随身,而且功能也很普通,而移动音乐播放器既轻便又方便,跟普通的音乐播放器比较,它的性能和普通的音乐播放器差不多,但在其它方面都不会比普通的播放器差,而且它还具备了线上听音乐的能力,该课题的实施为手机音乐播放软件的研发带来了更大的发展空间,具有很好的应用前景。
在手机的应用中,音乐播放器是必不可少的,尤其是一款专门的音乐播放软件,环顾四周,市面上的每一部手机都有一款可以播放音乐的软件,并且我们还可以在欣赏歌曲的时候,对自己需要的内容进行调整。
1.2 国内外研究现状
1.2.1 国外研究现状
在软件开发方面国外典型系统如 Spotify 通过 AI 推荐算法和无损音质构建生态,Apple Music依托硬件整合提供空间音频体验,Amazon Music则结合电商生态推出 Prime会员免费模式;如Spotify、Apple Music在AI和机器学习领域投入大量资源,开发了先进的推荐算法和个性化功能。利用协同过滤和深度学习技术,每周为用户推荐个性化歌单Apple Music 的 AI 推荐:根据用户听歌历史和偏好生成个性化播放列表。
人机互联方面App支持多平台如 iOS、Android、Windows、macOS和无缝同步。Spotify的跨设备同步:用户可以在手机、电脑、智能音箱等设备上无缝切换播放。在用法方面致力于开发音乐软件社交属性,通过歌曲评论,分享歌单,个人主页展示等,加强音乐软件的用户生成内容和社交互动。在版权方面国外App在全球范围内提供服务,支持多语言和多地区。Spotify 的 全球覆盖:在 180 多个国家和地区提供服务。YouTube Music 的 多语言支持:支持多种语言的音乐和歌词。注重满足不同地区用户的文化需求。
表1 国内外音乐软件分析对比
平台名称 优点 缺点
Spotify 1. 推荐精准:投入大量资源于 AI 和机器学习领域,运用协同过滤和深度学习技术,每周为用户推荐个性化歌单,能精准获取用户喜好曲风。
2. 跨设备体验好:支持多平台如 iOS、Android、Windows、macOS 等,用户可在手机、电脑、智能音箱等设备上无缝切换播放,实现跨设备同步。
3. 音乐库丰富:全球音乐资源丰富,拥有数千万首歌曲,支持多语言,适合喜欢探索欧美及独立音乐的用户。
4. 界面简洁:界面整洁无广告(付费版),没有多余繁琐的界面元素,不占内存,优化较好。 1. 价格较高:以香港地区为例,个人订阅每月 68 港币,价格相对较高。
2. 免费版限制多:不开通 premium(会员)的话,每小时只能切换 6 首歌,半小时要听一次广告,且不能下载音乐。
3. 中文曲库不足:对中文曲库支持有限,中文歌曲资源相对较少。
4. 部分地区版权受限:在某些地区,存在音乐版权问题,可能导致特定歌曲无法播放。
Apple Music 1. 音质出色:提供无损音频,完好呈现原始录音的每个美妙细节,支持杜比全景声的空间音频,让好声音环绕四周,沉浸感十足。
2. 与苹果生态融合:与苹果设备深度集成,如已预装在 iPhone、iPad、Apple Watch、Mac 和 HomePod 等设备中,可通过 CarPlay 车载聆听,也能在 iTunes 访问,还能通过 Siri 控制播放,操作便捷。
3. 内容丰富:曲库全面,囊括全球热门歌曲,中文音乐也有较好覆盖,提供原创节目、演唱会和独家内容,以及由艺人主持的电台节目。
4. 无广告干扰:订阅用户享受无广告的听歌体验。 1. 价格略高:相较于部分其他平台,个人订阅每月 11 元(免费试听期结束后),价格稍高。
2. 非苹果设备支持差:对于非苹果设备的支持较差,在非苹果设备上的使用体验可能不如其他平台。
3. 界面繁琐:界面设计相对繁琐,不够简洁直观。
4. 功能受限(国区):国区存在功能受限较多的情况,如部分歌曲因版权问题无法播放。
Amazon Music 1.会员福利好:免费音乐服务,提供一定数量的歌曲和电台供亚马逊Prime会员免费收听。
2. 音质多样:提供多种音质选择,满足不同用户对音质的需求。
3. 语音模式易于掌控:可用语音来控制播放,方便用户操作亚马逊智能设备。
1. 音乐库较缺乏音乐库,相较Spotify或者Apple Music来说,歌曲数量和种类比较少。
2. 界面不直观用户界面使用不直观,需要花费一些时间让初学者适应。
YouTube Music 1. 资源丰富:基于YouTube,其拥有的音乐资源相当丰富,不但有大量的音乐音频,还有大量的音乐视频,可通过不同方式搜索,可根据观看历史,或根据内容推荐。
2. 视频音频切换便利:在观看视频的同时能够转换为音频模式,满足用户不同的场景需求。
3.多语言支持:支持多语种的音乐和歌词,尊重各地区的文化需求。
1. 广告干扰(免费版):免费版有广告干扰,影响听歌体验。
2.部分功能需绑定视频属性:部分功能和视频属性相关联,在单纯听歌时无法使用。
Tidal 1. 声音品质顶级:专注高保真音乐服务,纯粹无损,高解析度,能够满足追求音质极限的专业人士和发烧友。
2. 多:独家内容较多,带给用户不一样的音乐体验。
3. 界面专注音乐:界面简洁,专注音乐播放器,减少其他干扰元素。
1. 价格高:订购费较高,尤其是无损音质套餐,加大了用户使用成本。
2. 歌曲数量过少:相比Apple Music或Spotify,音乐库中的歌曲数量过少。
Deezer 1. 个性化推荐“Flow”功能可以根据心情、活动等个性化地推荐音乐流,为用户定制适合当下场景的音乐。
2. 多语言支持:支持多语言,方便不同地区用户使用。
3. 合作广泛:与部分汽车品牌合作,用户可在车内便捷使用。
1. 国际影响力较小:主要在欧洲地区较为流行,全球影响力不足,受众覆盖面较小。
2.功能创新性不够与某些竞争对手相比,在功能创新上尚缺乏比较强的实力,缺少杀手锏。
在国外音乐播放器领域的研究与实践中,诸多文献从产品发布、技术创新、专利研发等角度,为该领域的发展提供了丰富的见解与参考。HiBy Music(2023)推出了 Hi – Fi 音乐播放器产品线的最新成员 HiBy R6 Pro II。HiBy Music 作为全球便携式音频电子产品的领先供应商,这款新产品备受瞩目[1]。Intel Corporation(2018)专利从系统和方法层面,为音乐播放器与设备驱动程序之间的控制关系提供了新的技术方案,有助于提升音乐播放器在不同设备环境下的兼容性与控制效率,推动了音乐播放系统在设备交互控制方面的技术进步[2]。Inventec Appliances(2017)提出的无线音乐播放方法、系统及播放器相关技术,为无线音乐播放领域带来了创新,改善了无线音乐播放的实现方式,有助于提升用户在无线场景下的音乐播放体验,例如优化了设备之间的连接稳定性和数据传输效率等,对无线音乐播放市场的发展具有积极影响[3]。Patents(2016)提出无线音乐播放方法、系统和播放器的研究方向来看,有望为无线音乐播放领域带来新的变革,可能涉及到新的无线连接技术、播放控制逻辑等,一旦获批,将为相关产品和服务的创新提供有力支撑[4]。Tencent Technology (Shenzhen) Company Limited(2015)该专利聚焦于音乐播放器的自动换肤方法、系统以及计算机可读存储介质,旨在为用户提供更加个性化的音乐播放界面体验,丰富了音乐播放器在用户交互体验方面的创新思路,使得音乐播放器不仅在音乐播放功能上不断提升,在外观个性化定制方面也有了新的探索方向[5]。
1.2.2 国内研究现状
在国内音乐播放器领域的研究同样呈现出多元且深入的态势,众多学者从不同技术平台、设计理念以及教学应用等维度展开探索,为该领域的发展贡献了丰富成果。刘丹、董明华、刘正(2023)阐述了基于鸿蒙系统的分布式音乐播放器设计与实现。他们通过对鸿蒙系统特性的深入挖掘,构建了分布式架构,实现音乐资源在多设备间的协同播放,为用户带来便捷且新颖的音乐播放体验,推动了鸿蒙生态在音乐播放器领域的拓展[6]。王鼎文(2023)聚焦音乐播放器UI设计领域,将新古典主义风格融入其中,从界面布局、色彩搭配到元素选取等方面进行创新设计,为提升音乐播放器的视觉审美与用户交互体验提供了新的设计思路,使音乐播放器在界面设计上更具艺术感与文化内涵[7]。王瑜(2022)介绍基于Arduino的音乐播放器设计。通过运用Arduino开源平台,实现了一款成本较低、可定制性强的音乐播放器。该设计在硬件搭建与软件编程上进行优化,满足了部分对个性化、简易音乐播放设备有需求的用户群体,为音乐播放器的多元化发展增添了新路径[8]。王洪钦、李素芬、吴倩(2022)讲述基于FPGA的无源蜂鸣器音乐播放器的设计与实现。利用FPGA的灵活可编程特性,设计出通过无源蜂鸣器发声的音乐播放器,在特定场景下,如简单电子设备、学习教具等方面具有应用价值,拓展了音乐播放器的应用场景[9]。张皎、金印彬、孙敏(2022)提出以“项目引导实验”理念下的数字电子技术实验课程教学改革,以FPGA音乐播放器设计为例。这种教学改革模式将实际项目融入教学,通过设计FPGA音乐播放器,提升学生对数字电子技术的实践能力与创新思维,为音乐播放器相关教学提供了创新教学方法[10]。林陈佑康、王风硕(2021)和马杰瑞、王风硕(2021)介绍基于Web的音乐播放器前端与后端的设计与实现。前后端协同构建出完整的Web音乐播放系统,实现了音乐在线播放、用户管理等功能,适应了互联网时代音乐播放的新需求,为在线音乐服务提供了技术支撑[11] [12]。贺钊(2021)、邓俊豪(2021)、苏航(2016)以及崔毅明(2015)基于Android平台展开音乐播放器的设计与实现研究。从基础功能实现到多功能拓展,如本地音乐播放、在线音乐搜索、个性化设置等,不断优化Android音乐播放器的用户体验,满足了广大Android用户对音乐播放的多样化需求[13][14][15][16]。吴永萌(2015)在硕士论文《交互体验审美特征的研究与应用》中,从理论层面研究交互体验的审美特征,并将其应用于音乐播放器设计中,为提升音乐播放器的交互设计质量提供了理论指导,强调从用户审美角度优化交互流程与界面设计[17]。总之,国内在音乐播放器领域的研究覆盖了从基础技术实现到美学设计,从教学改革到不同平台应用等多个层面。通过技术创新与理念革新,不仅满足了国内用户对音乐播放器的多样化需求,也为全球音乐播放器领域的发展贡献了具有中国特色的研究成果,与国外研究共同推动着音乐播放器行业不断向前发展。
1.3 主要研究内容
1.3.1 系统的功能
1.3.2 系统的特点
这个 Daytoy音乐 APP的初始化和创建过程,包括需求分析、方案设计、软件开发和应用软件测试四个阶段的基础上的初始化和创建。这个《Daytoy》 APP的项目的设计和实施方式,我们采用的是 Java语言,通过以下方式来完成。Android studio作为一个软件开发的软件,其背后庞大的数据资源可以通过 SQLsite来实现。
这次毕业设计旨在为广大用户提供一款Android音乐播放器,这款Android音乐播放器的网页设计简洁、漂亮,非常适合现在的人们。交流互通顺畅,象征融合了大部分人的常态运作;它的用法很清楚,它的功能很完善,它的办公环境也很好,它具备了一个音乐播放器应该具备的所有必备的功能,而且它还可以在 Android系统上单独运行。达到一般人每天收听音乐的最基础需求,也就是搜索音乐、播放音乐、下载音乐、暂停音乐、切换歌曲、上一首歌、下一首歌、添加自己喜爱的音乐种类等等。让使用者能够清晰地了解自己的音乐纪录与偏好。
1.4 开发平台与框架
1.4.1 开发平台
1.4.2 框架
1.5 开发技术
1.5.1 Java语言
Java具有简洁、跨平台、定向、分散、可诠释、稳健、安全、架构中性、便携、高效能的多线程、动态语言等特点。自从 SUN于1995发布 Java时,这种具有魔力的编程语言就引起了整个世界的关注。
Java编程语言,作为一种以大规模电脑为基础的软件编程应用语言,其在技术上具有将多语言平台的优势、面向对象的优势以及与泛式化软件编程相融合的优势,能够被广泛地用于各类企业的 Web网络服务器的硬件应用和各类移动终端应用的软件的研发,是一种适合于让使用者能够自主地进行不同种类的、不同的跨专业平台类型的应用程序的设计语言。在1995年5月,Sun Microsystems公司发布了这种语言和它的平台。
Java编程语言与 Java平台的统称,也就是 Java SE、 Java EE、 Java ME.詹姆斯戈斯林等人在20世纪90年代初,就研制出了一种最基础的 Java程序语言,最初的 Java语言被称为 Oak,他们的目的就是想要将他们的可编程语言用于代替家用的小电器的控制,以及用于电视、手机等的无线通讯,只是他们没有想到,智能家电的需求并不像我们想象中的那么大,于是 sun公司不得不放弃了。90年代因特网开始流行, sun公司就意识到 oak可以在因特网上大量应用,一直到1995年5月,他们对 oak做了一次改动,并以 java命名。随着移动互联网的迅速发展, Java也渐渐变成了一种非常有前途的 Web程序设计语言。java凭借其特有的技术吸引力,越来越受到人们的关注,越来越多的平台也显示出 java特有的吸引力:它能支持跨平台,能支持动态网络,还能进行互联网计算。因此,随着 Java得到了广泛的承认, Web的发展也在不断地加快。不过,从某种意义上来说,美国的 Java程序也在不断地升级。Java是全球最大的一支研发队伍,在个人电脑,数据中心,游戏机等方面有着非常广阔的用途,也可以用于一些重要的领域,如科学超级计算机,电脑等等。总之,现在全球的云计算产业中, java已经具备了比较显著的市场竞争优势,尤其是现在的移动端和网络产业,其发展的空间更是广阔。
1.5.2 Android studio介绍
谷歌是一个整合的开发平台,专门针对安卓系统的软件发展,包括所有安卓系统的功能。Android的大多数应用程序使用 Java语言编写,并且使用了一套开发工具包(AndroidStudio提供的 API)。举个例子,当一个程序需要存取特定的设备,或者为了提高运行的效率时,需要使用 C/c++来实现对整个系统的存取。要想在 Android studio中使用 C/c++,就需要使用本机开发工具包 NDK (本机 development kit)来完成。有了 NDK,我们就可以把 c/c++的源代码转化为可以被 Java开发者动态访问的数据库。在 Java中, c/c++的所有函数都由 C/c++来完成,所以用 NDK编写 C/C++程序时必须符合 JNI的要求。
为了能够更好地帮助支持现有Android的接口用户自行设计开发一个适合新的Android软件应用的各种软件开发层(java编程语言),英创公司为其目前支持的各种应用软件层和接口用户创建了一个完全符合新的JNI应用规范的一个c/c++动态链接库,用户在这里同时只需直接使用一个英创公司的动态链接库,纯粹的java编程语言应用环境下直接只需加载了动态链接库组件中的一个函数并且只需调用其中的一个函数组件即可直接自动访问基于该软件层的资源,用户的软件工作只是一个属于应用语言级别的Java语言程序,其他大多数软件工作都只能是由一个英创公司自己负责完成。英创公司为软件用户和其他软件开发平台用户提供了相应或对应的的软硬件用户接口应用实例,并为软件用户自身提供一个可以包括包含c/c+so和o文件等软硬件应用接口的手机应用程序实例,以方便供广大软件用户进行选择。
1.5.3 ESM6802 Android版本工作分布图
SQLite数据库一个建立在公众范围内的工程,由德瑞查德。其特色在于,这个数据库是一个小的、嵌入的,其内部的文件很小,有点像 mysql,但是性能比较弱,只有数百 k的档案和存储空间,但是也有自己的优点,就是消耗的资源比较少。sqlite是一种能够自我维持、无需任何服务器和进行配置的自定义程序库。各种类型的交易,如 SQL数据库引擎等都可以被实施。sqlite是当前全球发展最迅速的一种数据库源码引擎,无论其大小如何,其普及度与人气都在持续上升,而且 sqlite的源码本身并无著作权,因此也没有什么著作权问题。多平台,支持 Linux, MAC,安卓, IOS, windows等操作系统,以整合发展为主。
SQLite库是一个同步存在于各个进程中的资料库,它是一个私有的,没有进程服务器,没有系统配置的,基于 SQL的 SQL的数据库管理引擎。与其它的数据库有着很大的区别,比如,它是一个没有任何的零组态的数据库,与其它的数据库不太一样,因此,它并不需要对其进行任何的设置,但是,在某些方面,与其它的数据库有着相似之处,比如 sqlite这个引擎,并不是一个单独的数据过程,可以将整个系统应用的数据进行动态的链接。
sqlite引擎并不是一个单独的过程,让你的软件可以和其他的程序进行交流,但是你可以把它们彼此联系在一起,从而变成它的一部分。所以在程序设计中,通过 API来实现对通信的主要通信协议的调用。这在降低总体能耗、延迟时间和简化总体上都是有益的。数据库有关文件全都保存在主机单独文件档中,它的简单的设计是,通过锁住一个资料档案,使它可以在启动的时候行动。
1.5.4 Android SDK介绍
Android Software Development Kit。该软件为基于Windows、LinuxandMac系统的Android软件提供了一个发展构件,并为Android系统中的手机软件开发提供了多种工具。
SDK:企业软件发展工具包(Software development kit)。它是软件开发者为某一种特殊的软件包,软件框架的一种开发工具,也可以用来搭建硬件平台,操作系统等,是一套用于应用软件的开发工具。所以,Andriod SDK是专门为Android设计的一个软件发展套件。Android开发工具包包含Java语言,因此必须首先安装JDK5.0或更高的版本。我选用了直接下载的方式来安装,这个比较便利,无需安装Android SDK,在下载之后,只需将其解压缩就可以了。将已下载的SDK进行解压,并将其放到相应的文件夹中,这样SDK就算是安装完毕了。
Android SDK为基于Windows/linux/Mac系统的Android程序提供了一个发展构件,它可以兼容多种不同的操作系统,并为Android系统中的手机程序提供了多种不同的工具。该软件包包含了Android仿真器和Android的ADT,也包含了多种用于调试、封装和在仿真器上的程序。Android SDK基于Java,在Android系统中,可以让用户在Android平台上进行各种程序的开发。利用SDK中的部分功能,将其封装为Android系统所需的API,并利用SDK中的仿真器(Emulator)对其进行仿真与验证。
1.6 论文组织结构
本文围绕基于 Android 平台的音乐播放器 APP 展开研究,整体结构严谨、逻辑连贯,旨在系统地阐述该音乐播放器的设计与实现过程,具体结构安排如下:
1、绪论:介绍研究背景与意义,指出快节奏生活下音乐播放器的重要性,以及 2、Android 平台的优势和市场需求。梳理国内外研究现状,分析音乐产业发展趋势和用户需求变化。明确研究手段为采用 Java 语言和 SQLite 数据库,借助 Android Studio 开发,预期打造功能完备、界面友好的音乐播放器。
3、软件开发工具与专业技术:详细介绍 Java 语言特性、发展历程及应用领域,阐述其在本项目中的关键作用。讲解 Android studio 开发平台,包括其功能、与 Java 的结合方式,以及 NDK、JNI 的使用。介绍 SQLite 数据库的特点、优势及在本系统中的应用,以及 Android SDK 的功能和安装使用方法。
4、系统需求分析:明确音乐播放器的基本控制需求,如播放、暂停、搜索等功能的用例。阐述播放友好性需求,包括单曲循环、顺序播放、随机播放等模式。从用户接受度、技术可行性和经济可行性等方面进行分析,论证项目的可行性。
5、系统概要设计:对系统进行功能组设计,划分出我的音乐、线上音乐网络、自定义接口和页面布置等模块。介绍数据库设计,展示相关表格结构和 E-R 图。详细说明我的音乐模块中各子模块,如本地音乐查询、用户歌单管理等的功能和设计思路。
6、设计模块的实现:阐述本地音乐播放、个人歌单管理、最近播放、我喜欢的音乐等模块的具体实现技术和方法,包括数据获取、处理和展示等环节。
系统测试:对本地音乐模块、音乐歌单模块等进行功能测试,以及启动时间、内存占用等非功能测试,确保系统性能稳定、功能正常。
7、结语:总结在 Android 平台开发音乐播放器的收获,回顾设计实现过程中的问题与解决方法,强调本研究对移动音乐应用开发的参考价值。
第2章 系统分析
2.1 可行性分析
2.1.1 经济可行性
在开发成本方面,本音乐播放器选择使用Java语言和SQL数据库进行开发。 Java语言是一种使用范围广泛且发展成熟的编程语言,有着丰富的开源项目资源,拥有大量的社群支持,在开发过程中遇到问题时能较容易的获取解决方案,从而节省开发的时间成本。 SQL数据库是一种轻量级的嵌入式数据库,不需要额外搭建服务器,能降低硬件和软件成本。安卓市场上有免费且功能强大的Android Studio开发工具,能降低开发成本。在开发人力成本方面,本音乐播放器项目对人力成本的要求不高,只要拥有少量具有Java和Android开发经验的成员即可参与项目,人力成本也能控制在可控范围内。
从收益来看,市场上音乐播放器用户付费意愿是较高的。此播放器后期可通过多种途径获利,如建立会员制,为会员提供无损播放品质、歌单、去广告等权利,可吸引用户支付费用开通;与音乐版权商合作,获得歌曲售卖分成;在软件内适当地做一些广告,也能获得广告费。此音乐播放器在各方面经济上可行。
2.1.2 社会可行性
随着人们生活质量的提高,人们对于精神文化娱乐方面的需求不断提升,音乐作为人们重要的娱乐项目受到人们的广泛喜爱。音乐播放器也因此成为人们获取音乐的重要途径,成为人们日常生活中不可或缺的生活用品。
从用户的需求来看,不同的年龄、不同职业、不同身份的人都有听音乐的习惯,他们在工作学习、工作之余、乘车途中、休息时候需要听音乐来舒缓身心。本音乐播放器中设置的本地音乐播放、歌单管理、搜索、倍速播放、定时播放等模式,完全可以满足不同用户的不同听歌需求。
音乐播放器在文化层面和法律层面是可行的。文化层面,音乐播放器的设计与使用符合社会文化价值,在音乐版权、用户隐私等方面有相关法律保障。在版权方面,音乐播放器要合法获取音乐版权,尊重音乐创作者的知识产权;在隐私方面,用户的信息和隐私得到加密保护,遵守相关的隐私保护法规,不存在社会伦理与法律风险,因而在社会层面是可行的。
2.1.3 技术可行性
就当前的技术条件而言,Android系统非常适合用作音乐播放器。 Android系统拥有丰富的开发框架及API,可以满足开发者的多元需求,如音乐播放、文件管理、人机交互等。例如,可通过MediaPlayer来实现音频播放,通过ContentResolver来查询本地音乐文件。
在软件方面,现在手机软件也相应的有了一定的提高,强大的手机处理器、内存与存储,完全可以载动音乐播放器流畅运行,即使对本地大量音乐的播放或者进行复杂音乐处理,也不会影响系统的流畅性与运行的平稳性。
在开发技术方面,Java语言的功能强大,类库资源丰富,可以实现对该播放器的功能需求;而音乐播放器中的数据库—SQL数据库可以实现对数据信息的存储与管理,可以有效地存储音乐文件信息、用户歌单信息等。开发者还可以利用Android Studio中的调试工具、布局编辑器等工具来提高开发效率和质量。综上所述,在技术层面来讲,该音乐播放器的开发是可行的。
2.2 用例分析
2.3 系统流程分析
2.3.1 系统开发流程
2.3.2 业务流程分析
2.5 需求分析
2.5.1 功能需求
音乐播放器作为一款广泛使用的应用程序,具备多样化的功能,以满足不同用户在不同场景下的音乐收听需求。以下对其主要功能进行详细阐述:
1、倍速播放
功能描述:为用户提供音乐或听书内容的倍速选择。在实际使用中,不同用户对于音乐或有声读物的收听节奏有不同偏好。例如,部分用户在复习外语听力材料时,可能希望以 0.5X 或 0.75X 的慢倍速来听清每一个细节;而对于一些熟悉的音乐或追求高效获取信息的用户,1.25X、1.5X 甚至 2.0X 的快倍速则能满足他们快速浏览内容的需求。
实现方式:在播放界面设置倍速选择按钮,点击后弹出常见倍速选项列表,如 0.5X、0.75X、1.25X、1.5X、2.0X 等。用户选择后,播放器通过调整音频播放的采样率等技术手段来实现相应倍速播放。
2、播放器核心功能
功能描述:主要完成对音乐文件的解码、播放、暂停、停止等基本操作,同时实时显示歌曲相关信息(歌名、歌手、专辑封面等)。例如:单击播放歌曲时,播放器即会读取音乐文件,将数字信息转换为模拟音频信号进行播放,并在界面上显示歌曲相关信息。
实现方法:使用成熟音频解码库,如FFmpeg等进行常用音乐格式(如MP3、WAV、FLAC等)的解码操作,通过与系统音频驱动实现播放、暂停、停止等操作,歌曲信息获取由音乐文件元数据实现并显示在播放界面。
3、顺序播放:
功能描述:用户在播放器右下角点击相应按钮后,歌曲将按照其在播放列表中的顺序依次播放。当播放完最后一首歌曲后,系统提供循环播放列表或停止播放两种选择。例如,用户创建了一个包含多首歌曲的播放列表,选择顺序播放后,歌曲将逐一播放,播放到列表末尾时,用户可根据自己的需求决定是否重新开始循环播放。
实现方式:在播放列表数据结构中维护歌曲的顺序,通过指针或索引的方式依次读取并播放歌曲。当播放到列表末尾时,根据用户的选择决定是否重置指针回到列表开头进行循环播放。
4、定时播放:
功能描述:可以设置音乐或听书的时间,时间一到,播放器会自动停止播放。这个功能可以在睡前等场景中,防止音乐的播放时间过长影响睡眠。比如,用户在临睡前想听音乐助眠,可以设置播放器在睡前听30分钟的音乐,一旦时间到,播放器会停止播放。
实现方式:在播放界面添加定时按钮,并且当用户点击之后弹出设置时间界面,设置好时间(例如15分钟、30分钟、60分钟等等)或者自定义时间,通过系统定时器功能,在时间到时发出停止播放的指令给播放器。
5、播放列表:
功能描述:显示当前用户播放的序列,可以对列表中的歌曲进行排序、添加、删除和上移等操作。同时,支持从本地音乐库或在线音乐搜索结果中添加歌曲到播放列表。例如,用户可以根据歌曲的喜爱程度对播放列表中的歌曲进行排序,也可以将新搜索到的喜欢的歌曲添加到播放列表中。
实现方式:采用列表数据结构存储播放列表中的歌曲信息。提供排序算法(如冒泡排序、快速排序等)供用户对列表进行排序。通过文件系统接口访问本地音乐库,通过网络接口访问在线音乐平台,实现歌曲的添加、删除和移动等操作。
6、音乐排行:
功能描述:在音乐底部导航栏呈现用户使用软件至今的音乐播放次数排行。这有助于用户了解自己的音乐偏好趋势,也能方便用户快速找到自己常听的歌曲。例如,用户可以通过音乐排行了解到自己过去一段时间内播放次数最多的歌曲。
实现方式:在数据库中建立记录表,记录每首歌曲的播放次数。每次用户播放歌曲时,相应歌曲的播放次数加 1。在底部导航栏通过数据查询获取播放次数最多的前几首歌曲并展示。
7、歌曲分类:
功能描述:按照歌曲类型、时代、语言等属性为音乐进行分类。方便用户按照类别查找歌曲。例如:用户想听华语流行音乐,可以利用歌曲分类功能,快速找到符合条件的歌曲。可用的分类一般有流行、摇滚、古典、华语、欧美等。
实现方式:在音乐文件的元数据中读取歌曲类型、年代、语言等信息并建立分类索引。在分类查找界面选择相应的类别后,通过索引查询显示歌曲列表。
8、歌曲曲风:
功能描述:按照歌曲的音乐风格进行更深一层的分类,如流行、说唱、民歌、电子音乐等,曲风的标签与歌曲标签相互匹配。此类功能可以实现更深层次的曲风区分,满足用户对特定曲风的需求。例如,用户喜欢电子音乐就可以直接通过曲风筛选歌曲。
实现方式:类似于歌曲分类,在元数据基础上,对音乐风格进行标注并建立索引。用户在曲风筛选界面选择曲风后,系统查询并展示相应歌曲。
9、漫游:
功能描述:点击后可以即刻开始随机播放推荐的音乐,帮助用户发现新的喜欢的音乐。例如,当用户想听一些不同风格的音乐来丰富自己的音乐体验时,点击漫游功能,播放器将随机播放系统推荐的音乐。
实现方式:系统通过算法从音乐库中随机选取一定数量的歌曲,并结合用户的部分偏好信息(如已播放歌曲的风格等)进行筛选,然后开始播放这些随机推荐的歌曲。
10、推荐歌曲:
功能描述:基于用户的历史播放记录、收藏歌曲、收听时长等数据,通过算法分析为用户推荐可能喜欢的歌曲。例如,系统分析用户经常播放某一歌手的歌曲,那么就可能推荐该歌手的其他歌曲或风格相似的其他歌手的歌曲。
实现方式:采用机器学习算法,如协同过滤算法、深度学习算法等。对用户的行为数据进行收集和分析,建立用户兴趣模型,根据模型为用户推荐符合其兴趣的歌曲。
11、喜欢的音乐推荐:
功能描述:深入分析用户收藏的喜欢的音乐,挖掘相似风格、主题或歌手的其他音乐作品推荐给用户。例如,用户收藏了多首民谣风格的歌曲,系统将推荐更多同类型的民谣歌曲。
实现方式:对用户收藏歌曲的特征进行提取,包括音乐风格、歌手、主题等。通过与音乐库中的其他歌曲进行特征匹配,筛选出相似的歌曲进行推荐。
音乐播放器的用例图如图 3-1所示。
图3-1播放器的用例图
2.5.2 界面需求
接下来我将从可维护性需求,界面需求安全需求三个方面来分析,从可维护性需求来说分为以四点:
(1)代码结构清晰性:采用模块化的编程思想,将音乐播放器的实现过程划分为多个相对独立的模块,如本地音乐播放、歌单管理、搜索功能等。每个模块的代码应该内聚度高,职责单一,易于开发和维护。同时,合理使用包结构和命名规范,将类、方法、变量等命名清晰,可读性强。例如,将本地音乐播放的相关类放在“com.example.musicplayer.localmusic”包下,类名如“LocalMusicPlayer”,方法名如“playLocalMusic()”。
(2)代码注释完善度:对关键代码段进行注释,注释内容包括函数或方法的作用、传参变量、返回值、代码逻辑说明等,对算法和业务逻辑代码进行注释说明,越复杂越应说明得越详尽,本地音乐查询功能方法代码实现时,注释要写出构建查询语句和查询结果的处理过程,方便维护者读懂代码,降低维护复杂度。
(3)文档规范性:编写系统设计文档、技术文档、用户手册等。系统设计文档包括系统的体系架构、功能模块、数据库设计等;技术文档包括系统的关键技术的实现、开发环境、依赖库等;用户手册包括用户使用音乐播放器的指南等。与代码同步修改,保持一致,为后续维护和升级奠定基础。
(4)可扩展性设计:在系统设计阶段充分考虑未来功能扩展的需求,预留接口和扩展点。比如在线的音乐模块暂时没有实现,但是会预留接口方便日后实现接入。同时,对于系统设计采用比较灵活的设计模式,可以使用观察者模式,即观察播放状态,以便在将来新的功能模块增加时不会对现有系统造成破坏。
从界面需求上来说,这款音乐播放器在界面设置上也要遵循简单美观、操作便利的原则:。
(1)布局合理性:首页布局以突出音乐播放为核心功能,将播放控制按钮(播放、暂停、上一首、下一首)置于页面顶端或最上方,便于直接操作。歌单、搜索、个人中心等功能入口布置合理查找。页面与页面之间切换时,能快速找到相应页面,采用合理布局导航方式,如底部导航、或者侧边栏。
(2)视觉效果良好:整体界面色调搭配良好,根据音乐主题,选择较为柔和、舒心的色彩搭配,如暖色调给人以温馨、柔和的感觉,冷色调给人以简洁、现代感。图片、图标质量良好,与音乐主题相呼应,使界面更具视觉吸引力。使用动画效果,如歌曲播放时封面会旋转,使界面变得更加生动有趣。
(3)交互设计友好性:操作符合用户习惯,例如:点击、滑动等操作流畅灵敏。反馈提示清楚,当用户点击按钮时,会有短暂的变色或震动等反馈,以让用户知道操作已被接收;支持手势操作,如用手指左右滑动可切换歌曲,上下滑动可调节音量。
在音乐播放时设置了一些友好性设计,即用户可以根据自己喜欢的方式改变自己当前对所听音乐顺序的 调整,播放顺序包括单曲循环、顺序播放、随机播放共三种。
在安全性需求方面:
(1)系统应提供严格的用户权限管理机制,用户的访问权限应根据角色进行区分。管理员和普通用户应有不同的操作权限,以确保敏感数据的安全性。
(2)系统应记录所有重要操作的日志,如用户登录、密码修改、账户信息修改等,确保能追溯操作历史。同时,系统应具备异常监控功能,及时发现并处理潜在的安全隐患。
2.5.3 性能需求
第3章 系统设计
3.1 系统整体架构设计
本音乐播放器应用软件分为表现层、业务逻辑类和数据访问层三个层次。表现层是与用户相互交互的界面,通过接收用户的操作指令并显示相应的结果,为用户提供交互友好的音乐播放、歌单管理等选项。例如,使用Activity和Fragment创建多个不同功能界面,再使用XML布局文件定义显示的内容及布局,为用户提供简洁美观并易于操作的界面。
业务逻辑类主要是系统的业务规则和业务流程,音乐播放的业务逻辑负责解析音乐文件的格式、控制音乐的播放(播放、暂停、停止等)、音乐的播放方式(单曲循环、顺序播放、随机播放等);歌单管理负责歌单的添加、删除、歌曲的添加等逻辑;搜索逻辑主要是实现根据关键词对本地音乐库或者网络上的音乐进行搜索。业务逻辑类调用数据访问类提供的数据接口,调用相应的存储接口,实现数据的存取操作,并保证数据的一致性和完整性。
数据访问层主要负责与数据库和其他数据源进行交互。利用 SQLite 数据库存储本地音乐信息、用户歌单、播放记录等数据。通过编写 SQL 语句或使用相关的数据库操作框架,实现数据的插入、查询、更新和删除操作。例如,在本地音乐查询功能中,通过 ContentResolver 结合 SQLite 查询语句,根据音乐 ID、歌名、歌手名等属性快速检索音乐文件信息,为业务逻辑层提供数据支持。
3.2 系统总体功能结构设计
本音乐播放器总体架构是基于它的核心功能来设置的,包含以下几个功能模块:“我的音乐”模块包含本地音乐的播放、本地歌单管理、本地音乐的最近播放历史和本地音乐收藏管理几个功能。用户可以管理本地音乐播放器中的“我的音乐”模块,播放本地音乐资源。“在线音乐网络”模块目前还未实现,但是预留接口,待以后实现该功能,该模块的主要用于音乐的在线搜索播放和下载。
“用户自定义设置”模块提供自定义功能,通过设置抽拉式浏览,网页悬挂,高斯型模糊,皮肤管理等功能,满足用户对显示界面和操作方式的个性化需求。“页面布局”模块致力于解决页面载入速度和布局展示方式,方便用户浏览和操作。各模块之间通过接口进行交互,相互独立又相互协作,共同构成功能完善,可拓扩展性强的音乐播放器,为用户提供高品质的音乐播放服务。
按照各部分的功能进行了细分,给出了该系统的具体实现方案。其中包含了四大部分:音乐,网络音乐,用户自定义设置,网页布局等。图4-1是一个由一个系统构成的方框图,该系统的特征如下:
图4-1项目功能组成图
(1)我的音乐:包括了本地的歌曲、个性化的歌曲列表、软件的自动关闭等音乐服务。
(2)线上音乐网络:在当前的功能组设计中,系统未包含在线音乐模块。不过,基于系统的可扩展性和灵活性,预留了在线音乐模块的接入接口,后续可根据实际情况进行添加与集成。
(3)自定义接口:包括了抽拉式浏览、网页悬挂、高斯型模糊、肤色管理等4大功能。本章主要是在软件方面做了一些改善,包括 Lottie动画、图片高斯化、查看你的音乐盒、改变你的游戏皮肤等等。
(4)页面布置:包括页面的建议页面布局的优化,页面的页面加载的优化。该部分实现了对该网站进行的功能更新以及对页面进行了优化。
3.3 功能模块设计
3.3.1 注册流程模块
用户注册是系统中重要的一部分,要求简便、快捷、安全。具体需求如下:
(1)基本信息填写:用户需要填写自己的用户名、密码、邮箱或者手机号码等个人信息,注册表单尽量简单明了,只填写必要的字段,不需要太多不必要的信息。
(2)隐私保护:用户的个人信息,包括密码等必须进行加密存储,注册时应注重符合隐私保护的相关法规。
(3)注册成功提示和引导:注册成功后系统给予注册成功的提示,并跳转到登录界面或激活账号的界面。
图 2-3 用户注册流程图
3.3.2 登录流程模块
登录功能作为用户进入系统的入口,其安全性、便利性是进行设计时要考虑的,具体要求如下:。
(1)账号与密码输入:在登录时输入用户名与密码,对密码进行加密处理,避免明文保存,保证账户安全。
(2)登录错误信息:在用户输入错误时,应给出“用户名或密码错误”等提示信息。
图 2-4 用户登录流程图
3.3.3 我的音乐模块
图4-3我的音乐模块类图
当音乐播放程序与其他模块进行互流时,ShowDialog就会弹出弹窗,提示你要去做什么,例如: “移除”、“添加到下一首播放”等等。音乐区是一种为一种音乐文件建立一套所有权的音乐目录。歌单类的作用是对用户的歌单,喜欢的音乐进行管理,包括建立歌单、删除歌单等。主要包括:当地的歌曲检索、用户的歌曲列表、最新的歌曲的播放、历史播放,最近添加的歌曲。
3.3.4 本地音乐查询模块
如下图所示,当操作者想要查询音乐时,再点击确定查询时,手机内容音乐数据就会进行数据优化,将想要查询的音乐呈现在眼前,这个软件将会把不准确的信息过滤掉,而且会按照用户的歌名和歌手的名字来展示数据。
退4-4本地音乐模块时序图
3.3.5 添加到我喜欢的音乐
在本系统中,主要涉及 “添加到我喜欢的音乐” 的功能流程。以下结合时序图进行说明:
图4-4添加到我喜欢的音乐
3.3.6 最近播放模块
如下图所示,此项操作可以将操作者的播放记录进行回流呈现,形成最近播放模块。
图4-5最近播放模块时序图
3.4 数据库设计
3.4.1 概念结构设计
这一节介绍了一种音乐播放器所使用的资料库表格,它包含PLAYLIST_TABLE播放清单、常用的音乐清单、RECENT_TABLE的最新播放清单、根据使用者的名单、使用者表格、使用者清单、音乐清单、音乐清单、音乐表、音乐表。每个用户都有自己喜欢的歌,每个用户也仅限于自己喜欢的一首歌,以及最近的一首歌。操作者创建歌单不受限制,并且可以打上标签,对于信息交流也不受限,二者均为一人一句。在演唱者列表里,歌手可以一次演奏不止一首歌曲,而不只是 MV视频。下面将给出这个数据库的 ER曲线图。
图 4-1 整体 E-R 图
图 4-2 用户 E-R 图
图 4-2-1 音乐信息 E-R 图
图 4-2-2 我的收藏 E-R 图
3.4.2 逻辑结构设计
表 4-1 注册信息表
字段名称 数据类型 说明
User_id int 用户账号
create_time datetime 创建时间
sex varchar 性别
avatar varchar 头像
email varchar 电话
Name varchar 用户姓名
password varchar 用户密码
表 4-1 喜欢收藏表
字段名称 数据类型 说明
create_time varchar 创建时间
Music_name varchar 音乐名称
picurl varchar 封面
User_id int 用户id
Music_artist varchar 推荐类型
表 4-1 音乐信息表
字段名称 数据类型 说明
Music_id Int 音乐编号
Music_name varchar 音乐名称
Artist_name varchar 专辑名称
picurl varchar 歌曲封面
Music_artist varchar 音乐状态
Song_text text 歌词
Song_id varchar 歌手
create_time varchar 创建时间
3.5 关键技术难点与解决方案
在基于 Android 平台的音乐播放器开发过程中,遇到了诸多技术难点,经过深入研究与实践探索,采取了相应的解决方案,以确保系统的稳定运行和功能实现。
�本地音乐查询功能的实现速度和准确度不高,手机本地音乐的数据量可能很大,但由于本地音乐的存储格式不同,信息也有较大差异,如何快速的查询出用户想要听的音乐是一个难题,利用Android系统提供ContentSolver进行数据的查询。尽量构造合理的查询语句,根据MediaStore音乐文件的各类属性进行查询,如音乐 ID、歌名、歌手名等,将查询的数据进行优化处理,过滤掉不正确和残缺的数据,保证查询的准确性,让用户最快找到自己想听的音乐。
歌单管理功能的实现也存在一定的难度。需要实现歌曲列表展示、批量删除歌曲、添加歌曲、歌单分享等较为复杂的功能,还需要保证数据库中数据的唯一性和一致性。为此在数据库设计方面,设计专门的歌单表以及各关联表,利用合理的表设计将歌单和歌曲以及歌曲和歌单的对应关系存储到数据库中。代码实现方面,采用事务性的操作保证批量操作的一致性,避免数据错误和丢失。关于歌单分享的操作,采用二维码分享的方式,对分享的内容进行加密处理。
在兼容性上,由于不同手机的硬件配置不同、系统版本不同,因此音乐播放器在部分安卓手机上存在不同的兼容问题。为了尽可能地解决此类问题,在开发时,就针对多个知名安卓手机 VIVOX50、VIVONeo5等,以及不同的系统版本 Android11、安卓10 等进行了音乐播放器开发兼容性测试,尽可能地确保音乐播放器在各个不同的手机上都能表现出良好的兼容性,避免出现界面显示不正常、播放卡顿等手机兼容性问题,从而通过代码调整、布局调整等解决此类问题。
第4章 系统实现
4.1 开发环境与工具
表 5-1 开发环境与工具
软件技术 软件名称
操作系统 Android
开发工具 Android studio
数据库 sqlite
开发语言 Java
4.2 登录模块
注册过程:注册用户在手机打开播放器页面,点击页面底部的注册账号键,进入注册界面,在注册界面中填写用户名、密码等信息。为了保证信息的安全,密码进行加密处理,保证用户密码的明文传输。当所有信息填写好后,点击注册按键,系统对用户输入的信息进行校验,如果用户名已经存在、密码强度够,系统将会把用户的信息存入到SQLite数据库中的“注册信息表”中,提示用户注册成功,并跳转到登录界面。
登录流程:在登录页面,用户输入注册时的用户名和密码,点击 “登录” 按钮。系统获取用户输入信息,对密码进行加密处理后,在数据库中查询匹配的用户记录。若查询到对应记录,验证成功,用户将跳转到软件主页面;若用户名或密码错误,系统弹出提示框,显示 “用户名或密码错误”,提示用户重新输入。登录成功后,用户可以在软件主页面进行音乐播放、查找等操作。主页面底部导航栏设有 “推荐”“听歌排行”“电子书”“我的” 四个模块,方便用户快速切换不同功能。
图 4-5 登录界面
图4-6软件主页导航栏
4.3 系统推荐模块
基于曲风的推荐:系统通过分析用户在使用过程中收藏、播放的歌曲,提取歌曲的曲风信息。例如,若用户经常播放周杰伦的歌曲,系统识别出其曲风多为流行、R&B 等。当用户进入系统推荐模块时,系统根据这些曲风信息,从本地音乐库或在线音乐资源(若已接入在线音乐功能)中筛选出相似曲风的歌曲进行推荐。推荐歌曲以歌单形式展示,点击推荐歌单,用户可进入每日生成的歌曲推荐页面,查看具体推荐歌曲列表,并可选择播放。
每日自动推荐:系统每天定时根据预设算法,综合考虑热门歌曲、新发布歌曲以及用户历史行为数据,生成每日推荐歌单。这些推荐歌单展示在系统推荐模块的特定区域,用户点击后可查看详细歌曲列表。同时,系统还设有 “私人雷电”(可能是 “私人 FM” 之类的误写)功能,点击后进入喜欢音乐推荐详情页面,这里的推荐歌曲更精准地匹配用户的喜好,基于用户收藏的歌曲风格、歌手等因素进行推荐。
图 4-7 软件推荐界面
4.4 歌曲搜索模块
搜索框搜索:在歌曲搜索模块,用户点击搜索框后,可输入歌曲名、歌手名、专辑名等关键字。系统获取用户输入的关键字后,在本地音乐库中进行查询。查询过程利用 SQLite 数据库的查询功能,通过编写 SQL 语句,根据关键字匹配音乐信息表中的相应字段。例如,输入 “周杰伦”,系统会查询 “Music_name”“Artist_name”“Song_id” 等字段中包含 “周杰伦” 的音乐记录。查询结果以列表形式展示在搜索结果页面,用户点击列表中的歌曲即可跳转到播放页面进行播放。
曲风分类搜索:在搜索框下部有歌手的曲风分类选项,如流行、摇滚、民谣等,当用户点击所选的曲风后,系统根据所选择的曲风对本地音乐库中的歌曲进行筛选。系统读取音乐信息表歌曲的曲风属性字段,筛选出与所选取曲风相匹配的歌曲,并将其显示在搜索结果页面中,同样,当点开歌曲后便可播放。
图 4-8 歌曲搜索页面
图4-9歌曲分类页面
4.5 音乐播放器模块
跳转页面按钮:在音乐列表中,单击页面下方的播放器标志,即可跳转到播放歌曲页面。在播放页面中,显示了歌曲的名称、歌手、专辑标志等,还提供了控制音乐播放的工具。
歌曲操作功能:在音乐列表中,长按所听歌曲会显示操作菜单“添加到下一首播放”,将该歌曲添加于播放队列中下一首的位置。在播放列表中,长按所听歌曲会显示删除按钮,点击删除按钮可以进行删除操作,在播放页面右下角,双击播放顺序,会显示随机播放、单曲循环、顺序播放三种播放模式选项框,选定播放模式后,按照该模式进行播放。
歌曲收藏与倍速播放:在播放页面,点击红心按钮,系统将当前播放歌曲添加到 “我喜欢的音乐” 收藏列表中。收藏操作涉及数据库的插入操作,将歌曲信息插入到 “喜欢收藏表” 中。点击右上角的倍速播放按键,会弹出倍速选择框,提供 0.5 – 2 倍速的选择。用户选择倍速后,系统通过调整音频播放的采样率等技术手段,实现歌曲的倍速播放。
歌曲设置铃声功能:在播放页面,点击铃声按钮,系统将当前歌曲设置为手机铃声,系统默认设置为系统老来电铃声。
图 4-9 播放器页面
播放顺序按钮可以调整当前音乐列表的播放顺序、点击右上角的倍速播放按键可以对歌曲进行0.5-2倍速播放如图4-9所示
图 4-10 播放器页面
点击红心按钮可以添加歌曲收藏到我喜欢的音乐,点击右下角的铃声设置按钮可以把当前音乐设置为铃声如图4-10所示
4.6 电子书听书播放模块
基于播放的推荐:系统通过分析用户在使用过程中喜欢、播放的电子书,提取电子书的曲风信息。例如,若用户经常播放周建龙的电子书,系统识别出其电子书多为恐怖、冒险等。当用户进入系统推荐模块时,系统根据这些曲风信息,从本地书库或在线书库资源(若已接入在线书库功能)中筛选出相似曲风的电子书进行推荐。
每日自动推荐:系统每天定时根据预设算法,综合考虑热门电子书以及用户历史行为数据,生成每日推荐书单。这些推荐歌单展示在系统推荐模块的特定区域,用户点击后可查看详细电子书列表。同时,系统还设有 “私人推荐”(可能是 “私人 书单” 之类的误写)功能
曲风分类搜索:在搜索框下方,设有电子书曲风分类选项,如恐怖、冒险、青春等。用户点击相应曲风分类,系统根据该曲风筛选本地书库中的电子书。系统通过读取电子书信息表中歌曲的曲风属性字段,筛选出符合所选曲风的电子书,并将这些电子书展示在搜索结果页面。同样,用户点击电子书可进行播放操作。
图4-11电子书首页个性推荐页面
图4-12电子书分类页面
第5章 系统测试
这一环节,既要对软件的性能进行检测,保证它按照规定的程序运行,还要对软件的健壮性进行检测,查看是否存在因用户操作不当而导致的程序瘫痪。实验的环境包括: VIVOX50, VIVONeo5, VIVOS9, VIVO 3, VIVOZ1, VIVONeo3, VIVOZ1, VIVOZ1, Android 11,安卓10,安卓9,安卓8,网络状况有三种,无网络连接, WIFI连接,移动数据连接。
5.1 系统测试的目的及意义
验证其功能完整性和正确性,保证软件系统按照需求规格说明书要求开发各项功能,且能正确达到预期效果。如购物软件系统测试要求用户能完成搜索商品、将商品添加到购物车、提交订单并支付等一系列操作,且每一项操作的结果均能符合业务逻辑和用户预期。验证本地音乐模块的功能黑盒测试在主界面各按键的跳转、本地音乐文件的显示以及管理模块的播放、暂停、切换歌曲是否正常工作,验证用户在此类功能使用过程中,不会出现错误或异常。
评估性能表现,检测软件在不同环境和负载条件下的性能指标,如响应时间、吞吐量、资源利用率等。以视频播放软件为例,要测试在不同网络状况(无网络连接、WIFI 连接、移动数据连接)以及多种安卓系统版本(Android 11、安卓 10、安卓 9、安卓 8)下,视频的加载速度、播放流畅度以及播放过程中对设备 CPU、内存等资源的占用情况。对于音乐播放器,通过测试启动时间和内存占用等性能指标,确保软件在启动时能够快速响应,在运行过程中不会过度占用系统资源,从而保证用户获得良好的使用体验。
确保兼容性,由于软件可能会在多种设备和操作系统上运行,系统测试要验证软件在不同品牌、型号的设备以及不同操作系统版本上的兼容性。就如本次实验中,在 VIVOX50、VIVONeo5、VIVOS9、VIVO 3、VIVOZ1、VIVONeo3 等多种 VIVO 设备以及 Android 11、安卓 10、安卓 9、安卓 8 等不同安卓系统上对音乐播放器进行测试,确保软件在这些不同环境下都能正常安装、运行,且功能和界面显示都符合预期,不会出现因设备差异或系统版本不同而导致的兼容性问题。
保障用户体验,全面系统测试的软件可以为用户提供稳定、可靠、易用的服务。用户使用起来不会出现频繁的功能故障、性能瓶颈或兼容问题,提升用户对软件的满意度与忠诚度。一个用户体验好的音乐播放器,可以吸引更多的用户使用,并鼓励他们继续使用和推荐给他人,有利于软件的推广和可持续的发展。
5.2 测试方法及环境
测试任何产品都有两种方法:如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用;如果知道产品的内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行。前一种方法称为黑盒测试,后一种方法称为白盒测试。
对于软件测试而言,黑盒测试是从一种从软件外部对软件实施的测试,也称功能测试或基于规格说明的测试。其基本观点是:任何程序都可以看作是从输入定义域到输出值域的映射,这种观点将被测程序看作一个打不开的黑盒,黑盒里面的内容(实现)是完全不知道的,只知道软件要做什么。因无法看到盒子中的内容,所以不知道软件是如何实现的,也不关心黑盒里面的结构,只关心软件的输入数据和输出结果。检测软件功能能否按照需求规格说明书的规定正常工作,是否有功能遗漏;检测是否有人机交互错误,是否有数据结构和外部数据库访问错误,是否能恰当地接收数据并保持外部信息(如数据库或文件)等的完整性;检测行为、性能等特性是否满足要求等; 检测程序初始化和终止方面的错误等。
白盒测试法与黑盒测试法相反也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能。
5.3 测试用例与测试过程
5.3.1 功能黑盒测试用例
从黑盒测试基于软件外部功能,不关注内部实现的特性出发,对本地音乐模块进行了实验,并将其细分为主界面、本地音乐模块以及音乐管理模块。针对主界面,着重查看页面布局,包括各种元件的摆放是否合理,点击相应按键后页面能否顺利跳转;同时检验三大系统的三个界面在左右滑动操作时,是否会出现卡顿现象。以下详细介绍这些测试用例,具体内容如表 6 – 1 所示。
表 6-1 播放器主页面测试用例
测试 ID 测试名称 测试步骤 预期结果 测试结果
TC1 主界面测试 1. 用户打开音乐播放器。
2. 点击下载按键,跳转后点击返回。
3. 点击本地音乐、最近播放按键,跳转后点击返回。
4. 点击我喜欢的音乐、私人 FM 按键,跳转后点击返回。
5. 点击历史播放记录按键,跳转后点击返回。
6. 左右滑动三个主页面,检测是否会出现卡顿,页面是否在滑动过程中进行切换。 1. 主界面成功打开,点击每个按键都能正确完成跳转,可精准跳转到对应的模块,点击返回按键后,成功返回到主界面。
2. 三个主界面左右滑动顺畅,不会出现卡顿现象,对于正在展示的页面,页面顶部字体大小颜色发生相应的改变,页面在滑动过程中会发生切换。 通过
TC2 本地音乐显示测试 1. 将本地音乐文件放置于设备指定音乐存储路径。
2. 打开音乐播放器,进入本地音乐模块。 1. 本地音乐模块成功显示本地音乐文件列表,涵盖歌曲名、歌手、专辑封面等信息。
2. 音乐文件信息显示准确,无乱码或错误信息。 通过
TC3 音乐管理模块测试 1. 在本地音乐列表中选择一首歌曲。
2. 点击播放按钮。
3. 点击暂停按钮。
4. 点击上一首 / 下一首按钮。
5. 调整音量大小。 1. 歌曲正常播放,播放界面显示歌曲信息正确。
2. 点击暂停按钮后,歌曲暂停播放,再次点击播放按钮,歌曲继续播放。
3. 点击上一首 / 下一首按钮,能正确切换到相应歌曲。
4. 音量调整功能正常,音量大小变化明显且无杂音。 通过
5.3.2 功能白盒测试用例
基于白盒测试知晓产品内部工作过程,针对音乐歌单模块开展测试,该模块涵盖歌曲列表模块、MV 模块、歌曲查询模块、热门歌手模块和歌曲播放模块。其中,“歌单” 具备在不同音乐平台上对不同歌曲进行区分、展示、批量删除、添加歌曲名单等功能。以下为详细的测试用例,列于表 6 – 2、表 6 – 3 和表 6 – 4中。
表 6-2歌单测试用例
测试 ID 测试名称 测试步骤 预期结果 测试结果
TC4 歌单模块测试 1. 点击歌单创建按钮。
2. 输入歌单名。
3. 点击歌单管理按钮。
4. 对个人歌单进行管理(添加歌曲、删除歌曲、重命名歌单)。
5. 返回主界面查看创建结果。 1. 用户在创建歌单时输入歌单名完成创建,在创建完成后随机选取歌单中一首歌曲封面作为歌单封面。
2. 歌单在展示时每个横向放置两个歌单,并为用户提供歌单名以及歌单中歌曲的数目。
3. 添加、删除歌曲操作成功,歌单中歌曲数量相应变化;重命名歌单成功,歌单名称更新正确。 通过
TC5 歌曲列表详情测试 1. 创建一个歌单并添加多首歌曲。
2. 点击进入该歌单。
3. 查看歌曲列表中的歌曲顺序、歌曲信息。 1. 歌曲列表中歌曲顺序与添加顺序一致(若未手动排序)。
2. 每首歌曲的详细信息(如歌名、歌手、时长等)显示准确。 通过
TC6 音乐播放模块测试 1. 在歌单中选择一首歌曲点击播放。
2. 点击上一首、下一首、暂停、更改播放模式(单曲循环、顺序播放、随机播放)。
3. 锁屏查看播放界面。 1. 播放界面顶部为用户展示歌曲名和歌手名。
2. 中部使用歌曲封面进行旋转展示,封面下部展示相关歌词,如歌词无法找到默认显示暂无歌词。底部提供暂停、下一首、上一首以及播放模式等选项。
3. 手机锁屏后,屏幕仍然展示当前歌曲的播放信息。 通过
表6-3歌单详情测试用例
测试 ID 测试名称 测试步骤 预期结果 测试结果
TC7 歌单歌曲数量显示测试 1. 创建多个不同歌曲数量的歌单。
2. 分别进入每个歌单,查看歌单详情页面显示的歌曲数量。 每个歌单详情页面显示的歌曲数量与实际添加的歌曲数量一致。 通过
TC8 歌单歌曲封面显示测试 1. 创建歌单并为其中部分歌曲添加自定义封面。
2. 进入歌单,查看歌曲列表中每首歌曲的封面显示情况。 有自定义封面的歌曲正确显示自定义封面,未添加自定义封面的歌曲显示默认封面或相关标识。 通过
TC9 歌单歌曲时长显示测试 1. 创建包含多首不同时长歌曲的歌单。
2. 进入歌单,查看歌曲列表中每首歌曲的时长显示情况。 每首歌曲的时长显示准确,与实际歌曲时长相符。 通过
表6-4音乐播放模块测试用例
测试 ID 测试名称 测试步骤 预期结果 测试结果
TC10 音乐播放进度条测试 1. 在歌单中选择一首歌曲点击播放。
2. 拖动播放进度条到不同位置。
3. 观察歌曲播放是否从拖动后的位置开始。 拖动进度条后,歌曲从拖动到的位置开始播放,进度条显示的位置与歌曲实际播放位置相符。 通过
TC11 音乐播放音量渐变测试 1. 在音乐播放过程中,持续缓慢调整音量大小。
2. 观察音量变化是否平滑,有无突变或杂音。 音量随着调整平滑变化,无突变或杂音,音量指示条显示的音量大小与实际音量相符。 通过
TC12 音乐播放跨歌单操作测试 1. 在一个歌单中播放歌曲。
2. 切换到另一个歌单并选择歌曲播放。
3. 再次切换回原歌单继续播放之前的歌曲。 切换歌单和歌曲播放操作正常,歌曲能在不同歌单之间顺利切换播放,且原歌单的播放状态(如播放位置等)能正确保存和恢复。 通过
TC13 音乐播放后台运行测试 1. 在音乐播放过程中,将音乐播放器切换到后台运行。
2. 进行其他手机操作(如打开其他应用、浏览网页等)。
3. 观察音乐播放是否正常,有无中断或异常。 音乐在后台正常播放,不受其他手机操作影响,切换回音乐播放器时,播放状态正常。 通过
5.4 测试结果分析
此次测试主要对基于Android平台的音乐播放器进行测试,主要测试其功能测试及非功能测试,在测试中我们要观察系统是否满足我们的需求,以此来做出进一步优化的调整。对于各种机型的网络环境测试,可以很好地选择具有代表意义的测试结果。
功能测试覆盖了本地音乐模块和音乐歌单模块。本地音乐模块中,主界面测试结果表明,在不同机型和系统版本下,主界面均能成功打开,各按键跳转准确,返回功能正常,左右滑动切换页面流畅且无卡顿,字体颜色和大小变化符合预期,这意味着用户在操作主界面时能获得稳定且流畅的交互体验。本地音乐显示测试中,在指定存储路径放置音乐文件后,各测试设备均能正确显示本地音乐文件列表,信息准确无乱码,保障了用户对本地音乐资源的正常浏览。音乐管理模块的歌曲播放、暂停、切换以及音量调整功能在所有测试场景下均正常运行,确保了用户基本音乐播放控制需求得到满足。
音乐歌单模块测试:歌单创建、管理功能正常,添加、删除歌曲和重命名歌单操作成功,歌单展示符合设计预期,为用户管理个性化歌单提供了可靠支持。歌曲列表详情测试:歌曲序号等信息显示准确,方便用户查找和识别歌曲。音乐播放模块:播放控制、模式切换和锁屏显示功能表现良好,保证用户在不同场景下都能正常播放和控制歌曲。
非功能测试注重了启动时间和内存占用。经过多次测试,系统启动时间在1.5秒以上,系统在启动时较少的等待时间,提高用户使用时的便捷性。内存占用,在测试过程使用连接PC机的Monkey Automation软件和内存库进行探测,最终稳定在95M,属于一个比较合理的内存占用,系统运行时内存占用较少,不会因为内存占用过高影响设备的其他功能,造成系统卡顿。
综合来说,本次测试结果证明,该音乐播放器功能与非功能基本与设计预期一致,在多数的测试环境中音乐播放器都能表现出稳定的行为。但是,在该播放器功能与非功能测试的过程中,也发现了一些可能存在潜在问题的地方,例如,当本地音乐加载较多数据时会出现卡顿现象,这可能会对部分用户体验造成一定的影响。在后续的优化工作中,可以针对以上问题进行优化,例如优化数据加载算法、优化内存管理等,从而进一步提高音乐播放器的性能与体验。
第6章 总结与展望
6.1 研究成果总结
这一次在 Android手机平台上的学习和发展,对于Android音乐层系统的设计有了更深刻的认识,对整体的设计流程也有了更清楚的认识。在播放的时候,可以在音乐播放的首页上进行播放,播放列表等操作,不仅如此在音乐播放器中,用户还可以进行菜单、播放设置和歌曲搜索的操作,虽然这些功能都是音乐播放器中最基本的标准,进行好的开发同样可以给用户带来不一样的体验,正是有这些功能的存在,才使得音乐播放器能成功的完成。
本次程序的设计,开始对音乐播放器的结构框架查阅资料做了一些简单了解,后来慢慢在其中加入自己的构思与设计,加入自己的想法,遇到问题及时查阅资料,努力去克服实现中遇到的一些难题。在实现中开发工具使用了方便Android开发的Android studio工具,语言采用了学习过的Java语言,同时全面结合了Android SDK的内容,做了这些工作后才使得本播放器能吮吸的运行出来。
6.2 研究不足与局限性
在完整性方面的功能虽然比较全,但对于市场成熟的音乐播放器来说,在功能的完整性上,跟以往对比,还存在一些差距,比如在线音乐的更新和推送,没有相应的功能,从而给用户提供最新的音乐资源。在互动社交上的功能,也仅仅只是提供了简单的歌曲分享,没有相应的互动社区,来满足用户对于音乐社交上的需求。
性能优化反观,当本地音乐库的规模足够大时将会导致音乐查询和加载速度变慢,影响用户体验。原因主要在于当前的数据库查询和数据加载算法对于数据规模的处理效率较低。同时,在一些中低端Android手机上,在播放高清音乐或长时间播放音乐时会出现卡顿或者内存占用过高的情况,反映了系统在资源优化和适配性方面存在着调优的空间。
在体验细节中,交界面设计的个性化程度不高,可选择的界面主题和皮肤较少,难以满足用户的审美变化。此外,在一些操作流程上不够简洁高效,例如,添加歌曲到特定歌单的操作繁琐,降低了用户的便捷性。
6.3 未来工作展望
针对以上不足,未来的工作围绕功能扩展、性能优化和用户体验提升三个方面开展。在功能扩展方面,接入在线音乐板块,与各大音乐平台进行合作,获取丰富的音乐资源,实现音乐的在线搜索、在线播放、在线下载。构建音乐社交社区,可以实现用户发表音乐评论、对音乐评论进行点赞、关注等社交行为,增强用户之间的联系,增加用户对音乐分享的乐趣。
性能方面包括对数据库查询和数据加载算法的深入研究和优化,使用更高效的数据结构和查询优化查询和音乐加载的速度,优化内存管理,减少内存泄漏和过度占用,使其能流畅在各个设备上运行。此外,利用新的 Android 系统和硬件加速新特性,使音乐的播放更加稳定,流畅。
���提升用户体验。丰富界面设计主题和皮肤,提供多种个性化选择,满足不同的用户审美。优化操作流程,通过改进界面布局和交互设计,让用户更加便捷高效地进行操作。引进智能语音交互,提供语音搜索、播放控制等语音功能,为用户带来更智能化的音乐播放体验。
相信经过这样的改进和扩充,此音乐播放器将会被不断完善,并且它的功能、性能、体验都会得到提升,能够为用户提供更好、更全面的音乐服务。
参考文献
[1] HiBy Music Unveils the Latest Addition to its Hi-Fi Music Player Line – HiBy R6 Pro II [J]. M2 Presswire, 2023,
[2] Intel Corporation; Patent Issued for System and Method of Providing for the Control of a Music Player to a Device Driver (USPTO 9952824) [J]. Computer Weekly News, 2018, 3186-.
[3] Inventec Appliances; Patent Issued for Wireless Music Playing Method, Wireless Music Playing System and Wireless Music Player (USPTO 9553908) [J]. Telecommunications Weekly, 2017, 930-.
[4] Patents; “Wireless Music Playing Method, Wireless Music Playing System and Wireless Music Player” in Patent Application Approval Process (USPTO 20160054975) [J]. Telecommunications Weekly, 2016,
[5] Tencent Technology (Shenzhen) Company Limited; Patent Application Titled “Music Player, Automatic Skin-Replacing Method and System Thereof, and Computer-Readable Storage Medium” Published Online (USPTO 20150286390) [J]. Journal of Engineering, 2015,
[6] 刘丹,董明华,刘正. 基于鸿蒙系统的分布式音乐播放器设计与实现 [J]. 安徽电子信息职业技术学院学报, 2023, 22 (04): 15-19.
[7] 王鼎文. 新古典主义风格下的UI界面应用研究[D]. 武汉纺织大学, 2023.
[8] 王瑜. 基于Arduino的音乐播放器设计 [J]. 电子设计工程, 2022, 30 (20): 161-165.
[9] 王洪钦,李素芬,吴倩. 基于FPGA的无源蜂鸣器音乐播放器的设计与实现 [J]. 内江科技, 2022, 43 (04): 42-43.
[10] 张皎,金印彬,孙敏. 以“项目引导实验”理念下的数字电子技术实验课程教学改革浅谈——以FPGA音乐播放器设计为例 [J]. 电子质量, 2022, (01): 107-111.
[11] 林陈佑康,王风硕. 基于Web的音乐播放器前端的设计与实现 [J]. 电脑知识与技术, 2021, 17 (36): 89-91.
[12] 马杰瑞,王风硕. 基于web的音乐播放器后端的设计与实现 [J]. 电脑知识与技术, 2021, 17 (35): 72-74.
[13] 贺钊. 基于Android的音乐播放器设计与实现[D]. 南京大学, 2021.
[14] 邓俊豪. Android本地音乐播放器的设计与实现 [J]. 福建电脑, 2021, 37 (03): 89-91.
[15] 苏航. 基于Android的音乐播放器软件的设计与实现[D]. 电子科技大学, 2016.
[16] 吴永萌. 交互体验审美特征的研究与应用[D]. 湖南大学, 2015.
[17] 崔毅明. 基于Android平台的多功能音乐播放器的设计与实现[D]. 吉林大学, 2015.
致谢
在本论文完成之际,衷心感谢我的导师郭晨教授的悉心指导与耐心帮助,您的专业知识和严谨态度让我受益匪浅。同时,感谢井冈山大学提供的学习平台和资源支持。此外,感谢家人和朋友在学习和生活中的鼓励与陪伴。最后,向所有在论文写作过程中给予帮助的老师、同学致以诚挚的谢意



















暂无评论内容