URL-TEXT
/project/car_ksong_app
Start Date
Jun 1, 2022
End Date
Aug 1, 2023
SubTtile
负责部分模块开发
车载 K 歌 App (模块开发) 2022.06 ~ 2023.08
演示视频
项目简介
业务上来说:
一个基于第三方平台(目前是酷狗)的车载或大屏 K 歌 App,能够为不同的车厂定制UI风格。
技术上来说:
一个标准的基于 Jetpack 的 App。
技术栈
- 通过
Hilt
实现的依赖注入;
- 通过
Navigtion
封装的路由,实现全局的页面跳转;整体的页面采用的是单 Activity 多 Fragment;
- 架构对于不同的页面有不同的实现,一些没有泛用型的页面采用的是
MVVM
架构,列表页面等具有泛用型逻辑的(加载数据,刷新数据等)采用的是MVI
架构;
- 使用的
startup
实现一些三方服务的的初始化;
- 其他的一些:
DataBinding
、Lifecycle
、Room
、Worker
、Kotlin
、协程
、Retrofit
等。
负责内容
- 登录注册模块
- 基于 OAuth2 通过 Retrofit 和 OkHttp 实现用户登录和第三方登录的认证授权流程;
- 通过申请到的 appid 像三方平台发送授权请求,待用户同意后,获取到授权码;
- 把授权码发送后台,后天通过授权码和申请到的 secret key,向三方服务器获取 access token;
- 通过 access token 完成用户注册/登录;
- 获取用户信息和内部 token,展示页面,保存 token 到 SharedPreferences 中;
- 自定义扫码登录的 Dialog
- 通过
SpannableStringBuilder
实现文字局部样式和事件; - 通过 TabLayout/ViewPager 实现切换二维码登录;

- 用户模块
- 页面比较简单,所以采用的 MVVM 的架构方式;
- 使用 Glide 的图片加载和 ConstantLayout 的页面布局;
- 基于自定义 View 的用户设置项(画质选择这类的单选 View 和下面的普通 Item View);
- 基于 SharedPreferences 和 LiveData 的保存用户偏好设置;

- 作品模块
- 通过 RecyclerView 的网格布局实现作品页面,并通过 SwipeRefreshLayout 添加上拉加载下拉刷新的逻辑;
- 基于 MVI 的架构,通过密封类、枚举、Lifecycle 实现作品的多选、全选、全不选、删除、取消的状态控制,和事件流程;

- 会员购买
- 基于属性动画实现选择会员类型缩放效果;
- 基于 Kotlin 协程实现的微信支付循环检测是否支付结果;

- App内版本更新
- 基于公司内部 OTA 系统获取 App 最新版本信息;
- 通过 Retrofit @Streaming 下载最新 APK 到磁盘,并监听下载进度,显示进度条;
- 通过 md5 工具检验 APK的合法性,然后通过 ContentProvider 实现 Apk 的安装;
- 其他
- 通过属性动画、RecyclerView、shader、LinearGradient 实现带动画的自定义歌词组件。
- 通过内外缓存目录计算 App 内部缓存计,和帮助用户清理缓存;