Получить программную модель Android Phone

Я хотел бы знать, есть ли способ для чтения модели телефона программно в Android.

Я хотел бы получить строку, такую ​​как HTC Dream, Milestone, Sapphire или что-то еще …

14 Solutions collect form web for “Получить программную модель Android Phone”

На многих популярных устройствах рыночное название устройства недоступно. Например, на Samsung Galaxy S6 значение Build.MODEL может быть "SM-G920F" , "SM-G920I" или "SM-G920W8" .

Я создал небольшую библиотеку, которая получает название (устройство), ориентированное на потребителя. Он получает правильное имя для более чем 10 000 устройств и постоянно обновляется. Если вы хотите использовать мою библиотеку, нажмите на ссылку ниже:

Библиотека AndroidDeviceNames на Github


Если вы не хотите использовать библиотеку выше, то это лучшее решение для получения удобного для пользователя имени устройства:

 /** 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 above System.out.println(getDeviceName()); // Using https://github.com/jaredrummler/AndroidDeviceNames System.out.println(DeviceName.getDeviceName()); 

Результат:

HTC6525LVW

HTC One (M8)

Я использую следующий код, чтобы получить полное имя устройства. Он получает строки модели и производителя и объединяет их, если модельная строка уже содержит имя производителя (на некоторых телефонах):

 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); } } 

Вот несколько примеров имен устройств, которые я получил от пользователей:

Samsung GT-S5830L
Motorola MB860
Sony Ericsson LT18i
LGE LG-P500
HTC Desire V
HTC Wildfire S A510e

Да: Build.MODEL .

На самом деле это не 100% правильно. Это может дать вам модель (иногда числа).
Вы получите Производитель телефона (часть вашего телефона HTC):

  Build.MANUFACTURER 

Для названия продукта:

  Build.PRODUCT 

Для тех, кто ищет полный список свойств Build здесь, является примером для 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 

Вы можете легко перечислить эти свойства для своего устройства в режиме отладки, используя диалог «оценивать выражение», используя kotlin:

 android.os.Build::class.java.fields.map { "Build.${it.name} = ${it.get(it.name)}"}.joinToString("\n") 

Очевидно, вам нужно использовать список из Google на странице https://support.google.com/googleplay/answer/1727131.

API не возвращают ничего, что я ожидаю, или что-либо в настройках. Для моей Motorola X это то, что я получаю

  Build.MODEL = "XT1053" Build.BRAND = "motorola" Build.PRODUCT = "ghost" 

Перейдя на страницу, упомянутую выше, «призрачные» карты для Moto X. Похоже, это может быть немного проще …

вы можете использовать следующий код для получения фирменного наименования и фирменной модели устройства.

  String brand = Build.BRAND; // for getting BrandName String model = Build.MODEL; // for getting Model of the device 

Следующие строки используются, когда вы хотите получить производителя, имя устройства и / или модель:

 String manufacturer = Build.MANUFACTURER; String brand = Build.BRAND; String product = Build.PRODUCT; String model = Build.MODEL; 
 String deviceName = android.os.Build.MODEL; // returns model name String deviceManufacturer = android.os.Build.MANUFACTURER; // returns manufacturer 

Вот мой код, чтобы получить версию производителя, название бренда, версию Os и уровень API поддержки

 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; } 

Вывод:

 System.out: button press on device name = Lava Alfa L iris(5.0) API-21 

Версия 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) } } 

Изменен код Idolons немного. Это приведет к использованию слов при получении модели устройства.

 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(); } } 

Вы можете получить имя телефонного устройства из

BluetoothAdapter

В случае, если телефон не поддерживает Bluetooth, вам необходимо создать имя устройства из

Класс android.os.Build

Вот пример кода, чтобы получить имя телефонного устройства.

 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; } 

Вы можете попробовать следующую функцию и вернуть свое имя телефона в формате строки.

 public String phoneModel() { return Build.MODEL; } 
Давайте будем гением компьютера.