Saya ingin tahu apakah ada cara untuk membaca Model Telepon secara terprogram di Android.
Saya ingin mendapatkan string seperti HTC Dream, Milestone, Sapphire atau apa pun ...
Saya ingin tahu apakah ada cara untuk membaca Model Telepon secara terprogram di Android.
Saya ingin mendapatkan string seperti HTC Dream, Milestone, Sapphire atau apa pun ...
Jawaban:
Pada banyak perangkat populer, nama pasar perangkat tidak tersedia. Sebagai contoh, pada Samsung Galaxy S6 nilai Build.MODEL
bisa "SM-G920F"
, "SM-G920I"
atau "SM-G920W8"
.
Saya membuat perpustakaan kecil yang mendapat nama pasar (ramah konsumen) dari sebuah perangkat. Itu mendapatkan nama yang benar untuk lebih dari 10.000 perangkat dan terus diperbarui. Jika Anda ingin menggunakan perpustakaan saya klik tautan di bawah ini:
Jika Anda tidak ingin menggunakan perpustakaan di atas, maka ini adalah solusi terbaik untuk mendapatkan nama perangkat yang ramah konsumen:
/** 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();
}
Contoh dari Verizon HTC One M8 saya:
// using method from above
System.out.println(getDeviceName());
// Using https://github.com/jaredrummler/AndroidDeviceNames
System.out.println(DeviceName.getDeviceName());
Hasil:
HTC6525LVW
HTC One (M8)
getDeviceName()
? Jika itu tidak memberi Anda hasil yang Anda cari tidak ada solusi yang lebih baik yang saya tahu.
Saya menggunakan kode berikut untuk mendapatkan nama perangkat lengkap. Ia mendapatkan model dan string pabrikan dan menggabungkannya kecuali string model sudah berisi nama pabrikan (pada beberapa ponsel memang demikian):
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);
}
}
Berikut adalah beberapa contoh nama perangkat yang saya dapatkan dari pengguna:
Samsung GT-S5830L
Motorola MB860
Sony Ericsson LT18i
LGE LG-P500
HTC Desire V
HTC Wildfire S A510e
…
Sebenarnya itu tidak 100% benar. Itu bisa memberi Anda Model (kadang-kadang angka).
Akan memberi Anda Produsen telepon (bagian HTC dari permintaan Anda):
Build.MANUFACTURER
Untuk nama produk:
Build.PRODUCT
String name = Build.MANUFACTURER + " - " + Build.MODEL
menjadi kombinasi yang paling berguna. Build.PRODUCT terkadang menggunakan nama yang tidak terduga. Misalnya, pada Galaxy Nexus, ia mengembalikan "takgu". Build.MODEL, di sisi lain, adalah nilai yang menghadap pengguna yang ditampilkan di bawah Pengaturan-> Tentang Telepon-> Nomor model.
Untuk siapa yang mencari daftar properti lengkap di Build
sini adalah contoh untuk 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
Anda dapat dengan mudah mendaftar properti-properti untuk perangkat Anda dalam mode debug menggunakan dialog "evaluasi ekspresi" menggunakan kotlin:
android.os.Build::class.java.fields.map { "Build.${it.name} = ${it.get(it.name)}"}.joinToString("\n")
String deviceName = android.os.Build.MODEL; // returns model name
String deviceManufacturer = android.os.Build.MANUFACTURER; // returns manufacturer
Gunakan metode Mengikuti untuk mendapatkan model & pabrikan secara terprogram
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);
}
Semua string berikut digunakan saat Anda ingin mengambil pabrikan, nama perangkat, dan / atau model:
String manufacturer = Build.MANUFACTURER;
String brand = Build.BRAND;
String product = Build.PRODUCT;
String model = Build.MODEL;
Tampaknya Anda perlu menggunakan daftar dari Google di https://support.google.com/googleplay/answer/1727131
API tidak mengembalikan apa pun yang saya harapkan atau apa pun di Pengaturan. Untuk Motorola X saya inilah yang saya dapatkan
Build.MODEL = "XT1053"
Build.BRAND = "motorola"
Build.PRODUCT = "ghost"
Pergi ke halaman yang disebutkan di atas "hantu" peta ke Moto X. Sepertinya ini bisa menjadi sedikit lebih sederhana ...
Anda dapat menggunakan kode berikut untuk mendapatkan nama merek dan model merek perangkat.
String brand = Build.BRAND; // for getting BrandName
String model = Build.MODEL; // for getting Model of the device
Ini kode saya, Untuk mendapatkan Produsen, nama Merek, versi Os dan mendukung Level 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;
}
Keluaran:
System.out: button press on device name = Lava Alfa L iris(5.0) API-21
Versi 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)
}
}
capitalize
stackoverflow.com/a/59158474/1446466
Berubah sedikit kode Idola. Ini akan menggunakan huruf besar kata-kata saat mendapatkan model perangkat.
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();
}
}
Build.DEVICE // The name of the industrial design.
Build.DEVICE Memberikan nama yang dapat dibaca manusia untuk beberapa perangkat selainBuild.MODEL
Build.DEVICE = OnePlus6
Build.MANUFACTURER = OnePlus
Build.MODEL = ONEPLUS A6003
Anda bisa mendapatkan nama perangkat telepon dari
BluetoothAdapter
Jika ponsel tidak mendukung Bluetooth, maka Anda harus membuat nama perangkat dari
kelas android.os.Build
Berikut ini contoh kode untuk mendapatkan nama perangkat ponsel.
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;
}
Anda dapat mencoba fungsi berikut dan mengembalikan nama phoneModel Anda dalam format string.
public String phoneModel() {
return Build.MODEL;
}