Check out the latest documentation.

What's Covered

This tutorial illustrates the basic use of the 51Degrees API using the Trie detection method. It will show you how to create a provider and how to obtain a value for the IsMobile property.

Code and Explanation

Getting started 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
main assumes it is being run with a working directory at root of project or of this module.
Full Source File
    // User-Agent string of an iPhone mobile device.
    private static 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 version 41 on desktop.
    private static 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.
    private static 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");

     * Main entry point for this example. For each of the User-Agents defined
     * in this class:
     * <ol>
     * <li>invokes {@link Match#getValue(java.lang.String)} method; and
     * <li>prints results.
     * </ol>
     * Result in this case will be either True or False, depending on whether
     * the User-Agent belongs to a mobile device or a non-mobile device.
     * @param args command line arguments, not used.
     * @throws if there is a problem accessing the data file
     * that will be used for device detection.
    public static void main(String[] args) throws IOException {
        // Load the C/C++ native library. Uncomment dll line for windows and so line in linux.
        // LibLoader.load("/");

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

        System.out.println("Starting Getting Started Example.");

        // Carries out a match for a mobile User-Agent.
        Match match = provider.getMatch(mobileUserAgent);
        System.out.println("\nMobile User-Agent: " + mobileUserAgent);
        System.out.println("   IsMobile: " + match.getValue("IsMobile"));

        // Carries out a match for a desktop User-Agent.
        match = provider.getMatch(desktopUserAgent);
        System.out.println("\nDesktop User-Agent: " + desktopUserAgent);
        System.out.println("   IsMobile: " + match.getValue("IsMobile"));

        // Carries out a match for a media hub User-Agent.
        match = provider.getMatch(mediaHubUserAgent);
        System.out.println("\nMediaHub User-Agent: " + mediaHubUserAgent);
        System.out.println("   IsMobile: " + match.getValue("IsMobile"));


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. The example can easily be modified to retrieve the value of any other property. Premium and Enterprise data files provide considerably more properties such as IsCrawler , PriceBand , HardwareVendor and ScreenInchesWidth . For a full list of properties and the data file versions they exist in please see the Property Dictionary .