আমি জানতে চাই যে অ্যান্ড্রয়েডে প্রোগ্রামগতভাবে ফোন মডেলটি পড়ার কোনও উপায় আছে কিনা।
আমি এইচটিসি ড্রিম, মাইলস্টোন, নীলা বা যা কিছু ... এর মতো স্ট্রিং পেতে চাই
আমি জানতে চাই যে অ্যান্ড্রয়েডে প্রোগ্রামগতভাবে ফোন মডেলটি পড়ার কোনও উপায় আছে কিনা।
আমি এইচটিসি ড্রিম, মাইলস্টোন, নীলা বা যা কিছু ... এর মতো স্ট্রিং পেতে চাই
উত্তর:
অনেক জনপ্রিয় ডিভাইসে ডিভাইসের বাজারের নাম পাওয়া যায় না। উদাহরণস্বরূপ, স্যামসং আকাশগঙ্গা S6 উপর মান 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();
}
আমার ভেরিজোন এইচটিসি ওয়ান এম 8 এর উদাহরণ:
// using method from above
System.out.println(getDeviceName());
// Using https://github.com/jaredrummler/AndroidDeviceNames
System.out.println(DeviceName.getDeviceName());
ফলাফল:
HTC6525LVW
এইচটিসি ওয়ান (এম 8)
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);
}
}
ব্যবহারকারীদের কাছ থেকে আমি পেয়েছি এমন ডিভাইসের নামের কয়েকটি উদাহরণ এখানে দেওয়া হল:
স্যামসুং জিটি-এস
5730 এল মটোরোলা এমবি 860
সনি এরিকসন এলটি 18i এলজিই
এলজি- পি 500
এইচটিসি ডিজায়ার ভি
এইচটিসি ওয়াইল্ডফায়ার এস এ 510e
…
হ্যাঁ: বিল্ড.মোডেল ।
আসলে এটি 100% সঠিক নয়। এটি আপনাকে মডেল (কিছু সময় সংখ্যা) দিতে পারে।
আপনি ফোনটির প্রস্তুতকারক পাবেন (আপনার অনুরোধের এইচটিসি অংশ):
Build.MANUFACTURER
একটি পণ্যের নামের জন্য:
Build.PRODUCT
String name = Build.MANUFACTURER + " - " + Build.MODEL
এটি সবচেয়ে দরকারী সংমিশ্রণ হতে পারে। বিল্ড.প্রডাক্ট কখনও কখনও অপ্রত্যাশিত নাম ব্যবহার করে। উদাহরণস্বরূপ, গ্যালাক্সি নেক্সাসে এটি "তাকগু" ফিরিয়ে দেয়। অন্যদিকে, বিল্ড.মোডেল হ'ল সেটিংস-> ফোন সম্পর্কে-> মডেল নম্বর এর অধীনে প্রদর্শিত ব্যবহারকারী-মুখী মান।
যার জন্য Build
এখানে সম্পত্তিগুলির সম্পূর্ণ তালিকা সন্ধান করছেন তারা সনি জেড 1 কমপ্যাক্টের উদাহরণ:
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);
}
স্পষ্টতই আপনাকে https://support.google.com/googleplay/answer/1727131 এ গুগল থেকে তালিকাটি ব্যবহার করতে হবে
এপিআইগুলি সেটিংসে আমার প্রত্যাশিত কিছু বা কিছু ফেরত দেয় না। আমার মটোরোলা এক্সের জন্য এটি আমি পাই
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
এখানে আমার কোড, প্রস্তুতকারক, ব্র্যান্ডের নাম, ওএস সংস্করণ এবং সমর্থন 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
কোটলিন সংস্করণ
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
স্ট্যাকওভারফ্লো.
আইডলনের কোডটি একটু পরিবর্তন করা হয়েছে। ডিভাইসের মডেলটি পাওয়ার সময় এটি শব্দের মূলধন করবে।
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.MODEL
Build.DEVICE = OnePlus6
Build.MANUFACTURER = OnePlus
Build.MODEL = ONEPLUS A6003
আপনি ফোন ডিভাইসের নামটি থেকে পেতে পারেন
BluetoothAdapter
যদি ফোন ব্লুটুথ সমর্থন করে না, তবে আপনাকে সেখান থেকে ডিভাইসের নামটি তৈরি করতে হবে
android.os. বিল্ড ক্লাস
ফোন ডিভাইসের নাম পাওয়ার জন্য এখানে নমুনা কোড।
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;
}