Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


SEON's Device Fingerprinting SDK collects insights about the device associated to a user and allows developers to integrate device identification into native Android apps.

Account takeovers, multiple account signups and payments can easily be avoided by using SEON's Device Fingerprinting SDK.


  • Android 5.0 or higher (API level 21)
  • INTERNET permission
  • (optional) READ_PHONE_STATE permission for is_on_call and device_cellular_id (under API 28)
  • (optional) ACCESS_WIFI_STATE permission for wifi_ssid (under API 27)
  • (optional) ACCESS_NETWORK_STATE permission for network_config for WiFi configurations and READ_PHONE_STATE for cellular data configurations
  • (optional) ACCESS_FINE_LOCATION (starting from API 29) and ACCESS_COARSE_LOCATION (starting from API 27) permission for wifi_mac_address and wifi_ssid
  • (optional) for gsf_id

Note: If the optional permissions listed are not available the application, the values collected using those permissions will be ignored. We recommend using as much permission as possible based on your use-case to provide reliable device fingerprint.


Using Gradle

dependencies {
  implementation('io.seon.androidsdk:androidsdk:6.1.0') {
    transitive = true


Note: Starting from v6 there is a change in SEON’s API Policy. From now on SEON might introduce new fields in the SDK with minor versions. We advise you to integrate in a way that addition of new fields is handled gracefully.

Kotlin Integration

val sessionID = "CUSTOM_SESSION_ID"

// Build the Seon object with the required parameters
// an application context and a session_id
val sfp = SeonBuilder().withContext(applicationContext).withSessionId(sessionID).build()

// Enable logging

try {
    sfp.getFingerprintBase64 { seonFingerprint: String? ->
        //set seonFingerprint as the value for the session
        //property of your Fraud API request.
} catch (e : SeonException){

Java Integration


// Build the Seon object with the required parameters
// an application context and a session_id
Seon seonFingerprint = new SeonBuilder()

// Enable logging

try {
        //set fp as the value for the session property of the fraud API request.
} catch (SeonException e) {

Note: 3.0.6 and earlier versions need to include the following ProGuard rule to avoid JNI runtime errors :

-keepclasseswithmembers,includedescriptorclasses class io.seon.androidsdk.service.JNIHandler {
   native <methods>;



  • Improved emulator detection based on high volume data analysis
  • Fine-tuned root detection's sensitivity


  • Internal changes to prepare for upcoming features


  • Improved auto clicker detection
  • Improved emulator detection for:
    • Windows Subsystem for Android
    • Redfinger Cloud
    • Bliss OS
    • Virtual Box
    • VMWare
    • Andy
  • Fix occasional StaleDataException on Samsung devices


New features and improvements

  • Optimised the performance of emulator detection
  • Improved and extended root detection
  • Improved device_hash uniqueness


  • Fixed a bug where the SDK's emulator detection returned false positive results in some rare cases.
  • Fixed device_hash's occasional non-uniqueness, which resulted in different physical devices generating the same device_hash in rare scenarios.

Note: This is NOT a breaking change to the device_hash property, the hash only changes for approximately less than 0.5% of all devices, where the device_hash was not unique previously.


  • Internal changes to prepare for upcoming features


Important Integration changes

  • Starting from v6 there is a change in SEON’s API Policy. From now on SEON might introduce new fields in the SDK with minor versions. We advise you to integrate in a way that addition of new fields is handled gracefully.

  • device_hash field is calculated differently, resulting in different values for a given device. This means these values are going to break between versions.

  • Raised minimum API level to 21

  • Removed deprecated interface members:

    • SeonBuilder.seon
    • SeonBuilder.getInstance()

New features and improvements

  • Improved, extended and optimised the performance of emulator detection
  • Improved and extended root detection with included detection of popular rooting tools
  • Introducing new auto clicker detection
  • Introducing list of potentially interfering applications
  • Introducing remote control and screen mirroring detection
  • Introducing call status detection
  • Introducing various new response fields
  • General performance improvements
  • Improved stability of device hash
  • Improved error handling

New response fields

  • biometric_status Indicates the status of biometric authentication on the device.

  • bootloader_state Bootloader lock state, calculation based on system properties.

  • build_model A human-readable name that represents the marketing or consumer-facing name of the device.

  • developer_options_state Returns the state of the developer options setting.

  • device_orientation Returns the current orientation of the device

  • gsf_id Returns a unique identifier which only changes after a factory reset is performed on the device.

    Requires permission:

  • interfering_apps Contains the list of installed applications that were given permissions to potentially interfere with other applications on the device by our metric. Accurate results to the given metric. Applications might interfere with the host application through different methods/permissions, which are not detected here.

  • is_click_automator_installed Returns true if the SDK detects enabled click automator applications known to us.

  • is_keyguard_secure Indicates whether the keyguard is secured by a PIN, pattern or password or a SIM card is currently locked.

  • is_nfc_available Returns whether the device has NFC hardware available.

  • is_nfc_enabled Returns whether the device has NFC functionalities enabled.

  • is_on_call Returns true or false depending on whether the device was on a call while collecting the fingerprint. Detects both cellular and VOIP calls.

    Requires permission: android.permission.READ_PHONE_STATE

  • is_remote_control_connected Returns whether the device is being remotely controlled by a known remote control application at the time of the fingerprint.

  • is_screen_being_mirrored Returns whether the screen of the device is being mirrored to an additional display. This is triggered by screen sharing, screen mirroring to a television, using a display through HDMI connection, etc. This might be the indicator of the user’s screen content is being visible to someone else in some way.

  • remote_control_provider If is_remote_control_connected is true, this field returns the readable name of detected remote control application, otherwise null.

  • timezone_identifier Returns the current system timezone’s geopolitical region ID.

  • usb_cable_state Shows if the device is currently being connected to a PC/other device by a USB-cable.

  • usb_debugging_state State of the USB debugging toggle in developer options.


  • Fixed a bug where the SDK returned current audio level incorrectly
  • Fixed incorrect display metrics for screen_width for some devices
  • Fixed incorrect display metrics for screen_height for some devices
  • Fixed battery_voltage issue where sometimes the returned value returned the voltage in Volts instead of mV
  • Fixed an error on some devices on API level 27 or lower
  • Fixed an error where a payload couldn't be generated when the Seon object had not been initialized on the main thread
  • Fixed an uncaught exception on older devices
  • Fixed screen_brightness return values on some devices
  • An exception is now correctly thrown by the SDK if the session_id is either null or empty


  • Internal changes to prepare for upcoming features and improvements


  • Fixed a few Context type related issues
  • Fixed a possible Cursor object leak
  • Fixed network related strict mode warnings
  • Minor performance improvements


  • Fixed a concurrency issue if the Seon object is not instantiated on the main thread


  • Fixed some rare occasions where fingerprint generation can get stuck on some environments with a 'Fingerprint could not be generated' message


  • Rootbeer dependency updated to 0.1.0
  • Minor fixes and improvements


  • Fixed an error on some older devices
  • Fixed missing device name warning logs in the console even when logging was set to false
  • Improved device name and manufacturer identification


  • Fixed an issue where some older devices couldn't generate a fingerprint
  • Fixed an issue with Bluestacks emulator


  • Improved error handling
  • Bugfixes


Breaking changes: The newly computed device hash won't be compatible with previous versions

  • Improved device hash persistence and accuracy
  • Minor fixes and improvements


  • Fixed an issue where some older devices couldn't generate a fingerprint


  • Fixed an issue with the latest emulator detection changes


  • Improved emulator detection accuracy and troubleshooting
  • Device information dependency updates
  • Socket timeout exception handling


  • Changed fingerprint method to be async, improving speed and reliability
  • device_ip fields are now available
  • Raised SDK build target API level to 33
  • Performance improvements
  • Bugfixes


  • Improved emulator detection accuracy
  • Bugfixes


  • Improved, more persistent device identification
  • Bugfixes


  • Emulator detection improvements
  • Bugfixes and compatibility improvements


  • Bugfixes and compatibility improvements


  • Bugfixes and compatibility improvements


  • Improved data collection methods
  • Bugfixes and security improvements


  • Removed background HTTP request for data transmission, the SDK returns an encrypted, base64 encoded string to use with SEON's REST API
  • Removed public key support
  • Bugfixes and security improvements


  • Improved data collection methods


  • Bugfixes and stability improvements


  • Improved data collection methods


  • Bugfixes and security improvements


  • Bugfixes and performance improvements


  • Performance improvements


  • Removed start method
  • Added scanFingerprint method
  • Added public key support
  • Enhanced logging settings
  • Bugfixes and performance improvements


  • Bugfixes and performance improvements


  • First stable build


No description or website provided.







No releases published


No packages published

Contributors 4