431 Stimmen

Get Android Phone Model programmatisch , Wie bekommt man Gerätename und Modell programmatisch in Android?

Ich würde gerne wissen, ob es eine Möglichkeit gibt, das Telefonmodell in Android programmatisch zu lesen.

Ich würde gerne einen String wie HTC Dream, Milestone, Sapphire oder was auch immer bekommen...

495voto

Idolon Punkte 27701

Ich verwende den folgenden Code, um den vollständigen Gerätenamen abzurufen. Er ruft Modell- und Herstellerstrings ab und verkettet sie, es sei denn, der Modellstring enthält bereits den Herstellernamen (bei einigen Handys ist das der Fall):

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

Hier sind ein paar Beispiele für Gerätenamen, die ich von den Benutzern erhalten habe:

Samsung GT-S5830L
Motorola MB860
Sony Ericsson LT18i
LGE LG-P500
HTC Desire V
HTC Wildfire S A510e

371voto

Jared Rummler Punkte 36806

Bei vielen gängigen Geräten ist der Marktname des Geräts nicht verfügbar. Auf dem Samsung Galaxy S6 ist zum Beispiel der Wert von Build.MODEL sein könnte "SM-G920F" , "SM-G920I" o "SM-G920W8" .

Ich habe eine kleine Bibliothek erstellt, die den (verbraucherfreundlichen) Marktnamen eines Geräts ermittelt. Sie erhält den richtigen Namen für über 10.000 Geräte und wird ständig aktualisiert. Wenn Sie meine Bibliothek nutzen möchten, klicken Sie auf den Link unten:

AndroidDeviceNames-Bibliothek auf Github


Wenn Sie die obige Bibliothek nicht verwenden möchten, ist dies die beste Lösung, um einen verbraucherfreundlichen Gerätenamen zu erhalten:

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

Beispiel von meinem Verizon HTC One M8:

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

Ergebnis:

HTC6525LVW

HTC One (M8)

120voto

Mirko N. Punkte 10510

Ja: Build.MODEL .

45voto

ruX Punkte 6852

Für diejenigen, die eine vollständige Liste der Eigenschaften von Build Hier ist ein Beispiel für Sony Z1 Compact:

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

Sie können diese Eigenschaften für Ihr Gerät im Debug-Modus leicht auflisten, indem Sie den Dialog "Ausdruck auswerten" mit Kotlin verwenden:

android.os.Build::class.java.fields.map { "Build.${it.name} = ${it.get(it.name)}"}.joinToString("\n")

37voto

Falcon165o Punkte 2795

Das ist nicht zu 100 % richtig. Das kann Ihnen Modell (manchmal Zahlen) geben.
Sie erhalten den Hersteller des Telefons (HTC-Teil Ihrer Anfrage):

 Build.MANUFACTURER

Für einen Produktnamen:

 Build.PRODUCT

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X