• About Us
  • Blog
  • Basket
  • Account
  • Sign In
  •  

Java API

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("/FiftyOneDegreesTrieV3.so");
          System.load(res.getPath());
      
      
  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
      
          match.getValue("IsMobile").toString();
      
      
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/30.0.0.0 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 java.io.IOException 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("/FiftyOneDegreesTrieV3.dll");
        // LibLoader.load("/FiftyOneDegreesTrieV3.so");

        // 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

Summary

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.