web-dev-qa-db-fra.com

Obtenir le nom du périphérique Android

Comment obtenir le nom de l'appareil Android? J'utilise HTC desire. Lorsque je le connecte via HTC Sync, le logiciel affiche le nom 'HTC Smith' . Je voudrais récupérer ce nom via le code.

Comment est-ce possible dans Android?

151
Zach

Pour obtenir le nom du périphérique Android, vous devez ajouter une seule ligne de code:

Android.os.Build.MODEL;

Trouvé ici: getting-Android-device-name

256
hbhakhra

Vous pouvez voir les réponses ici Obtenir un modèle de téléphone Android par programme

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

Sur de nombreux appareils populaires, le nom commercial de l'appareil n'est pas disponible. Par exemple, sur le Samsung Galaxy S6, la valeur de Build.MODEL pourrait être "SM-G920F", "SM-G920I" ou "SM-G920W8".

J'ai créé une petite bibliothèque qui obtient le nom du périphérique (convivial). Il obtient le nom correct pour plus de 10 000 périphériques et est mis à jour en permanence. Si vous souhaitez utiliser ma bibliothèque, cliquez sur le lien ci-dessous:

Bibliothèque AndroidDeviceNames sur Github


Si vous ne souhaitez pas utiliser la bibliothèque ci-dessus, c'est la meilleure solution pour obtenir un nom de périphérique convivial:

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

Exemple de mon Verizon HTC One M8:

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

Résultat:

HTC6525LVW 

HTC One (M8)

21
Jared Rummler

J'ai résolu ce problème en obtenant le nom Bluetooth, mais pas à partir de la BluetoothAdapter (qui nécessite une autorisation Bluetooth).

Voici le code:

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

Aucune autorisation supplémentaire nécessaire.

20
Micer

Essayez-le Vous pouvez obtenir le nom du périphérique via Bluetooth.

J'espère que cela vous aidera

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

Vous pouvez utiliser:

De doc Android:

MANUFACTURER:

String MANUFACTURER

Le fabricant du produit/matériel.

MODEL:

String MODEL

Nom visible par l'utilisateur final pour le produit final.

DEVICE:

String DEVICE

Le nom du dessin industriel.

À titre d'exemple:

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

En outre, il y a beaucoup d'attributs dans Build class que vous pouvez utiliser, comme:

  • 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

Il existe également d’autres moyens d’obtenir un nom de périphérique sans utiliser la classe Build (via le Bluetooth).

7
Blasanka

UPDATE Vous pouvez récupérer facilement le périphérique depuis 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;
}

Mais gardez à l'esprit, cela ne fonctionne pas sur certains appareils. 

1
Yasiru Nayanajith

La réponse de @ hbhakhra fera l'affaire. 

Si une explication détaillée vous intéresse, il est utile de consulter Document de définition de la compatibilité Android . (3.2.2 Paramètres de construction)

Tu trouveras:

DEVICE - Une valeur choisie par l’implémenteur du périphérique contenant le nom de développement ou nom de code identifiant la configuration du fichier caractéristiques matérielles et conception industrielle de l'appareil. La valeur de ce champ DOIT être codable en tant que code 7 bits ASCII et correspondre à la normale expression "^ [a-zA-Z0-9 _-] + $".

MODEL - Une valeur choisie par l'implémenteur du périphérique contenant le nom de l'appareil connu de l'utilisateur final. Ce DEVRAIT être le même nom sous lequel l’appareil est commercialisé et vendu aux utilisateurs finaux. Il n'y a pas exigences sur le format spécifique de ce champ, sauf qu'il DOIT NE PAS être null ou la chaîne vide ("").

FABRICANT - Le nom commercial du fabricant d'équipement d'origine (OEM) du produit. Il n'y a pas d'exigences sur le format spécifique de ce champ, sauf qu'il NE DOIT PAS être null ou la chaîne vide ("").

1
Roger Huang

Essayez ce code. Vous obtenez le nom de l'appareil Android.

public static String getDeviceName() {
    String manufacturer = Build.MANUFACTURER;
    String model = Build.MODEL;
    if (model.startsWith(manufacturer)) {
        return model;
    }
    return manufacturer + " " + model;
}
0
Bhoomika Chauhan
 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

vous pouvez obtenir 'idol3' de cette façon. 

0
jiong103

Suivre fonctionne pour moi.

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

Je ne pense pas que sa réponse en double. Les personnes ci-dessus parlent de la sécurisation des paramètres, pour moi, la sécurisation donne null, si je me sers de la configuration globale, cela fonctionne. Merci quand même.

0
Neelam Verma