{"id":21345227,"url":"https://github.com/susionsuc/android-learn-music","last_synced_at":"2025-04-09T17:25:01.059Z","repository":{"id":109150031,"uuid":"79616243","full_name":"SusionSuc/android-learn-music","owner":"SusionSuc","description":"Android毕业设计; Android, Music Player, for graduation","archived":false,"fork":false,"pushed_at":"2017-04-24T02:28:14.000Z","size":37715,"stargazers_count":324,"open_issues_count":6,"forks_count":66,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-04-02T11:50:39.273Z","etag":null,"topics":["android","gank","graduation","music-player","zhihu"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SusionSuc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-01-21T01:48:50.000Z","updated_at":"2025-03-22T06:04:06.000Z","dependencies_parsed_at":"2023-06-15T02:30:24.822Z","dependency_job_id":null,"html_url":"https://github.com/SusionSuc/android-learn-music","commit_stats":null,"previous_names":["susionsuc/android-learn-music"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SusionSuc%2Fandroid-learn-music","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SusionSuc%2Fandroid-learn-music/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SusionSuc%2Fandroid-learn-music/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SusionSuc%2Fandroid-learn-music/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SusionSuc","download_url":"https://codeload.github.com/SusionSuc/android-learn-music/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248075765,"owners_count":21043646,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","gank","graduation","music-player","zhihu"],"created_at":"2024-11-22T01:30:06.574Z","updated_at":"2025-04-09T17:25:01.036Z","avatar_url":"https://github.com/SusionSuc.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 随 心\n\u003e刚开始写这个项目的时候是为了自己的毕业设计。\n\u003e后来慢慢的就想借这个项目来巩固自己的Android编程技能，也可以更好的站在全局来考虑项目的开发，而不只是需求的迭代开发。\n\n## APP细节\n\n### API\n- APP的API\n    - 音乐部分，是在网络上收集的网易云音乐的API。用了挺散的， 比如 ： https://github.com/javaSwing/MusicAPI\n    - 知乎日报， https://github.com/izzyleung/ZhihuDailyPurify/wiki/%E7%9F%A5%E4%B9%8E%E6%97%A5%E6%8A%A5-API-%E5%88%86%E6%9E%90\n    - 段子、图片， API市场\n- 对于第三方开源库的使用\n    - 基础库： RxJava, Retrofit, fresco, eventbus\n    - 侧滑退出\n- 项目编码\n    - 对于复杂的逻辑， 采用的MVP编写。\n    - 由于本人是处女座，代码阅读起来应该还是比较容易的。\n- github\n    - https://github.com/SusionSuc/Boring\n    - 当然还是希望可以给一个star的... 谢谢\n\n### 模块设计架构\n- 音乐播放模块的大体架构\n    - MusicServie负责维护音乐播放\n        - 管理 MediaPlayer\n        - 管理 播放队列\n    - Client 与 MusicService的通讯\n        - MusicService 会开启一个广播接收者，根据相应的广播Action，处理相应的事件\n        - 抽取音乐播放Action类， 即发送特定的Action来控制音乐播放\n        - Client 通过广播接收者，来更新音乐播放相关UI : 进度、播放状态等\n        - Client 通过Action类，向Service的广播接收者发送特定的Action，来实现音乐的控制。\n- 阅读模块的大体架构\n    - 知乎阅读\n        - StickHeader的实现，\n        - 对于知乎文章的展示， 利用RxJava请求文章内容，文章的CSS样式， 然后拼接 Html内容，进行展示\n    - 段子\n        - 普通的RecyclerView列表\n    - 图片\n        - 通过分类window来切换图片请求的URI\n        - 图片的查看，简单的实现缩放退出\n- 整个APP的收藏模块\n    - 利用第三方关系型数据库， 泛型， 实现了简单的对象存储\n    - 最简单的收藏就是： 收藏：把对象存入数据库， 删除收藏： 把对象从数据库中删除\n\n- APP 中RecylerView的使用\n    - 通过对Adapter和ViewHolder的抽取\n    - 整个具体UI的展现， 可以说是面向 ItemHandler 的编程。\n\n- 接下来事情不是很多，对整个APP还会慢慢优化。\n\n\n## APP截图\n\n\u003cimg src=\"./screenshot/mainpage1.jpg\" width = \"210\" height = \"375\" alt=\"图片名称\" align=center /\u003e\n\u003cimg src=\"./screenshot/mainpage2.jpg \" width = \"210\" height = \"375\" alt=\"图片名称\" align=center /\u003e\n\u003cimg src=\"./screenshot/musicdetail.jpg\" width = \"210\" height = \"375\" alt=\"图片名称\" align=center /\u003e\n\u003cimg src=\"./screenshot/playlist.jpg\" width = \"210\" height = \"375\" alt=\"图片名称\" align=center /\u003e\n\u003cimg src=\"./screenshot/readingpage.jpg\" width = \"210\" height = \"375\" alt=\"图片名称\" align=center /\u003e\n\u003cimg src=\"./screenshot/essaydetail.jpg\" width = \"210\" height = \"375\" alt=\"图片名称\" align=center /\u003e\n\u003cimg src=\"./screenshot/drawerpage.jpg\" width = \"210\" height = \"375\" alt=\"图片名称\" align=center /\u003e\n\u003cimg src=\"./screenshot/joke.jpg\" width = \"210\" height = \"375\" alt=\"图片名称\" align=center /\u003e\n\u003cimg src=\"./screenshot/imagepage.jpg\" width = \"210\" height = \"375\" alt=\"图片名称\" align=center /\u003e\n\u003cimg src=\"./screenshot/changepage.jpg\" width = \"210\" height = \"375\" alt=\"图片名称\" align=center /\u003e\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsusionsuc%2Fandroid-learn-music","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsusionsuc%2Fandroid-learn-music","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsusionsuc%2Fandroid-learn-music/lists"}