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?
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
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);
}
}
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:
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)
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.
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;
}
Vous pouvez utiliser:
De doc Android:
String MANUFACTURER
Le fabricant du produit/matériel.
String MODEL
Nom visible par l'utilisateur final pour le produit final.
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).
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.
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 ("").
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;
}
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 "";
}
}
vous pouvez obtenir 'idol3' de cette façon.
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.