Obtener el modelo de teléfono Android mediante programación. ¿Cómo obtener el nombre y el modelo del dispositivo mediante programación en Android?
Me gustaría saber si hay alguna forma de leer el modelo de teléfono mediante programación en Android.
Me gustaría conseguir una cadena como HTC Dream, Milestone, Sapphire o lo que sea...
Utilizo el siguiente código para obtener el nombre completo del dispositivo. Obtiene cadenas de modelo y fabricante y las concatena a menos que la cadena de modelo ya contenga el nombre del fabricante (en algunos teléfonos sí):
public String getDeviceName() {
String manufacturer = Build.MANUFACTURER;
String model = Build.MODEL;
if (model.toLowerCase().startsWith(manufacturer.toLowerCase())) {
return capitalize(model);
} else {
return capitalize(manufacturer) + " " + model;
}
}
private String capitalize(String s) {
if (s == null || s.length() == 0) {
return "";
}
char first = s.charAt(0);
if (Character.isUpperCase(first)) {
return s;
} else {
return Character.toUpperCase(first) + s.substring(1);
}
}
Aquí hay algunos ejemplos de nombres de dispositivos que recibí de los usuarios:
Samsung GT-S5830L
Motorola MB860
Sony Ericsson LT18i
LGE LG-P500
HTC Desire V
HTC Wildfire S A510e
…
En muchos dispositivos populares, el nombre comercial del dispositivo no está disponible. Por ejemplo, en el Samsung Galaxy S6 el valor de Build.MODEL
podría ser "SM-G920F"
, "SM-G920I"
o "SM-G920W8"
.
Creé una pequeña biblioteca que obtiene el nombre comercial (amigable para el consumidor) de un dispositivo. Obtiene el nombre correcto para más de 10.000 dispositivos y se actualiza constantemente. Si desea utilizar mi biblioteca, haga clic en el siguiente enlace:
Biblioteca AndroidDeviceNames en Github
Si no desea utilizar la biblioteca anterior, esta es la mejor solución para obtener un nombre de dispositivo fácil de usar:
/** 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();
}
Ejemplo de mi Verizon HTC One M8:
// using method from above
System.out.println(getDeviceName());
// Using https://github.com/jaredrummler/AndroidDeviceNames
System.out.println(DeviceName.getDeviceName());
Resultado:
HTC6525LVW
HTC One (M8)
Sí: Build.MODEL .