web-dev-qa-db-ja.com

Androidデバイス名を取得

Androidデバイス名を取得する方法は?私はHTCの欲望を使用しています。 HTC Sync経由で接続すると、ソフトウェアにName 'HTC Smith'が表示されます。この名前をコードで取得したいと思います。

これはAndroidでどのように可能ですか?

161
Zach

Androidデバイス名を取得するには、1行のコードのみを追加する必要があります。

Android.os.Build.MODEL;

ここにあります: getting-Android-device-name

263
hbhakhra

回答はこちらでご覧いただけます Get Android Phone Model from Programmatically

public String getDeviceName() {
   String manufacturer = Build.MANUFACTURER;
   String model = Build.MODEL;
   if (model.startsWith(manufacturer)) {
      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);
    }
}
41
Ben Jima

多くの一般的なデバイスでは、デバイスの市場名は利用できません。たとえば、Samsung Galaxy S6では、Build.MODELの値は"SM-G920F""SM-G920I"、または"SM-G920W8"になります。

デバイスの市場(消費者向け)名を取得する小さなライブラリを作成しました。 10,000以上のデバイスの正しい名前を取得し、常に更新されます。ライブラリを使用する場合は、以下のリンクをクリックしてください。

GithubのAndroidDeviceNamesライブラリ


上記のライブラリを使用したくない場合、これは消費者にわかりやすいデバイス名を取得するための最適なソリューションです。

/** 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;
    String phrase = "";
    for (char c : arr) {
        if (capitalizeNext && Character.isLetter(c)) {
            phrase += Character.toUpperCase(c);
            capitalizeNext = false;
            continue;
        } else if (Character.isWhitespace(c)) {
            capitalizeNext = true;
        }
        phrase += c;
    }
    return phrase;
}

Verizon HTC One M8の例:

// using method from above
System.out.println(getDeviceName());
// Using https://github.com/jaredrummler/AndroidDeviceNames
System.out.println(DeviceName.getDeviceName());

結果:

HTC6525LVW

HTC One(M8)

23
Jared Rummler

Bluetooth名を取得することでこれを解決しましたが、BluetoothAdapter(Bluetooth許可が必要)からは取得しませんでした。

コードは次のとおりです。

Settings.Secure.getString(getContentResolver(), "bluetooth_name");

追加の権限は必要ありません。

22
Micer

それを試してみてください。 Bluetooth経由でデバイス名を取得できます。

それがあなたを助けることを願っています

public String getPhoneName() {  
        BluetoothAdapter myDevice = BluetoothAdapter.getDefaultAdapter();
        String deviceName = myDevice.getName();     
        return deviceName;
    }
20
user3606686

次を使用できます。

Androidドキュメントから:

MANUFACTURER

String MANUFACTURER

製品/ハードウェアの製造元。

MODEL

String MODEL

最終製品のエンドユーザーに見える名前。

DEVICE

String DEVICE

工業デザインの名前。

例として:

String deviceName = Android.os.Build.MANUFACTURER + " " + Android.os.Build.MODEL;
//to add to textview
TextView textView = (TextView) findViewById(R.id.text_view);
textView.setText(deviceName);

さらに、 Build class には多くの属性があり、次のように使用できます。

  • os.Android.Build.BOARD
  • os.Android.Build.BRAND
  • os.Android.Build.BOOTLOADER
  • os.Android.Build.DISPLAY
  • os.Android.Build.CPU_ABI
  • os.Android.Build.PRODUCT
  • os.Android.Build.HARDWARE
  • os.Android.Build.ID

また、Buildクラスを使用せずにデバイス名を取得できる他の方法もあります(bluetooth経由)。

7
Blasanka

更新buildpropからデバイスを簡単に取得できます。

static String GetDeviceName() {
    Process p;
    String propvalue = "";
    try {
        p = new ProcessBuilder("/system/bin/getprop", "ro.semc.product.name").redirectErrorStream(true).start();
        BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line;
        while ((line = br.readLine()) != null) {
            propvalue = line;
        }
        p.destroy();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return propvalue;
}

ただし、これは一部のデバイスでは機能しないことに注意してください。

1

私のために次の作品。

文字列deviceName = Settings.Global.getString(.getContentResolver()、Settings.Global.DEVICE_NAME);

答えが重複しているとは思わない。上記のpllはSecureの設定について話しているので、私にとっては、secureを設定するとnullが与えられます。とにかく、ありがとう。

1
Neelam Verma

@hbhakhraの答えで十分です。

詳細な説明に興味がある場合は、 Android Compatibility Definition Document をご覧ください。 (3.2.2ビルドパラメーター)

見つけるだろう:

DEVICE-ハードウェア機能の構成とデバイスの工業デザインを識別する開発名またはコード名を含むデバイス実装者が選択した値。このフィールドの値は、7ビットASCIIとしてエンコード可能でなければならず、正規表現「^ [a-zA-Z0-9 _-] + $」に一致する必要があります。

MODEL-エンドユーザーに知られているデバイスの名前を含むデバイス実装者が選択した値。これは、デバイスがエンドユーザーに販売および販売される同じ名前である必要があります。このフィールドの特定の形式に関する要件はありませんが、nullまたは空の文字列( "")であってはなりません。

MANUFACTURER-製品の相手先商標製造会社(OEM)の商品名。このフィールドの特定の形式に関する要件はありませんが、nullまたは空の文字列( "")であってはなりません。

1
Roger Huang

このコードを試してください。 Androidデバイス名を取得します。

public static String getDeviceName() {
    String manufacturer = Build.MANUFACTURER;
    String model = Build.MODEL;
    if (model.startsWith(manufacturer)) {
        return model;
    }
    return manufacturer + " " + model;
}
0
 static String getDeviceName() {
        try {
            Class systemPropertiesClass = Class.forName("Android.os.SystemProperties");
            Method getMethod = systemPropertiesClass.getMethod("get", String.class);
            Object object = new Object();
            Object obj = getMethod.invoke(object, "ro.product.device");
            return (obj == null ? "" : (String) obj);
        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }
    }

enter image description here

この方法で 'idol3'を取得できます。

0
jiong103

単に使用する

BluetoothAdapter.getDefaultAdapter().getName()

0
Alecs