Skip to content

Commit 0559c0f

Browse files
li2weiyi.li
authored and
weiyi.li
committed
Updated demo
1 parent d08bff5 commit 0559c0f

File tree

4 files changed

+41
-36
lines changed

4 files changed

+41
-36
lines changed

.idea/.name

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/main/java/me/li2/android/placesample/FrameworkExt.kt

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ import com.jakewharton.rxbinding3.widget.textChanges
1414
import io.reactivex.Observable
1515
import io.reactivex.android.schedulers.AndroidSchedulers
1616
import io.reactivex.schedulers.Schedulers
17+
import me.li2.android.common.framework.openAppSettings
18+
import me.li2.android.location.RequestLocationResult
19+
import me.li2.android.location.ifLocationAllowed
20+
import me.li2.android.location.openSystemLocationSetting
1721
import java.util.concurrent.TimeUnit
1822

1923
fun <T> Observable<T>.forUi(): Observable<T> =
@@ -44,7 +48,6 @@ fun setViewVisibility(view: View, value: Boolean?) {
4448
view.visibility = if (value == true) View.VISIBLE else View.GONE
4549
}
4650

47-
4851
@BindingAdapter("android:src")
4952
fun setImageUrl(view: ImageView, src: String) {
5053
Glide.with(view.context)
@@ -55,11 +58,36 @@ fun setImageUrl(view: ImageView, src: String) {
5558
/**
5659
* Location permission request prompt.
5760
*/
58-
fun locationPermissionPrompt(context: Context): AlertDialog {
61+
private fun locationPermissionPrompt(context: Context): AlertDialog {
5962
return MaterialAlertDialogBuilder(context)
60-
.setTitle("\"Demo App\" Would Like to Access the Location")
61-
.setMessage("This will let you search place, get your current location")
62-
.setPositiveButton("Yep!", null)
63-
.setNegativeButton("Nope!", null)
64-
.create() // MUST NOT show()
65-
}
63+
.setTitle("\"Demo App\" Would Like to Access the Location")
64+
.setMessage("This will let you search place, get your current location")
65+
.setPositiveButton("Yep!", null)
66+
.setNegativeButton("Nope!", null)
67+
.create() // MUST NOT show()
68+
}
69+
70+
fun Fragment.doWithLocationPermission(action: () -> Unit) {
71+
activity?.ifLocationAllowed(locationPermissionPrompt(requireContext()), onError = {
72+
toast(it.message.toString())
73+
}, onResult = { result: RequestLocationResult ->
74+
when (result) {
75+
RequestLocationResult.ALLOWED -> {
76+
// location permission granted and service is on,
77+
// it's good time to get last know location
78+
action()
79+
}
80+
RequestLocationResult.PERMISSION_DENIED -> {
81+
toast("permission denied ${System.currentTimeMillis()}")
82+
}
83+
RequestLocationResult.PERMISSION_DENIED_NOT_ASK_AGAIN -> {
84+
// location permission denied, go to App settings
85+
activity?.openAppSettings(requireContext().packageName)
86+
}
87+
RequestLocationResult.SERVICE_OFF -> {
88+
// location service is turned off, go to system settings
89+
activity?.openSystemLocationSetting { isServiceOn -> }
90+
}
91+
}
92+
})
93+
}

app/src/main/java/me/li2/android/placesample/MainFragment.kt

Lines changed: 3 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,7 @@ import io.reactivex.disposables.CompositeDisposable
1212
import io.reactivex.rxkotlin.plusAssign
1313
import io.reactivex.rxkotlin.subscribeBy
1414
import kotlinx.android.synthetic.main.fragment_main.*
15-
import me.li2.android.common.framework.openAppSettings
1615
import me.li2.android.location.LastKnownLocationUtils.requestLastKnownLocation
17-
import me.li2.android.location.RequestLocationResult
18-
import me.li2.android.location.ifLocationAllowed
19-
import me.li2.android.location.openSystemLocationSetting
2016
import me.li2.android.maps.MapType
2117
import me.li2.android.maps.MapsStaticUtil.generateMapStaticImageUrl
2218
import me.li2.android.maps.MarkerInfo
@@ -45,28 +41,9 @@ class MainFragment : Fragment() {
4541
placeAutoComplete = PlaceAutoComplete(view.context, apiKey)
4642

4743
compositeDisposable += btn_get_last_known_location.clicks().throttleFirstShort().subscribe {
48-
activity?.ifLocationAllowed(locationPermissionPrompt(requireContext()), onError = {
49-
toast(it.message.toString())
50-
}, onResult = { result: RequestLocationResult ->
51-
when (result) {
52-
RequestLocationResult.ALLOWED -> {
53-
// location permission granted and service is on,
54-
// it's good time to get last know location
55-
requestLastLocation()
56-
}
57-
RequestLocationResult.PERMISSION_DENIED -> {
58-
toast("permission denied ${System.currentTimeMillis()}")
59-
}
60-
RequestLocationResult.PERMISSION_DENIED_NOT_ASK_AGAIN -> {
61-
// location permission denied, go to App settings
62-
activity?.openAppSettings(view.context.packageName)
63-
}
64-
RequestLocationResult.SERVICE_OFF -> {
65-
// location service is turned off, go to system settings
66-
activity?.openSystemLocationSetting { isServiceOn -> }
67-
}
68-
}
69-
})
44+
doWithLocationPermission {
45+
requestLastLocation()
46+
}
7047
}
7148

7249
compositeDisposable += btn_launch_autocomplete_activity.clicks().subscribe {

settings.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
rootProject.name='Place&Location Library'
1+
rootProject.name='Geography Library'
22
include ':app'
33
include ':location'
44
include ':maps'

0 commit comments

Comments
 (0)