• Developers Guide
  • Data Fetching Guide

Data Fetching Guide for Android

Airbridge Device ID

Device identifier by Airbridge. (example: 82a16ec9-a273-48b6-9bb2-017eab641109)

Android SDK (v4)

123456789101112
import co.ab180.airbridge.Airbridge
import co.ab180.airbridge.common.onSuccess
import co.ab180.airbridge.common.onFailure

Airbridge.fetchDeviceUUID(
    onSuccess = { deviceUUID ->

    },
    onFailure = { throwable ->

    }
)

Android SDK (Previous)

123456789101112
import co.ab180.airbridge.Airbridge
import co.ab180.airbridge.AirbridgeCallback

Airbridge.getDeviceInfo().getUUID(object : AirbridgeCallback.SimpleCallback<String>() {
        override fun onSuccess(result: String) {
  
    }

    override fun onFailure(throwable: Throwable) {
  
    }
})

Airbridge Generated UUID

Random UUID assigned by Airbridge upon app install on each device. (example: 82a16ec9-a273-48b6-9bb2-017eab641109)

Android SDK (v4)

123456789101112
import co.ab180.airbridge.Airbridge
import co.ab180.airbridge.common.onSuccess
import co.ab180.airbridge.common.onFailure

Airbridge.fetchAirbridgeGeneratedUUID(
    onSuccess = { airbridgeGeneratedUUID ->

    },
    onFailure = { throwable ->

    }
)

Android SDK (Previous)

12345
import co.ab180.airbridge.Airbridge

Airbridge.fetchAirbridgeGeneratedUUID { uuid ->

}

App Set ID

Unique ID that publishers can use to identify which apps a specific user has installed. (example: 82a16ec9-a273-48b6-9bb2-017eab641109)

123456789101112
import com.google.android.gms.appset.AppSet
import com.google.android.gms.appset.AppSetIdClient
import com.google.android.gms.appset.AppSetIdInfo
import com.google.android.gms.tasks.Task

val client = AppSet.getClient(applicationContext) as AppSetIdClient
val task: Task<AppSetIdInfo> = client.appSetIdInfo as Task<AppSetIdInfo>

task.addOnSuccessListener({
    val appSetIdScope: Int = it.scope
    val appSetId: String = it.id
})

GAID (Google Advertising ID)

Advertising ID issued by Google. (example: 82a16ec9-a273-48b6-9bb2-017eab641109)

Android SDK (v4)

1234567891011
import co.ab180.airbridge.Airbridge

Airbridge.fetchGoogleAdvertisingIdInfo(
    onSuccess = { result ->
        // GAID
        result.id
        // LAT
        result.isLimitAdTrackingEnabled
    },
    onFailure = { throwable -> }
)

Android SDK (Previous)

1234567891011121314
import co.ab180.airbridge.Airbridge
import co.ab180.airbridge.AirbridgeCallback
import co.ab180.airbridge.AdvertisingIdInfo

Airbridge.getDeviceInfo().getAdvertisingIdInfo(object : AirbridgeCallback.SimpleCallback<AdvertisingIdInfo>() {
        override fun onSuccess(result: AdvertisingIdInfo) {
            result.getId() // GAID
        result.getLimitAdTrackingEnabled() // LAT
    }

    override fun onFailure(throwable: Throwable) {
  
    }
})

Google Limit AD Tracking

Device's Google Limit AD Tracking information. (example: true)

Android SDK (v4)

1234567891011
import co.ab180.airbridge.Airbridge

Airbridge.fetchGoogleAdvertisingIdInfo(
    onSuccess = { result ->
        // GAID
        result.id
        // LAT
        result.isLimitAdTrackingEnabled
    },
    onFailure = { throwable -> }
)

Android SDK (Previous)

1234567891011121314
import co.ab180.airbridge.Airbridge
import co.ab180.airbridge.AirbridgeCallback
import co.ab180.airbridge.AdvertisingIdInfo

Airbridge.getDeviceInfo().getAdvertisingIdInfo(object : AirbridgeCallback.SimpleCallback<AdvertisingIdInfo>() {
        override fun onSuccess(result: AdvertisingIdInfo) {
            result.getId() // GAID
        result.getLimitAdTrackingEnabled() // LAT
    }

    override fun onFailure(throwable: Throwable) {
  
    }
})

Google Install Referrer

InstallReferrer information sent by Google Play Service.

Android SDK (v4)

123456
import co.ab180.airbridge.Airbridge

Airbridge.fetchGoogleInstallReferrerDetails(
    onSuccess = { result -> },
    onFailure = { throwable -> }
)

Android SDK (Previous)

1234567891011121314151617
import co.ab180.airbridge.Airbridge
import co.ab180.airbridge.AirbridgeCallback
import co.ab180.airbridge.ReferrerDetails
  
Airbridge.getDeviceInfo().getGoogleInstallReferrerDetails(object : AirbridgeCallback<ReferrerDetails?> {
  override fun onSuccess(result: ReferrerDetails?) {
  
  }
  
  override fun onFailure(throwable: Throwable) {

  }
  
  override fun onComplete() {
  
  }
})

OAID (Huawei Advertising ID)

Advertising ID issued by Huawei. (example: 82a16ec9-a273-48b6-9bb2-017eab641109)

Android SDK (v4)

1234567891011
import co.ab180.airbridge.Airbridge

Airbridge.fetchHuaweiAdvertisingIdInfo(
    onSuccess = { result ->
        // GAID
        result.id
        // LAT
        result.isLimitAdTrackingEnabled
    },
    onFailure = { throwable -> }
)

Android SDK (Previous)

1234567891011121314
import co.ab180.airbridge.Airbridge
import co.ab180.airbridge.AirbridgeCallback
import co.ab180.airbridge.AdvertisingIdInfo

Airbridge.getDeviceInfo().getHuaweiAdvertisingIdInfo(object : AirbridgeCallback.SimpleCallback<AdvertisingIdInfo>() {
        override fun onSuccess(result: AdvertisingIdInfo) {
            result.getId() // OAID
        result.getLimitAdTrackingEnabled() // LAT
    }

    override fun onFailure(throwable: Throwable) {
  
    }
})

Huawei Limit AD Tracking

Device's Huawei Limit AD Tracking information. (example: true)

Android SDK (v4)

1234567891011
import co.ab180.airbridge.Airbridge

Airbridge.fetchHuaweiAdvertisingIdInfo(
    onSuccess = { result ->
        // GAID
        result.id
        // LAT
        result.isLimitAdTrackingEnabled
    },
    onFailure = { throwable -> }
)

Android SDK (Previous)

1234567891011121314
import co.ab180.airbridge.Airbridge
import co.ab180.airbridge.AirbridgeCallback
import co.ab180.airbridge.AdvertisingIdInfo

Airbridge.getDeviceInfo().getHuaweiAdvertisingIdInfo(object : AirbridgeCallback.SimpleCallback<AdvertisingIdInfo>() {
        override fun onSuccess(result: AdvertisingIdInfo) {
            result.getId() // OAID
        result.getLimitAdTrackingEnabled() // LAT
    }

    override fun onFailure(throwable: Throwable) {
  
    }
})

Huawei Install Referrer

InstallReferrer information sent by Huawei Mobile Service.

Android SDK (v4)

123456
import co.ab180.airbridge.Airbridge

Airbridge.fetchHuaweiInstallReferrerDetails(
    onSuccess = { result -> },
    onFailure = { throwable -> }
)

Android SDK (Previous)

1234567891011121314151617
import co.ab180.airbridge.Airbridge
import co.ab180.airbridge.AirbridgeCallback
import co.ab180.airbridge.ReferrerDetails
  
Airbridge.getDeviceInfo().getHuaweiInstallReferrerDetails(object : AirbridgeCallback<ReferrerDetails?> {
  override fun onSuccess(result: ReferrerDetails?) {
  
  }
  
  override fun onFailure(throwable: Throwable) {

  }
  
  override fun onComplete() {
  
  }
})

One Store Install Referrer

InstallReferrer information sent by One Store.

Android SDK (v4)

Android SDK (v4) does not support One Store Install Referrer.

Android SDK (Previous)

1234567891011121314151617
import co.ab180.airbridge.Airbridge
import co.ab180.airbridge.AirbridgeCallback
import co.ab180.airbridge.ReferrerDetails
  
Airbridge.getDeviceInfo().getOneStoreInstallReferrerDetails(object : AirbridgeCallback<ReferrerDetails?> {
  override fun onSuccess(result: ReferrerDetails?) {
  
  }
  
  override fun onFailure(throwable: Throwable) {

  }
  
  override fun onComplete() {
  
  }
})

Device Model

Device model name. (example: Pixel 3a)

123
import android.os.Build

Build.MODEL // ex : Pixel 3a

Device Manufacturer

Device manufacturer information. (example: Google)

123
import android.os.Build

Build.MANUFACTURER // ex : Google

OS Name

Device OS name. (example: Android)

1
"Android" // use constant string

OS Version

Device OS version. (example: 10)

123
import android.os.Build

Build.VERSION.RELEASE // ex : 10

Locale

Device locale settings. (example: en-US)

1234
import java.util.*

// ex : en-US
"${Locale.getDefault().language}-${Locale.getDefault().country}"

Timezone

Device timezone settings. (example: US/Pacific)

123
import java.util.*

TimeZone.getDefault().id // ex : US/Pacific

Orientation

Device display orientation. Values will be either "portrait" or "landscape". (example: portrait)

123456789
import android.content.res.Configuration
import android.content.Context

var orientation: String
if (context.resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT) {
    orientation = "portrait"
} else {
    orientation = "landscape"
}

Screen Density

Device's screen density. (example: 3.000)

12345678910111213141516171819202122232425
import android.util.DisplayMetrics
import android.view.Display
import android.view.WindowManager
import android.content.Context

val windowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
    val realDisplayMetrics = DisplayMetrics()
    windowManager.defaultDisplay.getRealMetrics(realDisplayMetrics)
    val width = realDisplayMetrics.widthPixels
    val height = realDisplayMetrics.heightPixels
    val dpi = realDisplayMetrics.densityDpi
} else {
    val displayMetrics = DisplayMetrics()
    windowManager.defaultDisplay.getMetrics(displayMetrics)
    try {
        val width = Display::class.java
                .getMethod("getRawWidth")
                .invoke(windowManager.defaultDisplay) as Int
        val height = Display::class.java
                .getMethod("getRawHeight")
                .invoke(windowManager.defaultDisplay) as Int
        val dpi = displayMetrics.densityDpi
    } catch (_: Exception) { }
}

Screen Width

Device's actual width. (example: 375.0)

12345678910111213141516171819202122232425
import android.util.DisplayMetrics
import android.view.Display
import android.view.WindowManager
import android.content.Context

val windowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
    val realDisplayMetrics = DisplayMetrics()
    windowManager.defaultDisplay.getRealMetrics(realDisplayMetrics)
    val width = realDisplayMetrics.widthPixels
    val height = realDisplayMetrics.heightPixels
    val dpi = realDisplayMetrics.densityDpi
} else {
    val displayMetrics = DisplayMetrics()
    windowManager.defaultDisplay.getMetrics(displayMetrics)
    try {
        val width = Display::class.java
                .getMethod("getRawWidth")
                .invoke(windowManager.defaultDisplay) as Int
        val height = Display::class.java
                .getMethod("getRawHeight")
                .invoke(windowManager.defaultDisplay) as Int
        val dpi = displayMetrics.densityDpi
    } catch (_: Exception) { }
}

Screen Height

Device's actual height. (example: 667.0)

12345678910111213141516171819202122232425
import android.util.DisplayMetrics
import android.view.Display
import android.view.WindowManager
import android.content.Context

val windowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
    val realDisplayMetrics = DisplayMetrics()
    windowManager.defaultDisplay.getRealMetrics(realDisplayMetrics)
    val width = realDisplayMetrics.widthPixels
    val height = realDisplayMetrics.heightPixels
    val dpi = realDisplayMetrics.densityDpi
} else {
    val displayMetrics = DisplayMetrics()
    windowManager.defaultDisplay.getMetrics(displayMetrics)
    try {
        val width = Display::class.java
                .getMethod("getRawWidth")
                .invoke(windowManager.defaultDisplay) as Int
        val height = Display::class.java
                .getMethod("getRawHeight")
                .invoke(windowManager.defaultDisplay) as Int
        val dpi = displayMetrics.densityDpi
    } catch (_: Exception) { }
}

Longitude

Longitude of device's LastKnownLocation.

12345678910111213141516
import android.location.Location
import android.location.LocationManager

val locationManager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager
val gpsLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER)
val netLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER)
val bestLocation: Location = when {
    (gpsLocation != null) and (netLocation != null) -> if (gpsLocation.accuracy < netLocation.accuracy) { gpsLocation } else { netLocation }
    (gpsLocation != null) -> gpsLocation
    else -> netLocation
} ?: return null

val latitude = bestLocation?.latitude
val longitude = bestLocation?.longitude
val altitude = bestLocation?.altitude
val speed = bestLocation?.speed

Latitude

Latitude of device's LastKnownLocation.

12345678910111213141516
import android.location.Location
import android.location.LocationManager

val locationManager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager
val gpsLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER)
val netLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER)
val bestLocation: Location = when {
    (gpsLocation != null) and (netLocation != null) -> if (gpsLocation.accuracy < netLocation.accuracy) { gpsLocation } else { netLocation }
    (gpsLocation != null) -> gpsLocation
    else -> netLocation
} ?: return null

val latitude = bestLocation?.latitude
val longitude = bestLocation?.longitude
val altitude = bestLocation?.altitude
val speed = bestLocation?.speed

Altitude

Altitude of device's LastKnownLocation.

12345678910111213141516
import android.location.Location
import android.location.LocationManager

val locationManager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager
val gpsLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER)
val netLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER)
val bestLocation: Location = when {
    (gpsLocation != null) and (netLocation != null) -> if (gpsLocation.accuracy < netLocation.accuracy) { gpsLocation } else { netLocation }
    (gpsLocation != null) -> gpsLocation
    else -> netLocation
} ?: return null

val latitude = bestLocation?.latitude
val longitude = bestLocation?.longitude
val altitude = bestLocation?.altitude
val speed = bestLocation?.speed

Speed

Speed of device's LastKnownLocation.

12345678910111213141516
import android.location.Location
import android.location.LocationManager

val locationManager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager
val gpsLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER)
val netLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER)
val bestLocation: Location = when {
    (gpsLocation != null) and (netLocation != null) -> if (gpsLocation.accuracy < netLocation.accuracy) { gpsLocation } else { netLocation }
    (gpsLocation != null) -> gpsLocation
    else -> netLocation
} ?: return null

val latitude = bestLocation?.latitude
val longitude = bestLocation?.longitude
val altitude = bestLocation?.altitude
val speed = bestLocation?.speed

Network Carrier

Device network carrier information.

1234
import android.telephony.TelephonyManager

val telephonyManager = context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
val carrier = telephonyManager.networkOperatorName

Bluetooth Status

Device bluetooth status. (example: true)

1234
import android.bluetooth.BluetoothAdapter

val bluetoothAdapter = BluetoothAdapter.getDefaultAdapter()
val enabled = bluetoothAdapter.isEnabled

Cellular Status

Device mobile data status. (example: true)

1234567891011121314
import android.net.ConnectivityManager
import android.net.NetworkCapabilities
import android.content.Context

val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    val activeNetwork = connectivityManager.activeNetwork
    val capabilities = connectivityManager.getNetworkCapabilities(activeNetwork)
    val cellularEnabled = capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)
} else {
    val networkInfo = connectivityManager.activeNetworkInfo
    val cellularEnabled = (networkInfo.type == ConnectivityManager.TYPE_MOBILE)
}

Wifi Status

Device wifi status. (example: true)

1234567891011121314
import android.net.ConnectivityManager
import android.net.NetworkCapabilities
import android.content.Context

val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    val activeNetwork = connectivityManager.activeNetwork
    val capabilities = connectivityManager.getNetworkCapabilities(activeNetwork)
    val wifiEnabled = capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)
} else {
    val networkInfo = connectivityManager.activeNetworkInfo
    val wifiEnabled = (networkInfo.type == ConnectivityManager.TYPE_WIFI)
}

Package Name

Application package name. (example: co.ab180.ablog)

12345678910
import android.content.pm.PackageManager
import android.content.Context

var packageName = ""
try {
    val packageInfo = context.packageManager.getPackageInfo(context.packageName, 0)
    packageName = packageInfo.packageName
} catch (e: PackageManager.NameNotFoundException) {

}

Version

Application version name. (example: 1.0.0)

12345678910
import android.content.pm.PackageManager
import android.content.Context

var versionName = ""
try {
    val packageInfo = context.packageManager.getPackageInfo(context.packageName, 0)
    versionName = packageInfo.versionName
} catch (e: PackageManager.NameNotFoundException) {

}

Event Timestamp

Timestamp(milliseconds) of when the event was sent. (example: 1581043739682)

1
System.currentTimeMillis()

Was this helpful?

Any questions or suggestions?