it-swarm.com.de

Holen Sie sich programmgesteuert ein Android-Telefonmodell

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

Ich möchte eine Saite wie HTC Dream, Milestone, Sapphire oder was auch immer ...

291
Andrea Baccega

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

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

AndroidDeviceNames Library 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)

261
Jared Rummler

Ich verwende den folgenden Code, um den vollständigen Gerätenamen zu erhalten. Es werden Modell- und Herstellerzeichenfolgen abgerufen und verkettet, es sei denn, Modellzeichenfolge enthält bereits den Herstellernamen (bei einigen Telefonen):

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 einige Beispiele von 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

398
Idolon
111
Mirko N.

Eigentlich ist das nicht 100% korrekt. Das kann dir Modell geben (manchmal Zahlen).
Sie erhalten den Hersteller des Telefons (HTC-Teil Ihrer Anfrage):

 Build.MANUFACTURER

Für einen Produktnamen:

 Build.PRODUCT
31
Falcon165o

Für wen, der eine vollständige Liste der Eigenschaften von Build sucht, ist hier 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 mithilfe des Dialogfelds "Ausdruck" mit kotlin leicht auflisten:

Android.os.Build::class.Java.fields.map { "Build.${it.name} = ${it.get(it.name)}"}.joinToString("\n")
17
ruX

Anscheinend müssen Sie die Liste von Google unter https://support.google.com/googleplay/answer/1727131 verwenden.

Die APIs geben nichts zurück, was ich erwarte oder etwas in den Einstellungen. Für mein Motorola X bekomme ich das 

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

Auf der page erwähnten "Geister" -Karten zu Moto X. Scheint so, könnte dies ein bisschen einfacher sein ...

8
Edwin Evans
String deviceName = Android.os.Build.MODEL; // returns model name 

String deviceManufacturer = Android.os.Build.MANUFACTURER; // returns manufacturer
8
Ajay Pandya

Die folgenden Zeichenfolgen können verwendet werden, wenn Sie Hersteller, Namen des Geräts und/oder Modell abrufen möchten:

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

sie können den folgenden Code verwenden, um den Markennamen und das Markenmodell des Geräts zu erhalten.

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

Hier ist mein Code, Hersteller, Markenname, Os-Version und Support-API-Level 

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

Ausgabe:

System.out: button press on device name = Lava Alfa L iris(5.0) API-21

Kotlin-Version

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

Sie können den Gerätenamen des Telefons von der erhalten 

BluetoothAdapter

Falls das Telefon Bluetooth nicht unterstützt, müssen Sie den Gerätenamen aus erstellen 

Android.os.Build-Klasse

Hier ist der Beispielcode, um den Gerätenamen des Telefons abzurufen.

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;
}
1
Sridhar Nalam

Idolons-Code ein wenig geändert. Dadurch werden Wörter groß geschrieben, wenn das Gerätemodell abgerufen wird.

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