Check out the latest documentation.

What's Covered

51Degrees device detector returns all detection results as a string. This tutorial demonstrates how to return results for the IsMobile property value as a boolean.

Code and Explanation

Strongly Typed example of using 51Degrees device detection. The example shows how to:

  1. Load the 51Degrees Hash Trie library
          res = FiftyOneDegreesTrieV3.class.getResource("/");
  2. Instantiate 51Degrees detection provider
          provider = new Provider("path/to/51Degrees/data/file.trie");
  3. Pass in a single HTTP User-Agent header
          Match match = provider.match(userAgent);
  4. Extract the value of the IsMobile property as boolean
main assumes it is being run with a working directory at root of project or of this module.
Full Source File
    // Device detection provider which takes User-Agents and returns matches.
    protected final Provider provider;

    // User-Agent string of a iPhone mobile device.
    protected final String mobileUserAgent = "Mozilla/5.0 (iPhone; CPU iPhone "
            + "OS 7_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) "
            + "Version/7.0 Mobile/11D167 Safari/9537.53";
    // User-Agent string of Firefox Web browser of version 41 used on desktop.
    protected final String desktopUserAgent = "Mozilla/5.0 (Windows NT 6.3; " +
            "WOW64; rv:41.0) Gecko/20100101 Firefox/41.0";
    // User-Agent string of a MediaHub device.
    protected final String mediaHubUserAgent = "Mozilla/5.0 (Linux; Android 4.4"
            + ".2; X7 Quad Core Build/KOT49H) AppleWebKit/537.36 (KHTML, like "
            + "Gecko) Version/4.0 Chrome/ Safari/537.36";

     * Loads the 51Degrees Hash Trie library and initialises the device
     * detection Provider with the Lite data file. For more data see:
     * <a href="">compare data options
     * </a>
     * @throws IOException can be thrown if there is a problem reading from the
     * provided data file.
    public StronglyTypedValues() throws IOException {
        // Load the C/C++ native library. Uncomment dll line for windows and so line in linux.
        // LibLoader.load("/");

        provider = new Provider("../../data/51Degrees-LiteV3.4.trie");


     * Matches provided User-Agent string and returns the IsMobile property
     * value as boolean.
     * Detection initiated by invoking {@link Provider#getMatch(java.lang.String)}.
     * Detection results are then stored in the {@link Match} object and can be
     * accessed using the {@code Match.getValue("PropertyName")} method.
     * @param userAgent HTTP User-Agent string.
     * @return True if the User-Agent is mobile, False otherwise.
     * @throws IOException if there is a problem accessing the data file.
    public boolean isMobile(String userAgent) throws IOException {
        Match match = provider.getMatch(userAgent);
        return Boolean.parseBoolean(match.getValue("IsMobile"));

     * Main entry point for this example. For each of the User-Agents defined
     * in this class:
     * <ol>
     * <li>invokes {@link #isMobile(java.lang.String) } method; and
     * <li>prints output depending on the boolean value returned by the
     * {@code isMobile} method.
     * </ol>
     * @param args command line arguments, not used.
     * @throws IOException if there is a problem accessing the data file.
    public static void main(String[] args) throws IOException {
        System.out.println("Starting GettingStartedStronglyTyped example.");
        StronglyTypedValues gs = new StronglyTypedValues();
        try {
            System.out.println("User-Agent: "+gs.mobileUserAgent);
            if(gs.isMobile(gs.mobileUserAgent)) {
            } else {
            System.out.println("User-Agent: "+gs.desktopUserAgent);
            if(gs.isMobile(gs.desktopUserAgent)) {
            } else {
            System.out.println("User-Agent: "+gs.mediaHubUserAgent);
            if(gs.isMobile(gs.mediaHubUserAgent)) {
            } else {
        } finally {

    public void close() throws IOException {

Full Source File


In this tutorial you have seen how to use the detector to retrieve the IsMobile property for a pre-defined User-Agent string. It sets a boolean value to true or false from the original string value of "True" or "False", making if statements simpler to test.