承接上一篇博客《Android音乐播放器的开发实例》
目录
1.国内外现状分析 1
2.需求分析 1
3.系统目标与开发环境 2
3.1开发语言 2
3.2开发工具 2
3.3开发环境 2
4.界面设计 3
4.1暂停播放功能 3
4.2 音乐列表 3
4.3播放上一曲 3
4.4播放下一曲 4
4.5暂停与播放 4
4.6进度条实时更新 4
4.7登录注册界面 5
4.8 用户个人信息进行完善修改 6
4.9 管理员管理界面 7
5.数据库设计 8
6.程序开发 10
7.编译与调试 11
7.1 实验测试问题 11
7.2实验调试 11
8.开发总结 11
在Google的正确领导下,Android开源系统以迅雷不及耳之势,横扫各大移动端系统,成为拥有用户数量最多的系统,音乐播放器的软件数不胜数,为什么我还要在写一个播放器出来呢?因为现在的音乐播放器功能是在是有些多了,为未必不好,但是我总想要一个净纯粹的音乐播放器,只为听歌的播放器,一个有着一些自己想要的功能的播放器,一个自己熟悉代带的播放器,甚至,一个可以自已定义功能结构的音乐播放器。
和过去的MP3播放器只能播放低码率MP3、按键也只有几个的不同,音乐播放器随着科技的进步,无论是对音频格式兼容性还是操作方面都有了很大的进化,很多人购买音乐播放器的时候,都会考虑到上手的难易程度以及对音频格式的支持。现在很多播放器都采用了触控屏,但是触控屏不见得就代表好用,一些播放器即使只使用按键也有不错的上手体验,像支持无损压缩的音乐文件是最好的,特别是可以支持WAV、FLAC、ALAC和APE,最好还能支持CUE管理整个音轨。
目前要找到一个功能非常全面的音乐播放器并不容易,特别是支持CUE管理音轨的,苹果产品虽然操控方便,但是不支持无损音质,所以不建议推荐。这里大家不妨考虑一些国内的播放器,一些国内的专业的音频公司,往往会推出一些不错的播放器,比如飞傲的产品,无论是操控还是格式支持,放眼整个业界都屈指一数;此外想索尼、HiFiMan这些著名厂商的播放器,在功能方面比较全面,操控也比较方便。
音乐的世界,给世间万物带进了美好的时空。任你的思绪遐想,使你整个人陶醉在天上人间。每每听着音乐,就会忘记所有的烦恼,所有的不快,甚至忘记了时间,忘记了一切。音乐,有着无穷的魅力!音乐室世界上最美丽的语言!
现在APP软件市场上面,众多音乐播放器,应接不暇,数不胜数,但是想找到一款适合自己的播放器,还是比较有困难的,而且经过社会调查,有一些播放器现在功能是在是太多了,认为有点累赘,商业化气息很是严重,便想寻求一款简便纯净的播放器。根据用户需求,便基于Android平台设计了一款纯净版的音乐播放器——嘟嘟音乐Music,能够实现音乐的播放、暂停、快进、快退、上一曲、下一曲、播放列表一些基本功能,最主要的特点就是简单方便,用最小的内存,最少的资源去播放音乐。
嘟嘟音乐Music音乐播放器最大的特点纯净、爽朗设计理念,你的所有操作不会有多么的多余,实现主页面只有一个音乐列表、播放按钮、播放进度时间条,在整个界面上面一览无余。你会发现即使只有这样的简便,你操作起来仍然没有任何问题。简单、实用,是嘟嘟音乐Music基于Android的音乐播放器最大的,也是做好的特点。我希望可以有更多人喜欢我做的这一款音乐播放器。
Android的应用也非常广泛,基于Android语言的jsp技术在网站开发中具有跨平台、可伸缩性强等众多优点,且网上的学习资料很多,所以选择Android语言开发。
(1)Android Studio,Android SDK,Genymotion虚拟机,myeclipse,Apache Tomcat服务器。
(2)硬件:笔记本电脑一台,手机两部,手机数据线一条。
表3.1 开发环境表
名称 |
描述 |
操作系统 |
Windows 10 专业版 |
支持软件 |
Android Studio、Android SDK、Genymotion虚拟机、myeclipse、Apache Tomcat服务器 |
网络环境 |
以太网 10/100/1000M |
硬件环境 |
CPU:Intel(R) Core™ i5-6200U 2.3GHz 内存:6G 显存:AMD 2G独显 硬盘:110G固态硬盘 500G机械硬盘 手机两部 数据线一条 |
这是页面的主要界面区域,为了一个编辑框形式的窗口界面,其中用于显示暂停播放和上一曲下一曲的信息,该页面中可显示音乐列表。
图4.1 歌曲列表
以ListView列表方式显示嘟嘟音乐Music音乐播放器现在可以播放器的音乐,列表最少可以显示上千首歌,想让哪首歌曲播放可以点击音乐播放列表里的歌曲,列表显示方式闲的更加的爽朗、清新。
上一曲就是点击按钮之后播放在音乐播放器列表中位于当前正在播放歌曲的上一首歌曲。
图4.2 上一曲代码
其中的实现就如图3.3中所示,songNum为当前播放的歌曲在List中的下标,使用表达式进行判断是否移动下标。然后再调用play方法实现音乐播放器的上一曲功能。
下一曲就是点击按钮去之后播放在音乐播放列表中位于当前正在播放歌曲的下一首歌曲,代码实现与上一曲相差不大,只需改动sonNum + 1 即可实现下一曲功能。
暂停按钮和播放按钮合并在一起,因为使用了一个简单的Button按钮,于是就引入flag作为标志,当flag为1的时候,此时player内没有内容,所以执行musicService.play()函数进行第一次播放,然后flag自增二不再进行第一次播放,当再次点击“开始/暂停”按钮次数即大于1 将执行暂停或继续播放goplay()函数,以此实现播放暂停功能及一个按钮。
图4.3 暂停与播放代码
歌曲在播放的时候会用SeekBar这个系统组件显示当前歌曲播放进度,Android的UI是单线程,为了避免拖住GUI,一些费时的对象应该交给独立的线程去完成,为了进行实时更新,特此为SeekBar开启一个独立线程进行工作。为了使用户增加用户用户体验感,特此在SeekBar上面增加监听,可以进行更改当前歌曲播放进度的需求。
4.4 进度条拖拽代码
嘟嘟音乐播放器是提供给广大用户使用,那么我们就需要提供用户进行登录,以便于提高体验感,在软件的右上方,当用户未登录的时候,我们提示用户未登录。在登录界面,我们采用后台异步处理方式进行验证用户的账户信息的正确性,以及异步焦点处理验证方式,当您的账户信息输入完毕以后,我们系统会自己聚焦异步验证当前账户是否注册,是否符合输入标准等功能,方便用户适时进行调整。在用户的注册界面我也同样也采用焦点聚焦方式,当信息输入完毕以后,为了用户的安全性考虑,若是用户的信息输入的不符合标准的话,将会对其作出提示,供用户进行参考帮助注册。
4.5 登录界面入口
4.6 注册界面
为了用户信息的全面性,用户可以对自己的信息进行修改,也体现了软件的人性化设计。在修改信息界面,我们也同样使用了异步处理技术,并且聚焦用户错误,帮助用户信息修改规范化。
4.7 个人信息修改界面
为了方便管理用户信息,我们在登录界面提供了管理员登录入口,可以使管理员进行一些用户信息的维护检查等工作。在管理界面为了管理员的方便性以及效率,我们使用了现在Google推出的策划菜单页面显示当前管理员的信息,并且集成了管理用户信息的菜单栏。在管理主界面我们采用卡片式信息布局,管理员可以点击每个信息条进入维护用户信息及整改违法用户,更可以使用关键字搜索功能,可以以账号或者昵称为关键字进行信息的查找工作。以方便、快捷、爽朗及舒适为目的打造嘟嘟音乐管理模式。
4.8 嘟嘟音乐管理主页面
4.9侧滑菜单栏
嘟嘟音乐系统的试题有:用户、管理员。得到的数据库的数据项和数据结构为:
l 用户信息user:包括的数据项有_id 主键、 user_id 账号、password 密码、user_name 昵称、ser 性别、email 邮箱、hobby 爱好、regtime 注册时间
l 管理员信息admin:_id 主键、 user_id 账号、password 密码、user_name 昵称、ser 性别、email 邮箱、hobby 爱好、regtime 注册时间
表3-1 数据库表
序号 |
数据库表 |
数据库表存储内容 |
1 |
user |
存储用户注册信息 |
2 |
admin |
存储管理员信息 |
表3-2 user用户信息表
序号 |
字段 |
描述 |
类型和长度 |
其他 |
默认值 |
1 |
_id |
唯一编号 |
Int |
主关键字、自增列 |
无 |
2 |
user_id |
用户账号 |
Varchar(20) |
唯一,非空 |
无 |
3 |
password |
用户密码 |
Varchar(20) |
非空 |
无 |
4 |
user_name |
用户昵称 |
Varchar(50) |
非空 |
无 |
5 |
sex |
性别 |
Varchar(10) |
非空 |
无 |
6 |
|
邮箱 |
Varchar(50) |
可为空 |
无 |
7 |
hobby |
爱好 |
Varchar(50) |
可为空 |
无 |
8 |
regtime |
注册时间 |
Varchar(50) |
非空 |
当前时间 |
用户信息表包含了用户的基本且必要的信息,其中_id是“用户编号”,是系统为用户分配的唯一标识符,在整个用户信息表中是互不相同的;用户名和密码也是必须的,用户在登录嘟嘟音乐的时候需提供,而且用户名也要求是唯一的,系统根据用户名来区分用户;email是用户一共的联系方式,方便在离线的时候与用户取得联系;regtime是用户注册时间;
表3-3 admin用户信息表
序号 |
字段 |
描述 |
类型和长度 |
其他 |
默认值 |
1 |
_id |
唯一编号 |
Int |
主关键字、自增列 |
无 |
2 |
user_id |
管理员账号 |
Varchar(20) |
唯一,非空 |
无 |
3 |
password |
管理员密码 |
Varchar(20) |
非空 |
无 |
4 |
user_name |
管理员昵称 |
Varchar(50) |
非空 |
无 |
5 |
sex |
性别 |
Varchar(10) |
非空 |
无 |
6 |
|
邮箱 |
Varchar(50) |
可为空 |
无 |
7 |
hobby |
爱好 |
Varchar(50) |
可为空 |
无 |
8 |
regtime |
注册时间 |
Varchar(50) |
非空 |
当前时间 |
管理员信息表包含基本信息且必要的信息。其中_id是“管理员唯一编号”,账号密码也是必须的。
程序设计结构框架如图6.1所示,打开app以后直接进入主页面,MainActivity.java类结合activitymain.xml进行读取本地Music文件夹中的音乐文件,并且进行判断当前是否有用户在登录状态。主页面音乐文件使用了ListView进行显示的当前文件名称等信息,使用四个按钮进行使用音乐的播放暂停等功能。
用户可以选择性的进行登录当前音乐播放器,点击右上方的未登录标签,进入登录界面,如果已经注册过用户,请直接登录。若是没有UserId,请前往注册界面注册UserId。登陆过后的用户,可以点击当前登录信息进行自己的信息维护。
管理员可以通过登录界面的管理员登录入口进行登录,连接Apache Tomcat服务器器获取其数据库中的信息,进行验证登录,进行普通注册用户的信息维护,查询等操作。
6.1 总体设计表
实验主要读报错日志进行修改调试,在系统中最多的就是报红,这是最可怕的,一个好的app做出来若是没有报红是不可能的。尤其是我在做音乐控制读取的时候,总是控制不好音乐的播放暂停。还有就是在连接服务器的时候总是“系统异常,强制终止”,尤其是我遇到的丢失R文件异常,那简直是心态爆了,当我写完那一个类后,整个工程的R文件丢失,我也是丈二和尚摸不着头脑,心态炸了,这对我来说简直太重要了,于是乎,我没有休息没有吃饭,各种百度搜索,各种查错误,花费了6个小时,终于解决了。
大多数时间出现的还是空指针异常比较多,这时就需要我们仔细查看LogCat查看错误,一般都能在这里面解决掉。
通过这次项目的开发,使我学到了很多东西。由于刚开始对Android的接触比较少,只会使用几个简单的组件,所以遇到了很多问题。我觉得无论是哪种语言首先要有自己的思路,接下来就是通过语言的实现。我主要遇到Android的四大组件的理解和使用,刚开始不知道如何用相关的组件,而且Android的组件相当的多,就老师上课讲的相关知识比较少,对于我们初学者学习比较困难,而且,只是不是那么的连贯和详细,上课的时间只是跟上老师在敲代码,实现一个具体单一的功能,但没有真正的弄懂它的使用方法,所以,我在这次项目开发中遇到了很多困难。由于Android是用java语言编写的,自己学习java还比较可以,语言不是主要的问题,主要的问题就是Android四大组件的使用和理解,对于老师在课堂上面讲的知识我没清楚的,我会在下面去网上查找信息和资料或者自己翻阅相关书籍,对于其一些借口查阅Android的相关API文档接口文件,通过自己慢慢的实现一个个的功能理解和消化相关的知识,对于解决不了的问题,向老师和同学求助,然后自己一点一点的理解。
这次项目开发使我全面的复习和掌握了java语言,对Android编程知识有了基本的认识个了解,基本掌握了Android的四大组件的相关知识,虽然自己以前没有接触过Android,但是系统的学习过java语言,对语言知识有一定的理解,但是,Android中相关自检和接口非常的繁琐和多,所以,对于初学者不可能一下子全部的掌握所有组件以及接口,但是,通过开发嘟嘟音乐播放器让我明白了Android平台知识的基本使用。最重要的是自己的学习能力的提升,在此阶段,我最上使用的网站就是百度搜索,CSDN程序员博客网站使我学到了很多的知识,不管怎么样,自学能力最重要。
下面附带项目完善后的源码:
《Android Studio DuDuMusic实例及源码 音乐播放器实现SQLite用户注册登录 管理员服务器数据交互》
欢迎大家学习共勉
在这里我为大家创建了学习交流群
大家可以扫码进行加入