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 实现一些三方服务的的初始化;
  • 其他的一些:DataBindingLifecycleRoomWorkerKotlin协程Retrofit 等。

负责内容

  1. 登录注册模块
    1. 基于 OAuth2 通过 Retrofit 和 OkHttp 实现用户登录和第三方登录的认证授权流程;
      1. 通过申请到的 appid 像三方平台发送授权请求,待用户同意后,获取到授权码;
      2. 把授权码发送后台,后天通过授权码和申请到的 secret key,向三方服务器获取 access token;
      3. 通过 access token 完成用户注册/登录;
      4. 获取用户信息和内部 token,展示页面,保存 token 到 SharedPreferences 中;
    2. 自定义扫码登录的 Dialog
      1. 通过 SpannableStringBuilder 实现文字局部样式和事件;
      2. 通过 TabLayout/ViewPager 实现切换二维码登录;
notion image
  1. 用户模块
    1. 页面比较简单,所以采用的 MVVM 的架构方式;
    2. 使用 Glide 的图片加载和 ConstantLayout 的页面布局;
    3. 基于自定义 View 的用户设置项(画质选择这类的单选 View 和下面的普通 Item View);
    4. 基于 SharedPreferences 和 LiveData 的保存用户偏好设置;
notion image
  1. 作品模块
    1. 通过 RecyclerView 的网格布局实现作品页面,并通过 SwipeRefreshLayout 添加上拉加载下拉刷新的逻辑;
    2. 基于 MVI 的架构,通过密封类、枚举、Lifecycle 实现作品的多选、全选、全不选、删除、取消的状态控制,和事件流程;
notion image
  1. 会员购买
    1. 基于属性动画实现选择会员类型缩放效果;
    2. 基于 Kotlin 协程实现的微信支付循环检测是否支付结果;
notion image
  1. App内版本更新
    1. 基于公司内部 OTA 系统获取 App 最新版本信息;
    2. 通过 Retrofit @Streaming 下载最新 APK 到磁盘,并监听下载进度,显示进度条;
    3. 通过 md5 工具检验 APK的合法性,然后通过 ContentProvider 实现 Apk 的安装;
  1. 其他
    1. 通过属性动画、RecyclerView、shader、LinearGradient 实现带动画的自定义歌词组件。
    2. 通过内外缓存目录计算 App 内部缓存计,和帮助用户清理缓存;
Loading...
shuouyang
shuouyang
android开发 ReactNative开发 小程序开发
最新发布
AOSP 环境搭建
2025-3-29
View 绘制流程-源码解析
2025-3-12
HTTP
2025-3-4
JVM 虚拟机
2025-2-28
蓝牙-BLE-基础
2025-2-28
从 OkHttp 的原理来看 HTTP
2025-2-19
公告
🎉热点信息🎉
--- 1 ---
Jet Brains 推出新的跨平台支持 Kotlin MultiPlatform
--- 2 ---
新的小巧便捷的依赖注入框架 Koin
--- 3 ---
新一代 API 查询语言 GraphQL