Nous avons une application Java dans laquelle nous voulons détecter le type de périphérique (mobile ou de bureau) pour le périphérique qui envoie la demande.
Comment est-ce possible?
Vous devrez lire l'en-tête User-Agent
de la demande et décider de cela.
Dans les applications de servlet Vanilla, une façon simple de le faire est la suivante:
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
if(request.getHeader("User-Agent").indexOf("Mobile") != -1) {
//you're in mobile land
} else {
//nope, this is probably a desktop
}
}
Vous pouvez obtenir des informations sur le périphérique en analysant l'en-tête http.
String browserType = request.getHeader("User-Agent");
Vous devriez analyser browserType pour obtenir le type de périphérique
Cela peut aider
public String getBrowserInfo( String Information )
{
String browsername = "";
String browserversion = "";
String browser = Information;
if (browser.contains("MSIE"))
{
String subsString = browser.substring(browser.indexOf("MSIE"));
String info[] = (subsString.split(";")[0]).split(" ");
browsername = info[0];
browserversion = info[1];
} else if (browser.contains("Firefox"))
{
String subsString = browser.substring(browser.indexOf("Firefox"));
String info[] = (subsString.split(" ")[0]).split("/");
browsername = info[0];
browserversion = info[1];
} else if (browser.contains("Chrome"))
{
String subsString = browser.substring(browser.indexOf("Chrome"));
String info[] = (subsString.split(" ")[0]).split("/");
browsername = info[0];
browserversion = info[1];
} else if (browser.contains("Opera"))
{
String subsString = browser.substring(browser.indexOf("Opera"));
String info[] = (subsString.split(" ")[0]).split("/");
browsername = info[0];
browserversion = info[1];
} else if (browser.contains("Safari"))
{
String subsString = browser.substring(browser.indexOf("Safari"));
String info[] = (subsString.split(" ")[0]).split("/");
browsername = info[0];
browserversion = info[1];
}
return browsername + "-" + browserversion;
}
Vous pourriez obtenir une solution logicielle tierce. Il existe de nombreux logiciels Open Source. J'ai déjà utilisé la solution Java de 51Degrees.mobi avant (et j'ai également travaillé sur leur solution C open source). Suivez ce lien et cliquez sur le bouton de téléchargement. Il est relativement facile de se lever et de courir.
Vous pouvez essayer d'utiliser Spring Mobile . Il existe des classes pratiques pour résoudre ce problème.
Device currentDevice = DeviceUtils.getCurrentDevice(servletRequest);
if(currentDevice.isMobile()) { /* Mobile */ }
if(currentDevice.isTablet()) { /* Tablet */ }
if(currentDevice.isNormal()) { /* Desktop */ }
Vous pouvez essayer cette lib, je pense, yauaa peut détecter une chaîne d'agent utilisateur est quel périphérique/logiciel
Pour Java, 51Degrees a une API gratuite sur GitHub https://github.com/51Degrees/Java-Device-Detection , elle est régulièrement mise à jour et doit pouvoir couvrir toutes les détentions de base dont vous avez besoin.
Vous trouverez un tutoriel sur l'utilisation de l'API pour la détection du type de périphérique ici https://51degrees.com/Developers/Documentation/APIs/Java-V32/Tutorials/Web-App
Il existe également une version gratuite de Cloud qui propose la propriété DeviceType (si vous voulez plus que simplement IsMobile), vous pouvez trouver les détails à ce sujet sur le site Web 51Degrees. Vous devrez "acheter" le cloud gratuit via le site Web, mais il ne vous demande pas de coordonnées bancaires et est totalement gratuit. Vous pouvez également utiliser JavaScript et toute autre intégration en fonction de vos besoins.
Divulgation: Je travaille chez 51Degrees.
Vous pouvez vérifier le User-Agent
en-tête HTTP sur l'objet HttpServletRequest
.
Réf: http://www.w3.org/Protocols/HTTP/HTRQ_Headers.html#user-agent