Skip to content

Commit

Permalink
Updated demo
Browse files Browse the repository at this point in the history
  • Loading branch information
li2 authored and weiyi.li committed Apr 14, 2020
1 parent d08bff5 commit 0559c0f
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 36 deletions.
2 changes: 1 addition & 1 deletion .idea/.name

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

44 changes: 36 additions & 8 deletions app/src/main/java/me/li2/android/placesample/FrameworkExt.kt
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ import com.jakewharton.rxbinding3.widget.textChanges
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import me.li2.android.common.framework.openAppSettings
import me.li2.android.location.RequestLocationResult
import me.li2.android.location.ifLocationAllowed
import me.li2.android.location.openSystemLocationSetting
import java.util.concurrent.TimeUnit

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


@BindingAdapter("android:src")
fun setImageUrl(view: ImageView, src: String) {
Glide.with(view.context)
Expand All @@ -55,11 +58,36 @@ fun setImageUrl(view: ImageView, src: String) {
/**
* Location permission request prompt.
*/
fun locationPermissionPrompt(context: Context): AlertDialog {
private fun locationPermissionPrompt(context: Context): AlertDialog {
return MaterialAlertDialogBuilder(context)
.setTitle("\"Demo App\" Would Like to Access the Location")
.setMessage("This will let you search place, get your current location")
.setPositiveButton("Yep!", null)
.setNegativeButton("Nope!", null)
.create() // MUST NOT show()
}
.setTitle("\"Demo App\" Would Like to Access the Location")
.setMessage("This will let you search place, get your current location")
.setPositiveButton("Yep!", null)
.setNegativeButton("Nope!", null)
.create() // MUST NOT show()
}

fun Fragment.doWithLocationPermission(action: () -> Unit) {
activity?.ifLocationAllowed(locationPermissionPrompt(requireContext()), onError = {
toast(it.message.toString())
}, onResult = { result: RequestLocationResult ->
when (result) {
RequestLocationResult.ALLOWED -> {
// location permission granted and service is on,
// it's good time to get last know location
action()
}
RequestLocationResult.PERMISSION_DENIED -> {
toast("permission denied ${System.currentTimeMillis()}")
}
RequestLocationResult.PERMISSION_DENIED_NOT_ASK_AGAIN -> {
// location permission denied, go to App settings
activity?.openAppSettings(requireContext().packageName)
}
RequestLocationResult.SERVICE_OFF -> {
// location service is turned off, go to system settings
activity?.openSystemLocationSetting { isServiceOn -> }
}
}
})
}
29 changes: 3 additions & 26 deletions app/src/main/java/me/li2/android/placesample/MainFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,7 @@ import io.reactivex.disposables.CompositeDisposable
import io.reactivex.rxkotlin.plusAssign
import io.reactivex.rxkotlin.subscribeBy
import kotlinx.android.synthetic.main.fragment_main.*
import me.li2.android.common.framework.openAppSettings
import me.li2.android.location.LastKnownLocationUtils.requestLastKnownLocation
import me.li2.android.location.RequestLocationResult
import me.li2.android.location.ifLocationAllowed
import me.li2.android.location.openSystemLocationSetting
import me.li2.android.maps.MapType
import me.li2.android.maps.MapsStaticUtil.generateMapStaticImageUrl
import me.li2.android.maps.MarkerInfo
Expand Down Expand Up @@ -45,28 +41,9 @@ class MainFragment : Fragment() {
placeAutoComplete = PlaceAutoComplete(view.context, apiKey)

compositeDisposable += btn_get_last_known_location.clicks().throttleFirstShort().subscribe {
activity?.ifLocationAllowed(locationPermissionPrompt(requireContext()), onError = {
toast(it.message.toString())
}, onResult = { result: RequestLocationResult ->
when (result) {
RequestLocationResult.ALLOWED -> {
// location permission granted and service is on,
// it's good time to get last know location
requestLastLocation()
}
RequestLocationResult.PERMISSION_DENIED -> {
toast("permission denied ${System.currentTimeMillis()}")
}
RequestLocationResult.PERMISSION_DENIED_NOT_ASK_AGAIN -> {
// location permission denied, go to App settings
activity?.openAppSettings(view.context.packageName)
}
RequestLocationResult.SERVICE_OFF -> {
// location service is turned off, go to system settings
activity?.openSystemLocationSetting { isServiceOn -> }
}
}
})
doWithLocationPermission {
requestLastLocation()
}
}

compositeDisposable += btn_launch_autocomplete_activity.clicks().subscribe {
Expand Down
2 changes: 1 addition & 1 deletion settings.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
rootProject.name='Place&Location Library'
rootProject.name='Geography Library'
include ':app'
include ':location'
include ':maps'
Expand Down

0 comments on commit 0559c0f

Please sign in to comment.