Releases: LangYa466/PhoneApp
Releases · LangYa466/PhoneApp
Release list
v2.1
release: 2.1 通话记录 / 拨号器 / In-call 大改版 + 一堆 bug 修复
通话记录页 (CallLog)
- 整页改 MD3 list-item 风格 干掉每行 MaterialCardView, 改成整行 ripple + 字母头像圆
- 字母头像按号码 hash 在 primary/secondary/tertiary container 三色轮转, 同号码颜色固定
- 联系人有头像时异步加载 (ContactAvatars: 单线程 IO + 4MB LruCache + tag 防回收串图)
- 日期分组 header: 今天 / 昨天 / 更早
- 顶部 MD3 Filter ChipGroup: 全部 / 未接 / 来电 / 已拨 (单选必选)
- 未接电话方向 icon + 副文本走 colorError 突出
- 同号码连续多通自动折叠 显示 "(N)" 次数
- 折叠组点击行展开 显示组内每次时间 (Wed 4:36 PM 绝对时间格式 + 时长)
- 展开面板下方两个 Tonal action: Message (smsto:) / Contact (有联系人跳详情 没有就新建)
- 整行点击: 单通直接回拨 多通切换展开/折叠 右侧 IconButton 始终回拨最新一通
拨号器页 (Dialer)
- 整页重构: 顶部 ScrollView 可滚 + 底部固定拨号区 Y 不变
- 拨号区背景 colorSurfaceContainer 顶部圆角 28dp 视觉上和上方滚动区分开
- 号码显示行移到拨号区顶部: overflow icon 左 / EditText 居中 / backspace 右
- 顶部命中区按输入数字搜:
- 「All contacts」联系人 (Phone.NUMBER 归一化后 contains digits)
- 「Not in your contacts」通话记录里命中但不在通讯录的号码
- 匹配号码段加粗 (SpannableString StyleSpan), 例 "Mobile 11451<b>4</b>"
- 命中行带联系人头像 + 字母 fallback + 直接呼叫按钮
- DialerMatchRepository: ContactMatch + OtherMatch records 限 8 / 4 条
In-call 页
- 「更多」面板每行 Add call / Hold 改用圆角 28dp surfaceContainerHigh ripple 背景
- 行内 icon 圆从 colorSecondaryContainer (紫调) → colorSurfaceContainerHighest (中性灰)
- 「More」标题字号 TitleMedium → TitleLarge
- Dock 按钮圆角 30dp (胶囊) → 16dp (圆角方块) 跟 Pixel Dialer 一致
ContactsRepository
- 新增 lookupPhotoUri(): PhoneLookup 查 PHOTO_THUMBNAIL_URI 回退到 PHOTO_URI
- 新增 lookupContactUri(): 解出真正可 ACTION_VIEW 的 Contacts lookup uri
(之前直接拿 PhoneLookup CONTENT_FILTER_URI 去 VIEW 必然 ActivityNotFoundException)
Bug 修复
- More 面板 Add call / Hold icon 暗色模式下显示黑色:
IconicsImageView 不会自动跟随主题色 必须显式声明 app:iiv_color - 展开面板 Contact 按钮 toast「no app available」:
- PhoneLookup CONTENT_FILTER_URI 不能直接 ACTION_VIEW 改走 Contacts.getLookupUri
- ACTION_INSERT_OR_EDIT 改成 ACTION_INSERT + CONTENT_TYPE 跟 DialerFragment 对齐
- AndroidManifest 补 queries 声明 (Android 11+ package visibility):
smsto VIEW / SENDTO, contacts INSERT, contacts VIEW (item/contact + item/person) - Monochrome launcher icon 在 Pixel Launcher 不被主题化:
去掉 <group> scale/translate 变换 路径坐标 ×2.5 +24 烤进 108×108 viewport 直填
代码规范统一
- 去掉所有 inline 完整类名 (io.langya.module.R.string.xxx / android.R.attr.xxx)
- material / framework R 用 static import 个别属性常量 避免和项目 R 命名冲突
- import 分组: java → 第三方 (android/androidx/com/timber) → io.langya, 空行分隔
- 删未使用 import, 散落 magic dp 提取成常量
v2.0
release: 2.0 拨号器输入栏改成 EditText 支持复制粘贴
- tvDisplay 从 TextView 换成 EditText inputType=phone
代码里 setShowSoftInputOnFocus(false) 禁掉系统软键盘 (依然走本地拨号盘) - 加 TextWatcher 监听粘贴/手动编辑: sanitize 后剥掉 -/空格/括号
只留 digits + + * #, 再 reformat - updatingDisplay flag 避免 setText 触发自身的 watcher 死循环
- 光标自动放在末尾, 长按可粘贴 / 选择 / 复制
v1.9
release: 1.9 在线号码识别全换百度网页抓取
- 干掉 TaobaoLookup (实测从来没识别出过东西)
- BaiduWebLookup: 主线程起离屏 WebView 跑 m.baidu.com/s?wd=NUMBER
onPageFinished 后 evaluateJavascript 拉 document.body.innerText
正则扫 '号码归属/标记为/用户标记/...XX快递/外卖/中介' 等子串
全程 try-catch 失败回 null 不挂主流水线 - IO 线程 CountDownLatch 等结果 8 秒超时, 不阻塞 UI
- 不需要 SYSTEM_ALERT_WINDOW (WebView 不上屏只跑网络 + JS)
- 流水线: BUILTIN_DB → cache → 离线号段 → 百度网页抓取
- About 里 API 条目从淘宝换成百度
v1.8
release: 1.8 修复通话页按钮 icon 不居中 + 更新截图
- MaterialButton icon-only 时默认 gravity 把 icon 推到左边
Hangup/Reject/Answer/DockIcon 四个样式加 gravity=center- paddingStart/End=0 让 icon 真正居中
- 更新 calling / setting 截图
v1.7
release: 1.7 加 GitHub Releases 在线更新检查
- UpdateChecker 走 api.github.com/repos/LangYa466/PhoneApp/releases/latest
比 tag_name 和 BuildConfig.VERSION_NAME, 按 . 分段数字比较 - MainActivity onCreate 自动检查 (12 小时一次), 有新版弹 MD3 对话框直跳 release 页
- 设置「关于」分类加「检查更新」入口, 手动触发不受频率限制
v1.6
release: 1.6 Pixel 风格拨号器 + MD3 完整对齐 + 签名发布流水线
- Pixel 风格 DialerFragment: AsYouTypeFormatter 实时格式化, 字母 sublabel,
联系人建议行 (新建/添加联系人/发短信) - MainActivity toolbar 设置齿轮和通话记录 btnCallBack 右边对齐
- 启用 enableOnBackInvokedCallback, 关闭 OnBackInvokedCallback 警告
- ContactsRepository 去掉 no-match 日志噪声
- ci: release: 前缀触发 GitHub Action 自动出签名 APK + 发 release
- 配置 signingConfigs.release 走环境变量, 本地无 env 时回退不签名