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

Java V3.1 Documentation

You are viewing an old version of the documentation. For the latest, please go here: Java V3.2

Getting Started - Version 3

Up and running in four easy steps.

  1. Download the API.
  2. Unzip the file into a directory of your choice.
  3. Add "51Degrees.detection.core.jar" located in "dist" folder to your project.
  4. To use device detection:
import fiftyone.mobile.detection.Match;
import fiftyone.mobile.detection.Provider;
import fiftyone.mobile.detection.factories.StreamFactory;
import java.io.IOException;

public class Example {
    //FiftyOne Provider object - used to access data and perform match.
    private static Provider provider;
    //Path to FiftyOne device data file.
    private static final String PATH_TO_DAT_FILE = "path\\to\\data_file.dat";
    // User agent string of the device in question.
    private static final String USER_AGENT = "Mozilla/5.0 (BlackBerry; U; "
            + "BlackBerry 9900; en) AppleWebKit/534.11+ (KHTML, like Gecko) "
            + "Version/ Mobile Safari/534.11+";
    public static void main(String[] args) throws IOException {
        // Initialise provider with the data file to use.
        // 'false' flag indicates the data file is not temporary.
        provider = new Provider(StreamFactory.create(PATH_TO_DAT_FILE, false));
        // Match object contains results of detection.
        Match match = provider.match(USER_AGENT);
        // Fetch specific property, in this case 'IsMobile'.
        boolean isMobile = match.getValues("IsMobile").toBool();
        // Implement some logic bbased on detection results.
          System.out.println("This device is mobile.");
          System.out.println("This device is not mobile.");

Initialising Provider

Provider object exposes several match methods that are used to perform device detection. Detection information is returned in a Match object. Provider requires a DataSet to be passes to it at initialisation. DataSet objects provide access to device data from the data files and can be constructed using two factories:

Memory Factory

All data from the data file is read into memory at initialisation. Detection time is faster but the amount of memory used is significantly greater than with StreamFactory. To instantiate Provider object using this method:

Provider p;
p = new Provider(MemoryFactory.create("Path/to/data/file.dat"));


A limited amount of information is read into memory at initialisation. Match will actively use the data file to perform detection and read device information. Detection is slower as it involves disk I/O operations but the amount of memory required is very small. This method is ideal for environments with limited resources. To instantiate Provider object using this method:

Provider p;
p = new Provider(StreamFactory.create("Path/to/data/file.dat", false));

Getting Started - Version 2

Complete the following five steps to integrate mobile device detection into your Java application:

Step 1 - Download "51degrees.mobi_Detection_Java_*.zip" from SourceForge.

Step 2 - Unzip the file into a directory of your choice.

Step 3 - locate "51Degrees.mobi.detection.core.jar" in the "dist" directory and add the JAR to your project.

Step 4 - Add the following code to your Java file:

import fiftyone.mobile.detection.*;
import fiftyone.mobile.detection.binary.*;

Step 5 - You are now ready to detect devices. Use the following code as a reference when implementing a solution within your own code:

public static main(String[] args) throws BinaryException, NullPointerException{
  // Create a Provider object
  Provider p = Reader.create();
  // Provider p = Reader.create("PATH_TO_PREMIUM_DATA");
  // Read in a User Agent String
  BaseDeviceInfo b = p.getDeviceInfo(<INSERT_USER_AGENT_STRING_HERE>);
  // Get the value of a property
  String result = b.getFirstPropertyValue("IsMobile");
  // Check the property value
    system.out.println("This is mobile");
    system.out.println("This is not mobile");