Android で電話モデルをプログラムで読み取る方法があるかどうかを知りたいです。
HTC Dream、Milestone、Sapphire などの文字列を取得したいのですが...
Android で電話モデルをプログラムで読み取る方法があるかどうかを知りたいです。
HTC Dream、Milestone、Sapphire などの文字列を取得したいのですが...
次のコードを使用して、完全なデバイス名を取得します。モデル文字列にメーカー名がすでに含まれている場合を除き、モデルとメーカーの文字列を取得して連結します(一部の電話では含まれています)。
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
HTC Desire V
HTC WildfireSA510e
…</p>
多くの一般的なデバイスでは、デバイスの市場名は利用できません。たとえば、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;
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 HTC One M8 の例:
// using method from above
System.out.println(getDeviceName());
// Using https://github.com/jaredrummler/AndroidDeviceNames
System.out.println(DeviceName.getDeviceName());
結果:
HTC6525LVW
HTC ワン (M8)
はい:Build.MODEL。
実際、それは 100% 正しいわけではありません。それはあなたにモデル(時には数字)を与えることができます。
電話の製造元を取得します (リクエストの HTC 部分):
Build.MANUFACTURER
製品名の場合:
Build.PRODUCT
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にある Google のリストを使用する必要があるようです。
API は、私が期待するものや設定で何も返さない。私のMotorola Xの場合、これは私が得るものです
Build.MODEL = "XT1053"
Build.BRAND = "motorola"
Build.PRODUCT = "ghost"
上記の「ゴースト」ページに移動すると、Moto X にマップされます。
次のコードを使用して、デバイスのブランド名とブランド モデルを取得できます。
String brand = Build.BRAND; // for getting BrandName
String model = Build.MODEL; // for getting Model of the device