Androidデバイス名を取得する方法は?私はHTCの欲望を使用しています。 HTC Sync経由で接続すると、ソフトウェアにName 'HTC Smith'が表示されます。この名前をコードで取得したいと思います。
これはAndroidでどのように可能ですか?
Androidデバイス名を取得するには、1行のコードのみを追加する必要があります。
Android.os.Build.MODEL;
ここにあります: getting-Android-device-name
回答はこちらでご覧いただけます 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);
}
}
多くの一般的なデバイスでは、デバイスの市場名は利用できません。たとえば、Samsung Galaxy 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;
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)
Bluetooth名を取得することでこれを解決しましたが、BluetoothAdapter
(Bluetooth許可が必要)からは取得しませんでした。
コードは次のとおりです。
Settings.Secure.getString(getContentResolver(), "bluetooth_name");
追加の権限は必要ありません。
それを試してみてください。 Bluetooth経由でデバイス名を取得できます。
それがあなたを助けることを願っています
public String getPhoneName() {
BluetoothAdapter myDevice = BluetoothAdapter.getDefaultAdapter();
String deviceName = myDevice.getName();
return deviceName;
}
次を使用できます。
Androidドキュメントから:
String MANUFACTURER
製品/ハードウェアの製造元。
String MODEL
最終製品のエンドユーザーに見える名前。
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経由)。
更新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;
}
ただし、これは一部のデバイスでは機能しないことに注意してください。
私のために次の作品。
文字列deviceName = Settings.Global.getString(.getContentResolver()、Settings.Global.DEVICE_NAME);
答えが重複しているとは思わない。上記のpllはSecureの設定について話しているので、私にとっては、secureを設定するとnullが与えられます。とにかく、ありがとう。
@hbhakhraの答えで十分です。
詳細な説明に興味がある場合は、 Android Compatibility Definition Document をご覧ください。 (3.2.2ビルドパラメーター)
見つけるだろう:
DEVICE-ハードウェア機能の構成とデバイスの工業デザインを識別する開発名またはコード名を含むデバイス実装者が選択した値。このフィールドの値は、7ビットASCIIとしてエンコード可能でなければならず、正規表現「^ [a-zA-Z0-9 _-] + $」に一致する必要があります。
MODEL-エンドユーザーに知られているデバイスの名前を含むデバイス実装者が選択した値。これは、デバイスがエンドユーザーに販売および販売される同じ名前である必要があります。このフィールドの特定の形式に関する要件はありませんが、nullまたは空の文字列( "")であってはなりません。
MANUFACTURER-製品の相手先商標製造会社(OEM)の商品名。このフィールドの特定の形式に関する要件はありませんが、nullまたは空の文字列( "")であってはなりません。
このコードを試してください。 Androidデバイス名を取得します。
public static String getDeviceName() {
String manufacturer = Build.MANUFACTURER;
String model = Build.MODEL;
if (model.startsWith(manufacturer)) {
return model;
}
return manufacturer + " " + model;
}
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 "";
}
}
この方法で 'idol3'を取得できます。
単に使用する
BluetoothAdapter.getDefaultAdapter().getName()