We have a Java based application where in we want to detect the device type(mobile or desktop) for the device that is sending the request.
How is it possible?
You'll have to read the User-Agent
header from the request and decide on that.
In vanilla servlet apps, a crude way of doing it is:
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
if(request.getHeader("User-Agent").contains("Mobi")) {
//you're in mobile land
} else {
//nope, this is probably a desktop
}
}
You can try this lib I think, yauaa can detect a user agent string is which device/software
https://github.com/nielsbasjes/yauaa
You can check the User-Agent
HTTP header on the HttpServletRequest
object.
Ref: http://www.w3.org/Protocols/HTTP/HTRQ_Headers.html#user-agent
You could get a 3rd party software solution. There are plenty of Open Source ones out there. I've used 51Degrees.mobi's Java solution before now (and have also worked on their open source C solution). Follow that link and hit the download button. It's relatively easy to get up and running.
You can try to use Spring Mobile. There are convenient classes to solve that.
Device currentDevice = DeviceUtils.getCurrentDevice(servletRequest);
if(currentDevice.isMobile()) { /* Mobile */ }
if(currentDevice.isTablet()) { /* Tablet */ }
if(currentDevice.isNormal()) { /* Desktop */ }
There's also http://openddr.mobi/, Open Source Device Detection for
based on the W3C Device Description Repository.
OpenDDR is comparable to device repositories by 51Degrees, DeviceAtlas or ScientiaMobile/WURFL, but unlike those proprietary, closed source product, it's poen source and free to use.