Skip to content

Instantly share code, notes, and snippets.

@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}")
}
@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 / 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 / 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 / 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 / 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 / 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 / LocationPermissions.kt
Created September 8, 2020 10:32
Location Permissions
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.P) {
Log.i(TAG, "sdk < 28 Q");
if (ActivityCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
|| ActivityCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
String[] strings =
{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION};
ActivityCompat.requestPermissions(this, strings, 1);
}
@yusufceylan
yusufceylan / ActivityResult.kt
Created September 8, 2020 10:34
ActivityResult
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == REQUEST_CHECK_SETTINGS) {
when (resultCode) {
Activity.RESULT_OK -> {
LogUtils.d("User confirm to access location")
}
Activity.RESULT_CANCELED -> {
LogUtils.d("User denied to access location")
@yusufceylan
yusufceylan / OpenCameraAndSavePhoto.kt
Last active February 6, 2023 03:18
Take photo from camera and save it to gallery
// Take photo from camera and save it to public gallery
// Before Q and After Q implementations
// Answer riginally taken from this SO answer
// https://stackoverflow.com/a/59482148/5695091
private val REQUEST_TAKE_PHOTO = 101
private val REQUEST_PICK_PHOTO = 102
private var photoURI : Uri? = null