Tôi muốn biết liệu có cách nào để đọc Mô hình điện thoại theo chương trình trong Android không.
Tôi muốn có được một chuỗi như HTC Dream, Milestone, Sapphire hoặc bất cứ điều gì ...
Tôi muốn biết liệu có cách nào để đọc Mô hình điện thoại theo chương trình trong Android không.
Tôi muốn có được một chuỗi như HTC Dream, Milestone, Sapphire hoặc bất cứ điều gì ...
Câu trả lời:
Trên nhiều thiết bị phổ biến, tên thị trường của thiết bị không có sẵn. Ví dụ, trên Samsung Galaxy S6 giá trị Build.MODEL
có thể "SM-G920F"
, "SM-G920I"
hoặc "SM-G920W8"
.
Tôi đã tạo một thư viện nhỏ lấy tên thị trường (thân thiện với người tiêu dùng) của một thiết bị. Nó có được tên chính xác cho hơn 10.000 thiết bị và được cập nhật liên tục. Nếu bạn muốn sử dụng thư viện của tôi, nhấp vào liên kết dưới đây:
Nếu bạn không muốn sử dụng thư viện ở trên, thì đây là giải pháp tốt nhất để có được tên thiết bị thân thiện với người tiêu dùng:
/** 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();
}
Ví dụ từ Verizon HTC One M8 của tôi:
// using method from above
System.out.println(getDeviceName());
// Using https://github.com/jaredrummler/AndroidDeviceNames
System.out.println(DeviceName.getDeviceName());
Kết quả:
HTC6525LVW
HTC One (M8)
getDeviceName()
chưa? Nếu điều đó không mang lại cho bạn kết quả mà bạn đang tìm kiếm thì đó không phải là giải pháp tốt hơn mà tôi biết.
Tôi sử dụng mã sau đây để có được tên thiết bị đầy đủ. Nó lấy chuỗi mô hình và nhà sản xuất và nối chúng trừ khi chuỗi mô hình đã chứa tên nhà sản xuất (trên một số điện thoại có):
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);
}
}
Dưới đây là một vài ví dụ về tên thiết bị tôi nhận được từ người dùng:
Samsung GT-S5830L
Motorola MB860
Sony Ericsson LT18i
LGE LG-P500
HTC Desire V
HTC Wildfire S A510e
[
Có: Build.MODEL .
Thật ra điều đó không đúng 100%. Điều đó có thể cung cấp cho bạn Mô hình (đôi khi số).
Sẽ giúp bạn trở thành Nhà sản xuất điện thoại (phần HTC trong yêu cầu của bạn):
Build.MANUFACTURER
Đối với một tên sản phẩm:
Build.PRODUCT
String name = Build.MANUFACTURER + " - " + Build.MODEL
là sự kết hợp hữu ích nhất. Build.PRODVEL đôi khi sử dụng một tên bất ngờ. Ví dụ: trên Galaxy Nexus, nó trả về "takgu". Build.MODEL, mặt khác, là giá trị hướng tới người dùng được hiển thị trong Cài đặt-> Giới thiệu về điện thoại-> Số kiểu máy.
Đối với những người tìm kiếm danh sách đầy đủ các tài sản của Build
ở đây là một ví dụ cho 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
Bạn có thể dễ dàng liệt kê các thuộc tính đó cho thiết bị của mình ở chế độ gỡ lỗi bằng hộp thoại "đánh giá biểu thức" bằng 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
Sử dụng phương pháp sau để lấy mô hình & nhà sản xuất theo chương trình
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);
}
Rõ ràng bạn cần sử dụng danh sách từ Google tại https://support.google.com/googleplay(/2727131
Các API không trả lại bất cứ điều gì tôi mong đợi hoặc bất cứ điều gì trong Cài đặt. Đối với Motorola X của tôi, đây là những gì tôi nhận được
Build.MODEL = "XT1053"
Build.BRAND = "motorola"
Build.PRODUCT = "ghost"
Chuyển đến trang được đề cập ở trên bản đồ "ma" trên Moto X. Có vẻ như điều này có thể đơn giản hơn một chút ...
bạn có thể sử dụng mã sau đây để lấy tên thương hiệu và kiểu máy của thiết bị.
String brand = Build.BRAND; // for getting BrandName
String model = Build.MODEL; // for getting Model of the device
Đây là mã của tôi, Để có được Nhà sản xuất, Tên thương hiệu, Phiên bản Os và Cấp API hỗ trợ
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;
}
Đầu ra:
System.out: button press on device name = Lava Alfa L iris(5.0) API-21
Phiên bả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)
}
}
capitalize
stackoverflow.com
Thay đổi mã thần tượng một chút. Điều này sẽ viết hoa từ khi lấy mô hình thiết bị.
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 Cung cấp tên người dễ đọc cho một số thiết bị hơnBuild.MODEL
Build.DEVICE = OnePlus6
Build.MANUFACTURER = OnePlus
Build.MODEL = ONEPLUS A6003
Bạn có thể lấy tên thiết bị điện thoại từ
BluetoothAd CHƯƠNG
Trong trường hợp điện thoại không hỗ trợ Bluetooth, thì bạn phải tạo tên thiết bị từ
lớp android.os.Build
Dưới đây là mã mẫu để lấy tên thiết bị điện thoại.
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;
}
Bạn có thể thử chức năng sau và nó trả về tên phoneModel của bạn ở định dạng chuỗi.
public String phoneModel() {
return Build.MODEL;
}