我已经尝试了几种方法从索尼Android电视(如Build.model
和Build.name
)中获取型号,但它返回了类似于电视名称的东西(即Bravia 2015) 我需要的是该特定电视的完整型号(即 KDL-50W800C) 请让我知道该怎么做。
简短回答:
Build.FINGERPRINT可能会有你想要的东西,然后是一些。下面的片段来自android/os/Build.java:
/** A string that uniquely identifies this build. Do not attempt to parse this value. */
public static final String FINGERPRINT = deriveFingerprint();
/**
* Some devices split the fingerprint components between multiple
* partitions, so we might derive the fingerprint at runtime.
*/
private static String deriveFingerprint() {
String finger = SystemProperties.get("ro.build.fingerprint");
if (TextUtils.isEmpty(finger)) {
finger = getString("ro.product.brand") + '/' +
getString("ro.product.name") + '/' +
getString("ro.product.device") + ':' +
getString("ro.build.version.release") + '/' +
getString("ro.build.id") + '/' +
getString("ro.build.version.incremental") + ':' +
getString("ro.build.type") + '/' +
getString("ro.build.tags");
}
return finger;
}
长答案:
它应该在可读的系统属性中(很可能是上面的属性之一)。但是值得注意的是,它不能保证在所有设备/构建上一致地填充。
以下是提取数据的几种方法:
通过 android/os/Build 以编程方式.java - 用于一组有限的属性,如上所示
通过 java.lang.System.getProperty 以编程方式 - 使用 getProperties(可选字符串)
在运行时之外只是为了调试/查看通过终端$ adb shell getprop发生了什么 - 这将全部打印出来
以下是一些示例(第一个仿真器,第二个定制电视机顶盒)
[ro.build.fingerprint]: [generic_x86/sdk_google_atv_x86/generic_x86:5.1.1/LMY48X/2916408:userdebug/test-keys]
[ro.build.product]: [generic_x86]
[ro.build.id]: [LMY48X]
[ro.hardware]: [ranchu]
[ro.product.brand]: [generic_x86]
[ro.product.device]: [generic_x86]
[ro.product.manufacturer]: [unknown]
[ro.product.model]: [sdk_google_atv_x86]
[ro.product.name]: [sdk_google_atv_x86]
[ro.build.fingerprint]: [Android/p202/p202:5.1.1/LMY44V/20170215:userdebug/release-keys]
[ro.build.product]: [p202]
[ro.build.id]: [LMY44V]
[ro.hardware]: [amlogic]
[ro.product.brand]: [Alta]
[ro.product.device]: [p202]
[ro.product.manufacturer]: [AltaDigital]
[ro.product.model]: [H4401]
[ro.product.name]: [p202]
[ro.stb.chip]: [AMLOGICS905]
我不确定是否可以/在哪里找到所有 android 操作系统系统属性,如果有人知道,请添加,但这里有一些系统属性的链接:
添加新设备, 设备选择选项