मैं जानना चाहूंगा कि क्या एंड्रॉइड में फोन मॉडल को प्रोग्रामेटिक रूप से पढ़ने का कोई तरीका है।
मैं HTC ड्रीम, माइलस्टोन, नीलम या जो भी हो ...
मैं जानना चाहूंगा कि क्या एंड्रॉइड में फोन मॉडल को प्रोग्रामेटिक रूप से पढ़ने का कोई तरीका है।
मैं HTC ड्रीम, माइलस्टोन, नीलम या जो भी हो ...
जवाबों:
कई लोकप्रिय उपकरणों पर डिवाइस का बाजार नाम उपलब्ध नहीं है। उदाहरण के लिए, सैमसंग गैलेक्सी एस 6 पर , या , का मूल्य Build.MODEL
हो सकता है ।"SM-G920F"
"SM-G920I"
"SM-G920W8"
मैंने एक छोटी सी लाइब्रेरी बनाई जो डिवाइस के बाजार (उपभोक्ता के अनुकूल) नाम प्राप्त करती है। यह 10,000 से अधिक उपकरणों के लिए सही नाम प्राप्त करता है और लगातार अपडेट किया जाता है। यदि आप मेरे पुस्तकालय का उपयोग करना चाहते हैं तो नीचे दिए गए लिंक पर क्लिक करें:
यदि आप उपरोक्त लाइब्रेरी का उपयोग नहीं करना चाहते हैं, तो उपभोक्ता अनुकूल डिवाइस नाम पाने के लिए यह सबसे अच्छा उपाय है:
/** 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 एचटीसी वन M8 से उदाहरण:
// using method from above
System.out.println(getDeviceName());
// Using https://github.com/jaredrummler/AndroidDeviceNames
System.out.println(DeviceName.getDeviceName());
परिणाम:
HTC6525LVW
एचटीसी वन (M8)
getDeviceName()
? यदि वह आपको वह परिणाम नहीं देता है जो आप देख रहे हैं तो बेहतर समाधान नहीं है जो मुझे पता है।
पूर्ण डिवाइस नाम प्राप्त करने के लिए मैं निम्नलिखित कोड का उपयोग करता हूं। यह मॉडल और निर्माता तार प्राप्त करता है और उन्हें तब तक समेटता है जब तक कि मॉडल स्ट्रिंग में पहले से ही निर्माता का नाम (कुछ फोन पर ऐसा नहीं होता है):
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
एचटीसी डिजायर वी
एचटीसी वाइल्डफायर एस A510e
…
हां: Build.MODEL ।
वास्तव में यह 100% सही नहीं है। वह आपको मॉडल (कुछ समय संख्या) दे सकता है।
आपको फ़ोन का निर्माता (आपके अनुरोध का HTC भाग) मिलेगा:
Build.MANUFACTURER
एक उत्पाद के नाम के लिए:
Build.PRODUCT
String name = Build.MANUFACTURER + " - " + Build.MODEL
सबसे उपयोगी संयोजन होना चाहिए। Build.PRODUCT कभी-कभी एक अप्रत्याशित नाम का उपयोग करता है। उदाहरण के लिए, गैलेक्सी नेक्सस पर, यह "टेकगु" लौटाता है। दूसरी ओर Build.MODEL, सेटिंग-> फ़ोन के बारे में>> मॉडल नंबर के तहत प्रदर्शित उपयोगकर्ता-सामना का मूल्य है।
जिनके लिए Build
यहां की संपत्तियों की पूरी सूची की तलाश सोनी Z1 कॉम्पैक्ट के लिए एक उदाहरण है:
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
आप आसानी से कोटलिन का उपयोग करके "अभिव्यक्ति का मूल्यांकन करें" संवाद का उपयोग करके डिबग मोड में अपने डिवाइस के लिए उन गुणों को सूचीबद्ध कर सकते हैं:
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
मॉडल और निर्माता को प्रोग्रामेटिक रूप से प्राप्त करने के लिए निम्नलिखित विधि का उपयोग करें
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);
}
स्पष्ट रूप से आपको Google से सूची का उपयोग करने की आवश्यकता है https://support.google.com/googleplay/answer/1727131
API मुझे कुछ भी नहीं देता जिसकी मुझे उम्मीद है या सेटिंग्स में कुछ भी। मेरे मोटोरोला एक्स के लिए यह वही है जो मुझे मिलता है
Build.MODEL = "XT1053"
Build.BRAND = "motorola"
Build.PRODUCT = "ghost"
के लिए जा रहे पेज मोटो एक्स के लिए "भूत" नक्शे ऊपर उल्लेख किया है लगता है जैसे यह एक बालक सरल हो सकता है ...
आप डिवाइस का ब्रांड नाम और ब्रांड मॉडल प्राप्त करने के लिए निम्न कोड का उपयोग कर सकते हैं।
String brand = Build.BRAND; // for getting BrandName
String model = Build.MODEL; // for getting Model of the device
यहाँ मेरा कोड है, निर्माता, ब्रांड नाम, ओएस संस्करण और समर्थन एपीआई स्तर प्राप्त करने के लिए
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
कोटलिन संस्करण
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
बदल गया आइडलोन कोड थोड़ा। डिवाइस मॉडल प्राप्त करते समय यह शब्दों को कैपिटल करेगा।
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 कुछ उपकरणों के लिए मानव पठनीय नाम देता हैBuild.MODEL
Build.DEVICE = OnePlus6
Build.MANUFACTURER = OnePlus
Build.MODEL = ONEPLUS A6003
आप फोन डिवाइस का नाम से प्राप्त कर सकते हैं
BluetoothAdapter
यदि फोन ब्लूटूथ का समर्थन नहीं करता है, तो आपको डिवाइस नाम से निर्माण करना होगा
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;
}