Question

Je voudrais savoir s'il y a un moyen de lecture du modèle de téléphone sous Android programme.

Je voudrais obtenir une chaîne comme HTC Dream, Milestone, Sapphire ou autre ...

Était-ce utile?

La solution

Sur de nombreux appareils populaires le nom du marché de l'appareil est 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 reçoit le nom du marché (favorable au consommateur) d'un dispositif. Il obtient le nom correct pour plus de 10.000 périphériques et est constamment mis à jour. Si vous souhaitez utiliser ma bibliothèque cliquez sur le lien ci-dessous:

AndroidDeviceNames Bibliothèque sur Github


Si vous ne souhaitez pas utiliser la bibliothèque ci-dessus, c'est la meilleure solution pour obtenir un nom d'appareil convivial à la consommation:

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

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)

Autres conseils

J'utilise le code suivant pour obtenir le nom de l'appareil complet. Il obtient des chaînes de modèle et de fabricant et de les concaténer à moins que la chaîne de modèle contient déjà le nom du fabricant (sur certains téléphones, il fait):

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

Voici quelques exemples de noms de périphériques I des utilisateurs ai reçu:

  

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

En fait, ce n'est pas correct à 100%. Cela peut vous donner modèle (nombre Sometime).
Est-ce que vous obtenez le fabricant du téléphone (partie HTC de votre demande):

 Build.MANUFACTURER

Pour un nom de produit:

 Build.PRODUCT

Pour qui qui recherche la liste complète des propriétés de Build ici est un exemple pour 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

Vous pouvez facilement la liste de ces propriétés pour votre appareil en mode de débogage à l'aide de dialogue « évaluer l'expression » en utilisant Kotlin:

android.os.Build::class.java.fields.map { "Build.${it.name} = ${it.get(it.name)}"}.joinToString("\n")
String deviceName = android.os.Build.MODEL; // returns model name 

String deviceManufacturer = android.os.Build.MANUFACTURER; // returns manufacturer
  

Utilisez la méthode suivante pour obtenir le modèle et le fabricant programme

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

Les chaînes suivantes sont d'utilisation lorsque vous souhaitez récupérer fabricant, le nom de l'appareil, et / ou le modèle:

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

Apparemment, vous devez utiliser la liste de Google à https://support.google.com/googleplay/answer/1727131

Les API ne reviennent pas tout ce que je pense ou quoi que ce soit dans les paramètres. Pour mon Motorola X ce que je reçois

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

Aller à la page mentionné ci-dessus des cartes « fantômes » à Moto X. On dirait que cela pourrait être un peu plus simple ...

vous pouvez utiliser le code suivant pour obtenir le nom de la marque et modèle de la marque de l'appareil.

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

Voici mon code, Pour fabricant, le nom de la marque, la version Os et API support de niveau

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

Sortie:

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

Version Kotlin

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

Changé le code Idolons un peu. Ce capitalisera mots lors de l'obtention du modèle de l'appareil.

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

Vous pouvez obtenir le nom de l'appareil téléphonique du

  

BluetoothAdapter

Dans le cas où le téléphone ne prend pas en charge Bluetooth, vous devez construire le nom du périphérique de

  

android.os.Build classe

Voici l'exemple de code pour obtenir le nom de l'appareil de téléphone.

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

Vous pouvez ci-dessous fonction et son retour le nom de votre phoneModel au format chaîne.

public String phoneModel() {

    return Build.MODEL;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top