데이터 패칭 - 안드로이드

에어브릿지 이벤트 구성에 필요한 데이터를 안드로이드에서 수집합니다.

데이터 패칭하기

아래 내용을 참고해 주세요.

Airbridge Device ID

Airbridge의 기기 식별자 입니다. (예시: 82a16ec9-a273-48b6-9bb2-017eab641109)

안드로이드 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 -> {

    }
);

안드로이드 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

Airbridge에서 기기별로 인스톨시에 부여하는 랜덤한 UUID 입니다. (예시: 82a16ec9-a273-48b6-9bb2-017eab641109)

안드로이드 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 -> {

    }
);

안드로이드 SDK (Previous)

12345
import co.ab180.airbridge.Airbridge

Airbridge.fetchAirbridgeGeneratedUUID { uuid ->

}
12345
import co.ab180.airbridge.Airbridge;

Airbridge.fetchAirbridgeGeneratedUUID((uuid) -> {

});

App Set ID

퍼블리셔가 특정 사용자가 어떤 앱을 설치했는지 파악하는 데 사용할 수 있는 고유 ID입니다. (예시: 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 입니다. (예시: 82a16ec9-a273-48b6-9bb2-017eab641109)

안드로이드 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 -> {   }
);

안드로이드 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

기기의 Google Limit AD Tracking 정보 입니다. (예시: true)

안드로이드 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 -> {   }
);

안드로이드 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

Google Play Service에서 전달되어지는 Install Referrer 정보입니다.

안드로이드 SDK (v4)

123456
import co.ab180.airbridge.Airbridge

Airbridge.fetchGoogleInstallReferrerDetails(
    onSuccess = { result -> },
    onFailure = { throwable -> }
)
123456
import co.ab180.airbridge.Airbridge;

Airbridge.fetchGoogleInstallReferrerDetails(
    result -> {  },
    throwable -> {  }
);

안드로이드 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 입니다. (예시: 82a16ec9-a273-48b6-9bb2-017eab641109)

안드로이드 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 -> {   }
);

안드로이드 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

기기의 Huawei Limit AD Tracking 정보 입니다. (예시: true)

안드로이드 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 -> {   }
);

안드로이드 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

Huawei Mobile Service(HMS Core)에서 전달되어지는 Install Referrer 정보입니다.

안드로이드 SDK (v4)

123456
import co.ab180.airbridge.Airbridge

Airbridge.fetchHuaweiInstallReferrerDetails(
    onSuccess = { result -> },
    onFailure = { throwable -> }
)
123456
import co.ab180.airbridge.Airbridge;

Airbridge.fetchHuaweiInstallReferrerDetails(
    result -> {  },
    throwable -> {  }
);

안드로이드 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

One Store에서 전달되어지는 Install Referrer 정보입니다.

안드로이드 SDK (v4)

v4 에서는 One Store Install Referrer 를 지원하지 않습니다.

안드로이드 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

기기의 모델 이름 입니다. (예시: Pixel 3a)

123
import android.os.Build

Build.MODEL // ex : Pixel 3a
123
import android.os.Build;

Build.MODEL; // ex : Pixel 3a

Device Manufacturer

기기의 제조사 정보 입니다. (예시: Google)

123
import android.os.Build

Build.MANUFACTURER // ex : Google
123
import android.os.Build;

Build.MANUFACTURER; // ex : Google

OS Name

기기의 OS 이름입니다. (예시: Android)

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

OS Version

기기의 OS 버전입니다. (예시: 10)

123
import android.os.Build

Build.VERSION.RELEASE // ex : 10
123
import android.os.Build;

Build.VERSION.RELEASE; // ex : 10

Locale

기기의 Locale 설정 값 입니다. (예시: 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

기기의 Timezone 설정 값 입니다. (예시: US/Pacific)

123
import java.util.*

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

TimeZone.getDefault().getId(); // ex : US/Pacific

Orientation

기기의 화면 방향 값 입니다. "portrait" 혹은 "landscape" 둘 중 하나의 값 입니다. (예시: 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

기기의 실제 화면 Density 값 입니다. (예시: 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

기기의 실제 화면 너비 값 입니다. (예시: 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

기기의 실제 화면 높이 값 입니다. (예시: 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

현재 기기의 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

현재 기기의 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

현재 기기의 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

현재 기기의 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

해당 기기의 네트워크 사업자 정보 입니다.

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

해당 기기의 블루투스 사용 여부 입니다. (예시: 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

해당 기기의 모바일 데이터 사용 여부 입니다. (예시: 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

해당 기기의 Wifi 데이터 사용 여부 입니다. (예시: 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

해당 어플리케이션의 패키지 명 입니다. (예시: 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

해당 어플리케이션의 버전 이름 입니다. (예시: 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

해당 이벤트의 발송 시간(Milliseconds) 입니다. (예시: 1581043739682)

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