it-swarm.com.de

Holen Sie sich den Android-Gerätenamen

Wie bekomme ich den Namen eines Android-Geräts? Ich verwende HTC Wunsch. Wenn ich es über HTC Sync angeschlossen habe, zeigt die Software den Namen 'HTC Smith' an. Ich möchte diesen Namen per Code abrufen.

Wie ist das in Android möglich?

151
Zach

Um den Namen des Android-Geräts zu erhalten, müssen Sie nur eine einzige Codezeile hinzufügen:

Android.os.Build.MODEL;

Hier gefunden: Getting-Android-Gerätename

256
hbhakhra

Antworten finden Sie hier Programmgesteuertes Android-Telefonmodell erhalten

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);
    }
}
39
Ben Jima

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

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)

21
Jared Rummler

Ich löste dies, indem ich den Bluetooth-Namen erhielt, aber nicht von der BluetoothAdapter (die Bluetooth-Berechtigung benötigt).

Hier ist der Code:

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

Keine zusätzlichen Berechtigungen erforderlich.

20
Micer

Versuch es. Sie können den Gerätenamen über Bluetooth erhalten.

Ich hoffe es wird dir helfen

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

Sie können verwenden:

Aus dem Android-Dokument:

MANUFACTURER:

String MANUFACTURER

Der Hersteller des Produkts/der Hardware.

MODEL:

String MODEL

Der für den Endbenutzer sichtbare Name für das Endprodukt.

DEVICE:

String DEVICE

Der Name des Industriedesigns.

Als Beispiel:

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

Darüber hinaus gibt es viele Attribute in Build-Klasse , die Sie verwenden können, wie zum Beispiel:

  • 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

Es gibt auch andere Möglichkeiten, wie Sie den Gerätenamen erhalten können, ohne die Build-Klasse (über Bluetooth) zu verwenden.

7
Blasanka

UPDATE Sie können das Gerät einfach von buildprop abrufen.

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

Beachten Sie jedoch, dass dies auf einigen Geräten nicht funktioniert. 

1

@ hbhakhra Antwort wird ausreichen. 

Wenn Sie an detaillierten Erklärungen interessiert sind, ist es hilfreich, das Dokument zur Kompatibilitätsdefinition für Android zu lesen. (3.2.2 Erstellungsparameter)

Du wirst finden:

DEVICE - Ein vom Geräteimplementierer mit dem Wert .__ ausgewählter Wert. Entwicklungsname oder Codename zur Identifizierung der Konfiguration von Hardwaremerkmale und Industriedesign des Geräts. Der Wert von Dieses Feld MUSS als 7-Bit ASCII codierbar sein und mit dem regulären .__ übereinstimmen. Ausdruck “^ [a-zA-Z0-9 _-] + $”.

MODEL - Ein vom Geräteimplementierer ausgewählter Wert, der den Namen .__ enthält. des Geräts, wie es dem Endbenutzer bekannt ist. Dies sollte den gleichen Namen haben unter denen das Gerät vermarktet und an Endverbraucher verkauft wird. Es gibt keine Anforderungen an das spezifische Format dieses Feldes, mit der Ausnahme, dass es NICHT NULL oder die leere Zeichenfolge ("") sein.

HERSTELLER - Der Markenname des Erstausrüsters (OEM) des Produkts. Es gibt keine Anforderungen an das spezifische Format dieses Feldes, außer dass es NICHT NULL oder die leere Zeichenfolge sein darf ("").

1
Roger Huang

Versuchen Sie diesen Code. Sie erhalten einen Android-Gerätenamen.

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

sie können "Idol3" auf diese Weise erhalten. 

0
jiong103

Einfach benutzen

BluetoothAdapter.getDefaultAdapter().getName()

0
Alecs

Folgende Arbeiten für mich.

String deviceName = Settings.Global.getString (.getContentResolver (), Settings.Global.DEVICE_NAME);

Ich denke nicht, dass dies eine doppelte Antwort ist. Die oben genannten Personen sprechen von Setting Secure, für mich bedeutet das Setzen von NULL, wenn ich Global setze, funktioniert es. Trotzdem danke.

0
Neelam Verma