প্রোগ্রামযুক্তভাবে অ্যান্ড্রয়েড ফোন মডেল পান


355

আমি জানতে চাই যে অ্যান্ড্রয়েডে প্রোগ্রামগতভাবে ফোন মডেলটি পড়ার কোনও উপায় আছে কিনা।

আমি এইচটিসি ড্রিম, মাইলস্টোন, নীলা বা যা কিছু ... এর মতো স্ট্রিং পেতে চাই

উত্তর:


327

অনেক জনপ্রিয় ডিভাইসে ডিভাইসের বাজারের নাম পাওয়া যায় না। উদাহরণস্বরূপ, স্যামসং আকাশগঙ্গা 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)


19
ধন্যবাদ জারেড আমার আজ এটির দরকার ছিল তবে জামারিনের জন্য। অ্যান্ড্রয়েড তাই আপনার ফাইলটিকে সি # তে অনুবাদ করেছিলেন। অন্য কারও যদি এটির প্রয়োজন হয় তবে আপনি এটি এখানে খুঁজে পেতে পারেন। gist.github.com/mohibsheth/5e1b361ae49c257b8caf
শেঠ

1
এই ডিভাইস শ্রেণিবিহীন "এক্সপিরিয়া জেড 3" বা "গ্যালাক্সি এস 3" এর মতো "মানব পঠনযোগ্য" ডিভাইসনেম পাওয়ার কোনও উপায় আছে কি? ভবিষ্যতের সমস্ত ডিভাইসও সমর্থিত হবে তা নিশ্চিত হওয়ার জন্য আমি সমস্ত ডিভাইসের একটি স্থিতির তালিকা ব্যবহার করতে চাই না।
Radon8472

1
@ Radon8472 আপনি কি উপরে বর্ণিত স্থির কারখানার পদ্ধতি চেষ্টা করেছেন getDeviceName()? যদি এটি আপনাকে ফলাফল না দেয় তবে আমি যে আরও ভাল সমাধান জানি সেগুলি এর জন্য আর নেই।
জ্যারেড রুম্মার

