Skip to content

Instantly share code, notes, and snippets.

@yusufceylan
yusufceylan / HuaweiLocationManager.kt
Created September 7, 2020 12:36
Huawei Location Manager Wrapper
/**
* Wrapper class for handling Location related methods
*/
class HuaweiLocationManager constructor(private val context : Context) {
//region vars
private val mFusedLocationProviderClient: FusedLocationProviderClient by lazy {
LocationServices.getFusedLocationProviderClient(context)
}
@yusufceylan
yusufceylan / CheckLocationSettings.kt
Created September 7, 2020 12:02
Huawei Location Kit - Check Device Location Settings
fun checkLocationSettingsAndShowPopup(
activity: Activity,
onSuccess: ((locationSettingsResponse: LocationSettingsResponse?) -> Unit)? = null
) {
val builder = LocationSettingsRequest.Builder()
val locationRequest = LocationRequest()
builder.addLocationRequest(locationRequest)
val locationSettingsRequest = builder.build()
@yusufceylan
yusufceylan / RemoveLocationUpdates.kt
Created September 7, 2020 11:36
Huawei Location Kit - Remove Location Updates
fun unregisterLocationUpdates() {
mLocationCallback?.let { locationCallback ->
mFusedLocationProviderClient.removeLocationUpdates(locationCallback)
.addOnSuccessListener {
// Requesting location updates is stopped successfully.
LogUtils.d("LocationKit -> Stop Listening Location Successfully")
}
.addOnFailureListener {
// Failed to stop requesting location updates.
@yusufceylan
yusufceylan / RequestLocationUpdates.kt
Created September 7, 2020 11:16
Huawei Location Kit - Request Location Updates
fun registerLocationUpdates(
interval: Long = 10000,
onSuccess: ((location: Location?) -> Unit)? = null,
onFail: ((locationAvailability: LocationAvailability?) -> Unit)? = null
) {
val mLocationRequest = LocationRequest()
// Set the location update interval (in milliseconds).
mLocationRequest.interval = interval
// Set the weight.
mLocationRequest.priority = LocationRequest.PRIORITY_HIGH_ACCURACY
@yusufceylan
yusufceylan / LocationCallback.kt
Created September 7, 2020 10:57
Huawei Location Kit - Location Callback
private fun createLocationCallback(
onSuccess: ((location: Location?) -> Unit)? = null,
onFail: ((locationAvailability: LocationAvailability?) -> Unit)? = null
): LocationCallback {
return object : LocationCallback() {
override fun onLocationResult(locationResult: LocationResult) {
val currentLatLng = LatLng(
locationResult.lastLocation.latitude,
locationResult.lastLocation.longitude
)
@yusufceylan
yusufceylan / LastKnownLocation.kt
Created September 7, 2020 10:39
Huawei Location Kit - Last Known Location
fun getLastKnownLocation(
onSuccess: ((lastKnownLocation: Location?) -> Unit)? = null,
onFail: ((exception: Exception) -> Unit)? = null
) {
val task: Task<Location> = mFusedLocationProviderClient.lastLocation
task.addOnSuccessListener { lastKnowLocation ->
if (lastKnowLocation == null) {
LogUtils.d("LocationKit -> Last Known Location is empty")
} else {
@yusufceylan
yusufceylan / LocationAvailability.kt
Created September 7, 2020 08:47
Huawei Location Kit - Get Location Availability
fun getLocationAvailability(
onSuccess: ((locationAvailability: LocationAvailability?) -> Unit)? = null,
onFail: ((exception: Exception) -> Unit)? = null
) {
val locationAvailabilityTask: Task<LocationAvailability> = mFusedLocationProviderClient.locationAvailability
locationAvailabilityTask.addOnSuccessListener { locationAvailability ->
if (locationAvailability != null) {
LogUtils.d("Location Kit -> getLocationAvailability onSuccess:${locationAvailability.isLocationAvailable}")
}