Skip to content

Repository files navigation

MobileModels Android

把 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

About

Android 设备型号名称翻译库,基于 MobileModels 离线数据

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages