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

    }
)
123456789101112
import co.ab180.airbridge.Airbridge;
import co.ab180.airbridge.common.onSuccess;
import co.ab180.airbridge.common.onFailure;

Airbridge.fetchDeviceUUID(
    deviceUUID -> {

    },
    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) {
  
    }
})
1234567891011121314
import co.ab180.airbridge.Airbridge;
import co.ab180.airbridge.AirbridgeCallback;

Airbridge.getDeviceInfo().getUUID(new AirbridgeCallback.SimpleCallback<String>() {
    @Override
    public void onSuccess(String result) {
  
    }
  
    @Override
    public void onFailure(@NotNull 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 ->

    }
)
123456789101112
import co.ab180.airbridge.Airbridge;
import co.ab180.airbridge.common.onSuccess;
import co.ab180.airbridge.common.onFailure;

Airbridge.fetchAirbridgeGeneratedUUID(
    airbridgeGeneratedUUID -> {

    },
    throwable -> {

    }
);

Android SDK (Previous)

12345
import co.ab180.airbridge.Airbridge

Airbridge.fetchAirbridgeGeneratedUUID { uuid ->

}
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
})
12345678910111213141516171819
import android.content.Context;

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.OnSuccessListener;
import com.google.android.gms.tasks.Task;

Context context = getApplicationContext();
AppSetIdClient client = AppSet.getClient(context);
Task<AppSetIdInfo> task = client.getAppSetIdInfo();

task.addOnSuccessListener(new OnSuccessListener<AppSetIdInfo>() {
    @Override
    public void onSuccess(AppSetIdInfo info) {
        int appSetIdScope = info.getScope();
        String appSetId = info.getId();
    }
});

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 -> }
)
1234567891011
import co.ab180.airbridge.Airbridge;

Airbridge.fetchGoogleAdvertisingIdInfo(
    result -> {
        // GAID
        result.getId();
        // LAT
        result.isLimitAdTrackingEnabled();
    },
    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) {
  
    }
})
12345678910111213141516
import co.ab180.airbridge.Airbridge;
import co.ab180.airbridge.AirbridgeCallback;
import co.ab180.airbridge.AdvertisingIdInfo;

Airbridge.getDeviceInfo().getGoogleAdvertisingIdInfo(new AirbridgeCallback.SimpleCallback<AdvertisingIdInfo>() {
    @Override
    public void onSuccess(AdvertisingIdInfo result) {
            result.getId(); // GAID
        result.getLimitAdTrackingEnabled(); // LAT
    }

    @Override
    public void onFailure(@NotNull 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 -> }
)
1234567891011
import co.ab180.airbridge.Airbridge;

Airbridge.fetchGoogleAdvertisingIdInfo(
    result -> {
        // GAID
        result.getId();
        // LAT
        result.isLimitAdTrackingEnabled();
    },
    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) {
  
    }
})
12345678910111213141516
import co.ab180.airbridge.Airbridge;
import co.ab180.airbridge.AirbridgeCallback;
import co.ab180.airbridge.AdvertisingIdInfo;

Airbridge.getDeviceInfo().getGoogleAdvertisingIdInfo(new AirbridgeCallback.SimpleCallback<AdvertisingIdInfo>() {
    @Override
    public void onSuccess(AdvertisingIdInfo result) {
            result.getId(); // GAID
        result.getLimitAdTrackingEnabled(); // LAT
    }

    @Override
    public void onFailure(@NotNull 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 -> }
)
123456
import co.ab180.airbridge.Airbridge;

Airbridge.fetchGoogleInstallReferrerDetails(
    result -> {  },
    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() {
  
  }
})
123456789101112131415
import co.ab180.airbridge.Airbridge;
import co.ab180.airbridge.AirbridgeCallback;
import co.ab180.airbridge.ReferrerDetails;

Airbridge.getDeviceInfo().getGoogleInstallReferrerDetails(new AirbridgeCallback.SimpleCallback<ReferrerDetails>() {
    @Override
    public void onSuccess(ReferrerDetails details) {
        
    }

    @Override
    public void onFailure(Throwable throwable) {

    }
});

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 -> }
)
1234567891011
import co.ab180.airbridge.Airbridge;

Airbridge.fetchHuaweiAdvertisingIdInfo(
    result -> {
        // GAID
        result.getId();
        // LAT
        result.isLimitAdTrackingEnabled();
    },
    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) {
  
    }
})
12345678910111213141516
import co.ab180.airbridge.Airbridge;
import co.ab180.airbridge.AirbridgeCallback;
import co.ab180.airbridge.AdvertisingIdInfo;

Airbridge.getDeviceInfo().getHuaweiAdvertisingIdInfo(new AirbridgeCallback.SimpleCallback<AdvertisingIdInfo>() {
    @Override
    public void onSuccess(AdvertisingIdInfo result) {
            result.getId(); // OAID
        result.getLimitAdTrackingEnabled(); // LAT
    }

    @Override
    public void onFailure(@NotNull 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 -> }
)
1234567891011
import co.ab180.airbridge.Airbridge;

Airbridge.fetchHuaweiAdvertisingIdInfo(
    result -> {
        // GAID
        result.getId();
        // LAT
        result.isLimitAdTrackingEnabled();
    },
    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) {
  
    }
})
12345678910111213141516
import co.ab180.airbridge.Airbridge;
import co.ab180.airbridge.AirbridgeCallback;
import co.ab180.airbridge.AdvertisingIdInfo;

Airbridge.getDeviceInfo().getHuaweiAdvertisingIdInfo(new AirbridgeCallback.SimpleCallback<AdvertisingIdInfo>() {
    @Override
    public void onSuccess(AdvertisingIdInfo result) {
            result.getId(); // OAID
        result.getLimitAdTrackingEnabled(); // LAT
    }

    @Override
    public void onFailure(@NotNull 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 -> }
)
123456
import co.ab180.airbridge.Airbridge;

Airbridge.fetchHuaweiInstallReferrerDetails(
    result -> {  },
    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() {
  
  }
})
123456789101112131415
import co.ab180.airbridge.Airbridge;
import co.ab180.airbridge.AirbridgeCallback;
import co.ab180.airbridge.ReferrerDetails;

Airbridge.getDeviceInfo().getHuaweiInstallReferrerDetails(new AirbridgeCallback.SimpleCallback<ReferrerDetails>() {
    @Override
    public void onSuccess(ReferrerDetails details) {
        
    }

    @Override
    public void onFailure(Throwable throwable) {

    }
});

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() {
  
  }
})
123456789101112131415
import co.ab180.airbridge.Airbridge;
import co.ab180.airbridge.AirbridgeCallback;
import co.ab180.airbridge.ReferrerDetails;

Airbridge.getDeviceInfo().getOneStoreInstallReferrerDetails(new AirbridgeCallback.SimpleCallback<ReferrerDetails>() {
    @Override
    public void onSuccess(ReferrerDetails details) {
        
    }

    @Override
    public void onFailure(Throwable throwable) {

    }
});

Device Model

Device model name. (example: Pixel 3a)

123
import android.os.Build

Build.MODEL // ex : 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
123
import android.os.Build;

Build.MANUFACTURER; // ex : Google

OS Name

Device OS name. (example: Android)

1
"Android" // use constant string
1
"Android" // use constant string

OS Version

Device OS version. (example: 10)

123
import android.os.Build

Build.VERSION.RELEASE // ex : 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}"
1234
import java.util.*;

// ex : en-US
String.format("%s-%s", Locale.getDefault().getLanguage(), Locale.getDefault().getCountry());

Timezone

Device timezone settings. (example: US/Pacific)

123
import java.util.*

TimeZone.getDefault().id // ex : US/Pacific
123
import java.util.*;

TimeZone.getDefault().getId(); // 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"
}
123456789
import android.content.Context;
import android.content.res.Configuration;

String orientation;
if (context.getResources().getConfiguration().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) { }
}
1234567891011121314151617181920212223242526
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.WindowManager;
import android.content.Context;

WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { 
    DisplayMetrics realDisplayMetrics = new DisplayMetrics();
    windowManager.getDefaultDisplay().getRealMetrics(realDisplayMetrics);
    int width = realDisplayMetrics.widthPixels;
    int height = realDisplayMetrics.heightPixels;
    int dpi = realDisplayMetrics.densityDpi;
} else {
    DisplayMetrics displayMetrics = new DisplayMetrics();
    windowManager.getDefaultDisplay().getMetrics(displayMetrics);
    try {
        int width = (int) Display.class
                .getMethod("getRawWidth")
                .invoke(windowManager.getDefaultDisplay());
        int height = (int) Display.class
                .getMethod("getRawHeight")
                .invoke(windowManager.getDefaultDisplay());
        int dpi = displayMetrics.densityDpi;
   } catch (Exception e) { }
}

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) { }
}
1234567891011121314151617181920212223242526
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.WindowManager;
import android.content.Context;

WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { 
    DisplayMetrics realDisplayMetrics = new DisplayMetrics();
    windowManager.getDefaultDisplay().getRealMetrics(realDisplayMetrics);
    int width = realDisplayMetrics.widthPixels;
    int height = realDisplayMetrics.heightPixels;
    int dpi = realDisplayMetrics.densityDpi;
} else {
    DisplayMetrics displayMetrics = new DisplayMetrics();
    windowManager.getDefaultDisplay().getMetrics(displayMetrics);
    try {
        int width = (int) Display.class
                .getMethod("getRawWidth")
                .invoke(windowManager.getDefaultDisplay());
        int height = (int) Display.class
                .getMethod("getRawHeight")
                .invoke(windowManager.getDefaultDisplay());
        int dpi = displayMetrics.densityDpi;
   } catch (Exception e) { }
}

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) { }
}
1234567891011121314151617181920212223242526
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.WindowManager;
import android.content.Context;

WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { 
    DisplayMetrics realDisplayMetrics = new DisplayMetrics();
    windowManager.getDefaultDisplay().getRealMetrics(realDisplayMetrics);
    int width = realDisplayMetrics.widthPixels;
    int height = realDisplayMetrics.heightPixels;
    int dpi = realDisplayMetrics.densityDpi;
} else {
    DisplayMetrics displayMetrics = new DisplayMetrics();
    windowManager.getDefaultDisplay().getMetrics(displayMetrics);
    try {
        int width = (int) Display.class
                .getMethod("getRawWidth")
                .invoke(windowManager.getDefaultDisplay());
        int height = (int) Display.class
                .getMethod("getRawHeight")
                .invoke(windowManager.getDefaultDisplay());
        int dpi = displayMetrics.densityDpi;
   } catch (Exception e) { }
}

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
1234567891011121314151617181920212223242526
import android.location.Location;
import android.location.LocationManager;

LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
Location gpsLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
Location netLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
Location bestLocation = null;
        
if ((gpsLocation != null) && (netLocation != null)) {
    if (gpsLocation.getAccuracy() < netLocation.getAccuracy()) {
        bestLocation = gpsLocation;
    } else {
        bestLocation = netLocation;
    }
} else if (gpsLocation != null) {
    bestLocation = gpsLocation;
} else {
    bestLocation = netLocation;
}

if (bestLocation != null) {
    double latitude = bestLocation.getLatitude();
    double longitude = bestLocation.getLongitude();
    double altitude = bestLocation.getAltitude();
    float speed = bestLocation.getSpeed();
}

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
1234567891011121314151617181920212223242526
import android.location.Location;
import android.location.LocationManager;

LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
Location gpsLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
Location netLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
Location bestLocation = null;
        
if ((gpsLocation != null) && (netLocation != null)) {
    if (gpsLocation.getAccuracy() < netLocation.getAccuracy()) {
        bestLocation = gpsLocation;
    } else {
        bestLocation = netLocation;
    }
} else if (gpsLocation != null) {
    bestLocation = gpsLocation;
} else {
    bestLocation = netLocation;
}

if (bestLocation != null) {
    double latitude = bestLocation.getLatitude();
    double longitude = bestLocation.getLongitude();
    double altitude = bestLocation.getAltitude();
    float speed = bestLocation.getSpeed();
}

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
1234567891011121314151617181920212223242526
import android.location.Location;
import android.location.LocationManager;

LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
Location gpsLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
Location netLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
Location bestLocation = null;
        
if ((gpsLocation != null) && (netLocation != null)) {
    if (gpsLocation.getAccuracy() < netLocation.getAccuracy()) {
        bestLocation = gpsLocation;
    } else {
        bestLocation = netLocation;
    }
} else if (gpsLocation != null) {
    bestLocation = gpsLocation;
} else {
    bestLocation = netLocation;
}

if (bestLocation != null) {
    double latitude = bestLocation.getLatitude();
    double longitude = bestLocation.getLongitude();
    double altitude = bestLocation.getAltitude();
    float speed = bestLocation.getSpeed();
}

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
1234567891011121314151617181920212223242526
import android.location.Location;
import android.location.LocationManager;

LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
Location gpsLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
Location netLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
Location bestLocation = null;
        
if ((gpsLocation != null) && (netLocation != null)) {
    if (gpsLocation.getAccuracy() < netLocation.getAccuracy()) {
        bestLocation = gpsLocation;
    } else {
        bestLocation = netLocation;
    }
} else if (gpsLocation != null) {
    bestLocation = gpsLocation;
} else {
    bestLocation = netLocation;
}

if (bestLocation != null) {
    double latitude = bestLocation.getLatitude();
    double longitude = bestLocation.getLongitude();
    double altitude = bestLocation.getAltitude();
    float speed = bestLocation.getSpeed();
}

Network Carrier

Device network carrier information.

1234
import android.telephony.TelephonyManager

val telephonyManager = context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
val carrier = telephonyManager.networkOperatorName
1234
import android.telephony.TelephonyManager;

TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
String carrier = telephonyManager.getNetworkOperatorName();

Bluetooth Status

Device bluetooth status. (example: true)

1234
import android.bluetooth.BluetoothAdapter

val bluetoothAdapter = BluetoothAdapter.getDefaultAdapter()
val enabled = bluetoothAdapter.isEnabled
1234
import android.bluetooth.BluetoothAdapter;

BluetoothAdapter bluetoothAdapter = (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)
}
123456789101112131415
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.content.Context;

ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    Network activeNetwork = connectivityManager.getActiveNetwork();
    NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(activeNetwork);
    boolean cellularEnabled = capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR);
} else {
    NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
    boolean 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)
}
123456789101112131415
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.content.Context;

ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    Network activeNetwork = connectivityManager.getActiveNetwork();
    NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(activeNetwork);
    boolean wifiEnabled = capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI);
} else {
    NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
    boolean 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) {

}
1234567891011
import android.content.pm.PackageManager;
import android.content.pm.PackageInfo;
import android.content.Context;

String packageName = "";
try {
    PackageInfo packageInfo = context.getPackageManager.getPackageInfo(context.packageName, 0)
    packageName = packageInfo.packageName;
} catch (PackageManager.NameNotFoundException e) {

}

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) {

}
1234567891011
import android.content.pm.PackageManager;
import android.content.pm.PackageInfo;
import android.content.Context;

String packageName = "";
try {
    PackageInfo packageInfo = context.getPackageManager.getPackageInfo(context.packageName, 0);
    packageName = packageInfo.versionName;
} catch (PackageManager.NameNotFoundException e) {

}

Event Timestamp

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

1
System.currentTimeMillis()
1
System.currentTimeMillis();

Was this helpful?

Any questions or suggestions?