Check out the latest documentation.

What's Covered

This tutorial illustrates the basic use of the 51Degrees API. It will show you how to create a provider, how to create a dataset 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. Instantiate 51Degrees detection provider
          provider = new Provider(StreamFactory.create(
          Shared.getLitePatternV32(), false));
  2. Pass in a single HTTP User-Agent header
          Match match = provider.match(userAgent);
  3. Extract the value of the IsMobile Property


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";
     * Initialises the device detection Provider with the included 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 GettingStarted() throws IOException {
        provider = new Provider(StreamFactory.create(
                Shared.getLitePatternV32(), false));
     * Matches provided User-Agent string and returns IsMobile property value.
     * Detection initiated by invoking {@link Provider#match(java.lang.String)}.
     * Detection results are then stored in the {@link Match} object and can be 
     * accessed using the {@code Match.getValues("PropertyName")} method.
     * @param userAgent HTTP User-Agent string.
     * @return String with value for IsMobile property for a given User-Agent.
     * @throws IOException if there is a problem accessing the data file.
    public String detect(String userAgent) throws IOException {
        Match match = provider.match(userAgent);
        return match.getValues("IsMobile").toString();
     * Main entry point for this example. For each of the User-Agents defined 
     * in this class: 
     * <ol>
     * <li>invokes {@link #detect(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 {
        System.out.println("Starting GettingStarted example.");
        GettingStarted gs = new GettingStarted();
        try {
            System.out.println("Mobile User-Agent: " + gs.mobileUserAgent);
            System.out.println("IsMobile: " + gs.detect(gs.mobileUserAgent));
            System.out.println("Desktop User-Agent: " + gs.desktopUserAgent);
            System.out.println("IsMobile: " + gs.detect(gs.desktopUserAgent));
            System.out.println("MediaHub User-Agent: " + gs.mediaHubUserAgent);
            System.out.println("IsMobile: " + gs.detect(gs.mediaHubUserAgent));
        } finally {
     * Closes the {@link} by releasing data 
     * file readers and freeing the data file from locks. This method should 
     * only be used when the {@code Dataset} is no longer required, i.e. when 
     * device detection functionality is no longer required, or the data file 
     * needs to be freed.
     * @throws IOException if there is a problem accessing the data file.
    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. 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 .