ver - Obtener el modelo de teléfono Android programáticamente
como saber los datos de mi celular (14)
Al parecer, debe utilizar la lista de Google en support.google.com/googleplay/answer/1727131
Las API no devuelven nada de lo que espero ni nada en Configuración. Para mi Motorola X esto es lo que obtengo
Build.MODEL = "XT1053"
Build.BRAND = "motorola"
Build.PRODUCT = "ghost"
Ir a la page mencionada arriba "mapas de fantasmas" a Moto X. Parece que esto podría ser un poco más simple ...
Me gustaría saber si hay una manera de leer el modelo de teléfono mediante programación en Android.
Me gustaría obtener una cadena como HTC Dream, Milestone, Sapphire o lo que sea ...
Aquí está mi código, para obtener fabricante, marca, versión de sistema operativo y nivel de API de soporte
String manufacturer = Build.MANUFACTURER;
String model = Build.MODEL + " " + android.os.Build.BRAND +" ("
+ android.os.Build.VERSION.RELEASE+")"
+ " API-" + android.os.Build.VERSION.SDK_INT;
if (model.startsWith(manufacturer)) {
return capitalize(model);
} else {
return capitalize(manufacturer) + " " + model;
}
Salida:
System.out: button press on device name = Lava Alfa L iris(5.0) API-21
En realidad eso no es 100% correcto. Eso te puede dar Modelo (a veces números).
Le conseguiremos el fabricante del teléfono (parte de HTC de su solicitud):
Build.MANUFACTURER
Para un nombre de producto:
Build.PRODUCT
Las siguientes cadenas son todas de uso cuando desea recuperar el fabricante, el nombre del dispositivo y / o el modelo:
String manufacturer = Build.MANUFACTURER;
String brand = Build.BRAND;
String product = Build.PRODUCT;
String model = Build.MODEL;
Para quienes buscan la lista completa de propiedades de Build
aquí es un ejemplo de Sony Z1 Compact:
Build.BOARD = MSM8974
Build.BOOTLOADER = s1
Build.BRAND = Sony
Build.CPU_ABI = armeabi-v7a
Build.CPU_ABI2 = armeabi
Build.DEVICE = D5503
Build.DISPLAY = 14.6.A.1.236
Build.FINGERPRINT = Sony/D5503/D5503:5.1.1/14.6.A.1.236/2031203XXX:user/release-keys
Build.HARDWARE = qcom
Build.HOST = BuildHost
Build.ID = 14.6.A.1.236
Build.IS_DEBUGGABLE = false
Build.MANUFACTURER = Sony
Build.MODEL = D5503
Build.PRODUCT = D5503
Build.RADIO = unknown
Build.SERIAL = CB5A1YGVMT
Build.SUPPORTED_32_BIT_ABIS = [Ljava.lang.String;@3dd90541
Build.SUPPORTED_64_BIT_ABIS = [Ljava.lang.String;@1da4fc3
Build.SUPPORTED_ABIS = [Ljava.lang.String;@525f635
Build.TAGS = release-keys
Build.TIME = 144792559XXXX
Build.TYPE = user
Build.UNKNOWN = unknown
Build.USER = BuildUser
Puede enumerar fácilmente esas propiedades para su dispositivo en modo de depuración usando el diálogo "evaluar expresión" usando kotlin:
android.os.Build::class.java.fields.map { "Build.${it.name} = ${it.get(it.name)}"}.joinToString("/n")
Puede obtener el nombre del dispositivo del teléfono
Adaptador Bluetooth
En caso de que el teléfono no sea compatible con Bluetooth, entonces debe construir el nombre del dispositivo desde
clase de android.os
Aquí está el código de muestra para obtener el nombre del dispositivo del teléfono.
public String getPhoneDeviceName() {
String name=null;
// Try to take Bluetooth name
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
if (adapter != null) {
name = adapter.getName();
}
// If not found, use MODEL name
if (TextUtils.isEmpty(name)) {
String manufacturer = Build.MANUFACTURER;
String model = Build.MODEL;
if (model.startsWith(manufacturer)) {
name = model;
} else {
name = manufacturer + " " + model;
}
}
return name;
}
Puede probar la siguiente función y devolver su nombre de phoneModel en formato de cadena.
public String phoneModel() {
return Build.MODEL;
}
Puede usar el siguiente código para obtener la marca y el modelo de marca del dispositivo.
String brand = Build.BRAND; // for getting BrandName
String model = Build.MODEL; // for getting Model of the device
Sí: Build.MODEL .
Se modificó un poco el código de Idolons. Esto capitalizará las palabras al obtener el modelo del dispositivo.
public static String getDeviceName() {
final String manufacturer = Build.MANUFACTURER, model = Build.MODEL;
return model.startsWith(manufacturer) ? capitalizePhrase(model) : capitalizePhrase(manufacturer) + " " + model;
}
private static String capitalizePhrase(String s) {
if (s == null || s.length() == 0)
return s;
else {
StringBuilder phrase = new StringBuilder();
boolean next = true;
for (char c : s.toCharArray()) {
if (next && Character.isLetter(c) || Character.isWhitespace(c))
next = Character.isWhitespace(c = Character.toUpperCase(c));
phrase.append(c);
}
return phrase.toString();
}
}
Uso el siguiente código para obtener el nombre completo del dispositivo. Obtiene las cadenas del modelo y del fabricante y las concatena a menos que la cadena del modelo ya contenga el nombre del fabricante (en algunos teléfonos lo hace):
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 obtuve de los usuarios:
Samsung GT-S5830L
Motorola MB860
Sony Ericsson LT18i
LGE LG-P500
HTC Desire V
HTC Wildfire S A510e
...
Versión kotlin
val Name: String by lazy {
val manufacturer = Build.MANUFACTURER
val model = Build.MODEL
if (model.toLowerCase().startsWith(manufacturer.toLowerCase())) {
capitalize(model)
} else {
capitalize(manufacturer) + " " + model
}
}
private fun capitalize(s: String?): String {
if (s == null || s.isEmpty()) {
return ""
}
val first = s[0]
return if (Character.isUpperCase(first)) {
s
} else {
Character.toUpperCase(first) + s.substring(1)
}
}
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 recibe el nombre de mercado de un dispositivo. Recibe 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:
AndroidDeviceNames Library en Github
Si no desea utilizar la biblioteca anterior, esta es la mejor solución para obtener un nombre de dispositivo amigable para el consumidor:
/** 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)
String deviceName = android.os.Build.MODEL; // returns model name
String deviceManufacturer = android.os.Build.MANUFACTURER; // returns manufacturer