把 Android 的厂商和型号编码翻译为面向用户的设备名称。型号数据来自 KHwang9883/MobileModels,随 AAR 离线提供,运行时不需要网络权限。
- 使用
Build.MANUFACTURER + Build.MODEL查询当前设备名称 - 对跨品牌重复型号进行消歧,不会静默返回错误品牌
- 支持 Xiaomi/Redmi/POCO 等常见 Android 厂商别名
- 展示名称自动补全品牌,并避免重复品牌前缀
- 返回型号对应的全部地区和版本候选
- 当前设备查询只解析匹配行,完整数据解析后在进程内缓存
- 提供后台加载、主线程回调的异步 API,无第三方运行时依赖
当前版本可通过 JitPack 引入:
// settings.gradle.kts
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven("https://jitpack.io")
}
}// app/build.gradle.kts
dependencies {
implementation("com.github.finnlian:MobileModels-Android:v0.1.1")
}查询当前设备:
MobileModels.currentAsync(context) { device ->
val name = device?.displayName
}默认回调在主线程执行。displayName 的格式为 品牌 产品名 版本名(可选);产品名已包含品牌或子品牌时不会重复。例如:
HUAWEI P40 4G 全网通版
realme 1
三星 Galaxy S23 Ultra
查询指定品牌和型号:
MobileModels.getAsync(context) { models ->
val name = models.translate(
brand = "HUAWEI",
model = "ANA-AL00",
)
// HUAWEI P40 4G 全网通版
val unambiguousName = models.translate("ANA-AL00")
}Java:
MobileModels.getAsync(context, models -> {
String name = models.translate("samsung", "SM-S9180");
});仅传型号可能遇到跨品牌重复值。此时 translate(model) 会返回 null,可以使用 findAll(model) 展示或自行筛选全部候选。
同步的 get(context)、current(context) 和 currentName(context) 继续保留。get(context) 首次调用会读取并解析完整数据集,请只在后台线程调用,或先通过 getAsync(context) 完成预加载。
./scripts/update_models.sh
./gradlew test更新脚本会同步上游 CSV、完整数据许可证和准确的上游提交信息。
- 本项目代码:Apache License 2.0
- 随库数据:CC BY-NC-SA 4.0
数据许可包含“非商业性使用”限制。商业应用不能仅依据本仓库的开源许可直接使用随库数据,请先取得上游作者额外授权或替换数据源。详见 NOTICE.md。