PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → Connaitre la marque et le modèle d'un PDA
Connaitre la marque et le modèle d'un PDA
Débuté par gaetan, 27 fév. 2008 17:45 - 8 réponses
Posté le 27 février 2008 - 17:45
bonjour,

je voudrais savoir s'il existe une fonction permettant de connaitre la marque et le modèle d'un PDA.

J'ai une application qui doit piloter le lecteur laser de deux modèles de PDA différents, il faut donc que je sache sur quel modèle je suis .

merci de votre aide.
Posté le 25 janvier 2017 - 15:43
Bonjour,

je voudrais savoir si dans les versions actuelles de Windev Mobile (20, 21, 22), il est possible de connaitre la marque, le modèle ou le nom de l'appareil qui exécute l'application ?
Je n'ai trop rien vu mis à part les fonctions SysVersionAndroid par exemple mais cela ne donne que la version de l'OS (si on a un Windev à jour) pas la marque ou le modèle.

Merci
Membre enregistré
946 messages
Popularité : +102 (110 votes)
Posté le 26 janvier 2017 - 13:37
Bonjour,
Si vous n'avez pas de fonction Windev pour l'obtenir, vous pouvez l'obtenir avec une petite fonction java qui utilise la classe : Build
Voir https://developer.android.com/reference/android/os/Build.html pour les informations de la classe
et http://stackoverflow.com/questions/3596722/how-to-get-the-android-phone-model-version-sdk-details pour servir d'exemple.
Posté le 26 janvier 2017 - 14:11
Merci je vais regarder de ce côté là !
Membre enregistré
946 messages
Popularité : +102 (110 votes)
Posté le 26 janvier 2017 - 20:37
un exemple de ce que cela pourrait donner (à copier dans une procédure globale java)

import android.os.Build;

PUBLIC static string getInfosDevice()
{
string InfosDevice = "";

string manufacturer = Build.MANUFACTURER;
string model = Build.MODEL;
string device = Build.DEVICE;
string product = Build.PRODUCT;
string serial = Build.SERIAL;

IF (model.startsWith(manufacturer)) {
InfosDevice = model;
}
ELSE {
InfosDevice = manufacturer + " " + model;
}
InfosDevice += "\t" + device;
InfosDevice += "\t" + product;
InfosDevice += "\t" + serial;

RETURN InfosDevice;
}

Sur un NOTE3 cela donne :
samsung SM-9005
hlte
hltexx
d4364xxx
Posté le 16 octobre 2017 - 17:02
Bonjour Philippe
J'ai testé votre code java ci-dessus dans mon Samsung sous Android 6.0;
L'application est bien compilée et dans mon code windev je récupère la valeur String dans une chaîne que j'esaye d'afficher pour commencer!
En fait, l'appli ne fait rien!
J'ajouté que j'ai activé les sources inconnues.
Est ce qu'il faut charger des librairies java lors de la compilation?

Merci d'avance pour vos lumières.
EB
Membre enregistré
946 messages
Popularité : +102 (110 votes)
Posté le 16 octobre 2017 - 17:56
Bonjour,
Je viens de re-tester sur le seul appareil à ma disposition : Samsung-Note3-Androïd-version 5.0 (LOLLIPOP)-API 21 et j'ai le résultat.
Il suffit de créer dans WM une procédure globale, puis de la modifier pour que ce soit du Java au lieu du WLangage et de faire un copié/collé.
Voici le code complet :
//--------------------------------------------------------------------------------
// see : https://developer.android.com/reference/android/os/Build.html#getSerial()
// Renvois une chaine avec des informations sur la machine
//--------------------------------------------------------------------------------
import android.os.Build;
import android.os.Build.VERSION;
import android.provider.Settings.Secure;
import android.content.pm.*;
import android.content.Context;
import android.provider.Settings;
import java.lang.reflect.Field;


PUBLIC static string getInfosDevice()
{
string InfosDevice = "";
string android_id = "";
string osName = "";

Context myContext = getContexteApplication();
android_id = Secure.getString(myContext.getContentResolver(), Secure.ANDROID_ID);

Field[] fields = Build.VERSION_CODES.class.getFields();
osName = fields[Build.VERSION.SDK_INT + 1].getName();

InfosDevice = Build.MANUFACTURER + "\t"; // samsung
InfosDevice += Build.MODEL + "\t"; // SM-N9005
InfosDevice += Build.SERIAL + "\t"; // "xxxxxxxx"
InfosDevice += Build.VERSION.SDK_INT + "\t"; // 21 -> API-Level
InfosDevice += Build.VERSION.RELEASE + "\t"; // 5.0
InfosDevice += Build.DISPLAY + "\t"; // LRX21V.N9005XXSGBPL6 -> Build.ID . version du microprogramme
InfosDevice += Build.ID + "\t"; // LRX21V
InfosDevice += android_id + "\t"; // 546259d7609efccc A 64-bit number (as a hex string)
InfosDevice += osName; // LOLLIPOP
//
RETURN InfosDevice;
}
Membre enregistré
946 messages
Popularité : +102 (110 votes)
Posté le 16 octobre 2017 - 18:38
Autre méthode :
Avec une fenêtre cmd exécuter : adb shell getprop > c:\temp\lstprop.txt
Editer le fichier c:\temp\lstprop.txt, vous devriez avoir des ligne comme celle-ci :
...
[ro.bootloader]: [N9005XXSGBPL6]
[ro.bootmode]: [unknown]
[ro.bt.bdaddr_path]: [/efs/bluetooth/bt_addr]
[ro.build.PDA]: [N9005XXSGBPL6]
[ro.build.changelist]: [4540543]
...
La première colonne est le nom d'une propriété de l'appareil, exemple : ro.serialno donne le numéro de série.

A partir de WM, créez une procédure globale : getSystemProperty
Passez la fonction en mode java
Copiez le code suivant :
//-----------------------------------------------------------------------------
// Renvois la valeur d'une propriété du terminal.
// Pour en avoir la liste exécuter sous cmd : adb shell getprop
//-----------------------------------------------------------------------------
import java.lang.Process;
import java.lang.Runtime;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import android.util.Log;

PUBLIC static string getSystemProperty(string propName)
{
string TAG = "PhPa";
string Line;
BufferedReader Input = Null;

try {
Process p = Runtime.getRuntime().exec("getprop " + propName);
Input = new BufferedReader(new InputStreamReader(p.getInputStream()), 1024);
Line = input.readLine();
input.close();
}
catch (IOException ex) {
Log.e(TAG, "Lecture de la propriété : " + propName + ", impossible", ex);
RETURN Null;
}
finally {
IF (Input != Null) {
try {
input.close();
}
catch (IOException e) {
Log.e(TAG, "Erreur getSystemProperty", e);
}
}
}

RETURN Line;
}


Puis votre code :
Info(getSystemProperty("ro.serialno"))
Membre enregistré
1 603 messages
Popularité : +64 (70 votes)
Posté le 17 octobre 2017 - 08:23
Bonjour,

Nouveauté 714 de VM23

--
Cordialement
François

http://intra.fr http://intrasoftware.fr