在许多流行的设备上,该设备的市场名称是不可用的。例如,在三星Galaxy S6上,Build.MODEL可能是"SM-G920F", "SM-G920I",或"SM-G920W8".
我创建了一个小型库来获取设备的市场名称(消费者友好)。它得到正确的名称一万多设备和不断更新。如果您希望使用我的库,请单击下面的链接:
如果不想使用上面的库,那么这是获得对消费者友好的设备名称的最佳解决方案:/** Returns the consumer friendly device name */public static String getDeviceName() {
String manufacturer = Build.MANUFACTURER;
String model = Build.MODEL;
if (model.startsWith(manufacturer)) {
return capitalize(model);
}
return capitalize(manufacturer) + " " + model;}private static String capitalize(String str) {
if (TextUtils.isEmpty(str)) {
return str;
}
char[] arr = str.toCharArray();
boolean capitalizeNext = true;
StringBuilder phrase = new StringBuilder();
for (char c : arr) {
if (capitalizeNext && Character.isLetter(c)) {
phrase.append(Character.toUpperCase(c));
capitalizeNext = false;
continue;
} else if (Character.isWhitespace(c)) {
capitalizeNext = true;
}
phrase.append(c);
}
return phrase.toString();}
我的Verizon HTC One M8的例子:// using method from aboveSystem.out.println(getDeviceName());
// Using https://github.com/jaredrummler/AndroidDeviceNamesSystem.out.println(DeviceName.getDeviceName());
结果:HTC6525LVW
HTC One(M8)