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?

Resuelto Andrea Baccega asked hace 54 años • 16 respuestas

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...

Andrea Baccega avatar Jan 01 '70 08:01 Andrea Baccega
Aceptado

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

Volo avatar Oct 03 '2012 11:10 Volo

En muchos dispositivos populares, el nombre comercial del dispositivo no está disponible. Por ejemplo, en el Samsung Galaxy S6 el valor de Build.MODELpodrí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)

Jared Rummler avatar Jan 08 '2015 09:01 Jared Rummler

Sí: Build.MODEL .

Mirko N. avatar Jan 03 '2010 16:01 Mirko N.