@ জ্যারেড: আমার কাছে ইতিমধ্যে 'গেটডেভাইসনেম ()' র ফলাফলের মতো একটি ডিভিসনেম রয়েছে তবে আমি তাদের হাতের দোকানগুলি থেকে জানি এমন এনডুয়েজাররা নামটি প্রকাশ করতে চাই :(
রেডোন 8472

1
হাই হাই, আমি জারেডের তালিকাটি ব্যবহার করে এনজি-ফোন নামে একটি কৌণিক মডিউল লিখেছি। নীচের লিঙ্কটি এটি কীভাবে ব্যবহার করতে হয় সে সম্পর্কে নির্দেশনা দেয়। tphangout.com/?p=83
রাজা

427

পুরো ডিভাইসের নাম পেতে আমি নিম্নলিখিত কোডটি ব্যবহার করি। এটি মডেল এবং প্রস্তুতকারকের স্ট্রিংগুলি পেয়ে থাকে এবং তাদের সাথে সম্মতি দেয় যদি না মডেল স্ট্রিংটিতে ইতিমধ্যে প্রস্তুতকারকের নাম না থাকে (কিছু ফোনে এটি থাকে):

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


এটি কোথাও একটি তালিকা রয়েছে যা আপনার ফোন থেকে বেরিয়ে আসতে পারে এমন সমস্ত সম্ভাব্য উত্তর ধারণ করে। আপনার যদি কোনও নির্দিষ্ট ফোন প্রকারে কীভাবে কিছু ইনস্টল করতে হয় বা কোনও নির্দিষ্ট মডেলের কাছে কিছু বিক্রয় করতে হয় তবে আপনাকে কোনও ব্যবহারকারীকে পুনর্নির্দেশ করতে হবে কিনা বলুন।
অশুভ ফিশ

7
@ এভিলফিশ গুগল থেকে এই তালিকাটি ব্যবহার করে দেখুন: support.google.com/googleplay/answer/1727131
আইডলন

ঘড়িতে পুরোপুরি কাজ করে কারণ অ্যান্ড্রয়েড পোশাকের জন্য আমার এটির প্রয়োজন ছিল।
ওয়াহিব উল হক

116

হ্যাঁ: বিল্ড.মোডেল


আমি যখন এমুলেটর দিয়ে চেষ্টা করি এটি সর্বদা আমাকে "Android এর জন্য x86 এর জন্য নির্মিত" দেয় gives বিভিন্ন মডেলের নামের সাথে বিশেষত এমুলেটরে চালিত হয়ে মডেলটির নামটি অর্জন করতে পারছেন না।
সোয়াথি

হ্যাঁ, এটি এমুলেটরটির মডেল। মনে রাখবেন যে এটি অভ্যন্তরীণ স্টোরেজটির জন্যও একই জাতীয় নাম ব্যবহার করে।
দুর্দান্ত গাই সিজি

34

আসলে এটি 100% সঠিক নয়। এটি আপনাকে মডেল (কিছু সময় সংখ্যা) দিতে পারে।
আপনি ফোনটির প্রস্তুতকারক পাবেন (আপনার অনুরোধের এইচটিসি অংশ):

 Build.MANUFACTURER

একটি পণ্যের নামের জন্য:

 Build.PRODUCT

8
আমি String name = Build.MANUFACTURER + " - " + Build.MODELএটি সবচেয়ে দরকারী সংমিশ্রণ হতে পারে। বিল্ড.প্রডাক্ট কখনও কখনও অপ্রত্যাশিত নাম ব্যবহার করে। উদাহরণস্বরূপ, গ্যালাক্সি নেক্সাসে এটি "তাকগু" ফিরিয়ে দেয়। অন্যদিকে, বিল্ড.মোডেল হ'ল সেটিংস-> ফোন সম্পর্কে-> মডেল নম্বর এর অধীনে প্রদর্শিত ব্যবহারকারী-মুখী মান।
মাইক অরটিজ

1
এটির অনেক কিছুই নির্মাতার উপর নির্ভর করে; এইচটিসি ডিভাইস (ইভো 4 জি, 4 জি এলটিই, 3 ডি এবং স্লাইড) আমি উপরে যা বলেছি তা ব্যবহার করে।
ফ্যালকন 165o

এক্সন 7 মিনি তালিকায় রয়েছে। তবু নিয়মিত অ্যাকসন আকারের কোথায়?
সার্জ

30

যার জন্য 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")

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

8

আপনি যখন প্রস্তুতকারক, ডিভাইসের নাম এবং / অথবা মডেলটি পুনরুদ্ধার করতে চান তখন নীচের স্ট্রিংগুলি সমস্ত ব্যবহৃত হয়:

String manufacturer = Build.MANUFACTURER;
String brand        = Build.BRAND;
String product      = Build.PRODUCT;
String model        = Build.MODEL;

8

স্পষ্টতই আপনাকে https://support.google.com/googleplay/answer/1727131 এ গুগল থেকে তালিকাটি ব্যবহার করতে হবে

এপিআইগুলি সেটিংসে আমার প্রত্যাশিত কিছু বা কিছু ফেরত দেয় না। আমার মটোরোলা এক্সের জন্য এটি আমি পাই

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

উপরোক্ত পৃষ্ঠাটিতে "ভূত" মানো মোটো এক্সে যাচ্ছেন বলে মনে হচ্ছে এটি খুব সহজেই সহজ হতে পারে ...


এক্সন 7 মিনি তালিকায় রয়েছে in তবু নিয়মিত আকারের অ্যাক্সন কোথায়?
সার্জ 14

7

আপনি ডিভাইসের ব্র্যান্ড নাম এবং ব্র্যান্ডের মডেল পাওয়ার জন্য নিম্নলিখিত কোডটি ব্যবহার করতে পারেন।

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

3

এখানে আমার কোড, প্রস্তুতকারক, ব্র্যান্ডের নাম, ওএস সংস্করণ এবং সমর্থন 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

3

কোটলিন সংস্করণ

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 স্ট্যাকওভারফ্লো.
শন

1

আইডলনের কোডটি একটু পরিবর্তন করা হয়েছে। ডিভাইসের মডেলটি পাওয়ার সময় এটি শব্দের মূলধন করবে।

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

1

কোটলিন সংক্ষিপ্ত সংস্করণ:

import android.os.Build.MANUFACTURER
import android.os.Build.MODEL

fun getDeviceName(): String =
    (if (MODEL.startsWith(MANUFACTURER, ignoreCase = true)) {
        MODEL
    } else {
        "$MANUFACTURER $MODEL"
    }).capitalize()

1
Build.DEVICE // The name of the industrial design.

বিল্ড.ডাইভিস কিছু ডিভাইসের চেয়ে মানব পাঠযোগ্য নাম দেয়Build.MODEL

Build.DEVICE = OnePlus6
Build.MANUFACTURER = OnePlus
Build.MODEL = ONEPLUS A6003

0

আপনি ফোন ডিভাইসের নামটি থেকে পেতে পারেন

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

2
ধন্যবাদ!! নোট করুন যে এটি কাজ করার জন্য ব্লুটুথের অনুমতি প্রয়োজন।
ব্যবহারকারী 2923322

-4

আপনি নিম্নলিখিত ফাংশনটি চেষ্টা করে দেখতে পারেন এবং স্ট্রিং ফর্ম্যাটে আপনার ফোন মডেলের নামটি ফেরত দিতে পারেন।

public String phoneModel() {

    return Build.MODEL;
}

একই উত্তরটি বলেছে এমন অন্য যে কোনও উত্তরে এই উত্তরটির উন্নতি হয় না এবং এক বছর আগে এখানে রেখে দেওয়া হয়েছিল।
লিন ক্র্যাম্বলিং
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.