fix
lmw
2024-11-09 d1a9e3312387b6c47e6186af506787a8a66369d1
app/src/main/java/com/sinata/xqmuse/ui/discovery/DiscoveryFragment.kt
@@ -1,9 +1,14 @@
package com.sinata.xqmuse.ui.discovery
import android.Manifest
import android.util.Log
import androidx.recyclerview.widget.GridLayoutManager
import cn.sinata.xldutils.fragment.BaseFragment
import cn.sinata.xldutils.utils.SPUtils
import com.amap.api.location.AMapLocation
import com.amap.api.location.AMapLocationClient
import com.amap.api.location.AMapLocationClientOption
import com.amap.api.location.AMapLocationListener
import com.sinata.xqmuse.JkApplication
import com.sinata.xqmuse.R
import com.sinata.xqmuse.dialog.TipDialog
@@ -18,6 +23,7 @@
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.jetbrains.anko.support.v4.startActivity
import org.jetbrains.anko.support.v4.toast
class DiscoveryFragment : BaseFragment() {
@@ -27,7 +33,6 @@
    private val adapter = PlaceAdapter(list)
    private var page = 1
    var search: String? = null //搜索
    override fun onFirstVisibleToUser() {
        EventBus.getDefault().register(this)
@@ -56,18 +61,24 @@
    private fun checkLocation() {
        val rxPermissions = RxPermissions(requireActivity())
        if (rxPermissions.isGranted(Manifest.permission.ACCESS_FINE_LOCATION)||SPUtils.instance().getBoolean(Const.User.LOCATION_REFUSED)){
        if (rxPermissions.isGranted(Manifest.permission.ACCESS_FINE_LOCATION)){
            requestLocation()
        }else if (SPUtils.instance().getBoolean(Const.User.LOCATION_REFUSED)){
            refreshLayout.autoRefresh()
        }else{
            TipDialog.show(childFragmentManager,"为了展示您附近的疗愈馆,我们需要获取该设备的位置权限",object :TipDialog.OnClickCallback{
            TipDialog.show(
                childFragmentManager,
                "为了展示您附近的疗愈馆,我们需要获取该设备的位置权限",
                object : TipDialog.OnClickCallback {
                override fun onOk() {
                    val subscribe =
                        rxPermissions.request(Manifest.permission.ACCESS_FINE_LOCATION).subscribe {
                            rxPermissions.request(Manifest.permission.ACCESS_FINE_LOCATION)
                                .subscribe {
                            if (it){
                                //todo 高德定位
                                refreshLayout.autoRefresh()
                                        requestLocation()
                            }else{
                                SPUtils.instance().put(Const.User.LOCATION_REFUSED,true).apply()
                                        SPUtils.instance().put(Const.User.LOCATION_REFUSED, true)
                                            .apply()
                                refreshLayout.autoRefresh()
                            }
                        }
@@ -78,13 +89,41 @@
                    SPUtils.instance().put(Const.User.LOCATION_REFUSED,true).apply()
                    refreshLayout.autoRefresh()
                }
            },"去授权","取消")
                },
                "去授权",
                "取消"
            )
        }
    }
    private fun requestLocation(){
        toast("定位中...")
        var locationClient:AMapLocationClient?
        try {
            locationClient = AMapLocationClient(requireActivity())
        } catch (e: Exception) {
            locationClient = null
        }
        locationClient?.setLocationListener {
            JkApplication.lat = it.latitude
            JkApplication.lon = it.longitude
            refreshLayout.autoRefresh()
        }
        val option = AMapLocationClientOption()
        option.locationPurpose = AMapLocationClientOption.AMapLocationPurpose.SignIn
        option.isOnceLocation = true
        locationClient?.setLocationOption(option)
        //设置场景模式后最好调用一次stop,再调用start以保证场景模式生效
        locationClient?.stopLocation()
        locationClient?.startLocation()
    }
    private fun getData(){
        HttpManager.getMeditationPage(page,search,JkApplication.lat, JkApplication.lon).requestByF(this,success = { _, data->
        HttpManager.getMeditationPage(page, search, JkApplication.lat, JkApplication.lon).requestByF(
            this,
            success = { _, data ->
            if (page == 1)
                list.clear()
            list.addAll(data?.list?: arrayListOf())