大家抱歉~~,课业繁忙,暂时鸽了。以后还是会补上的。源代码分享给大家了。 --2020.6.4
---------------------------------------------------------------------------------------------------
收到了好多小伙伴的私信,那就和大家分享一下程序开发的思路和代码。
功能说明->说明文档
演示视频->Android音乐播放器
源代码->GitHub
每个功能具体实现可能需要单开一篇博客来介绍,不然篇幅太长大家也就失去了耐心。
1.系统功能
图1.1页面层次
图1.2首页 功能概述图
图1.3服务 功能概述图
系统界面和功能概述如上图所示,主要具体实现功能如下:(*与代码量/实现难度成正比)
- 点击播放音乐*
- 后台播放***
- 点击/自动播放下一曲**
- 单曲循环/列表循环*
- 进度条显示,可拖动播放的进度条
- 歌曲名/歌手名搜索**
- 自动扫描获取手机内存歌曲*
- 联网时加载预置在线歌曲*
- 初次打开软件,请求获取存储权限*
- 侧滑菜单栏界面+主页面动态联动***
- 前端交互优化,点击水波纹效果/控制键按压反色动态效果**
2.涉及到的技术点
技术难点:
① 实现完全的前后端分割,activity与service分割,activity结束后service仍可后端运行,activity再次启动时,绑定service并获取信息设置页面信息。
② 侧滑菜单栏的实现页面切换时,为了减小页面切换的延迟,使用动态fragment,并将每个创建的fragment压栈。
③ 为了达到列表的筛选效果,无方法可以调用的情况下,自己实现了基于歌名和歌手名的筛选逻辑。
④ 设计了软件图标、界面和所有的交互按钮动态效果。
用到的组件/类:
Activity中:
ImageView(所有的点击图标)、TextView(显示信息)、ToolBar+SearchView(搜索框)、RecyclerView+ LinearLayoutManager (列表)、SeekBar+Handler+ Runnable(进度条)、BroadcastReceiver+ IntentFilter (界面信息更新)、ConnectivityManager+ NetworkInfo (网络状态)、ContentResolver+ Cursor(读取内存歌曲)
DrawerLayout+ NavigationView+ Fragment+ FragmentManager+ FragmentTransaction(侧滑菜单)、DisplayMetrics+ RelativeLayout(主页面动态联动)
Service中:
Service(音乐服务) 、IntentService(转发更新信息)、MediaPlayer(音乐播放)
启动页面:
RxPermissions(github第三方开源库 动态权限获取)
其他:Toast、Intent等
3.功能实现
1.后台音乐播放构架
2.待更......
3.