From d1a9e3312387b6c47e6186af506787a8a66369d1 Mon Sep 17 00:00:00 2001 From: lmw <125975490@qq.com> Date: 星期六, 09 十一月 2024 18:40:36 +0800 Subject: [PATCH] fix --- app/src/main/java/com/sinata/xqmuse/ui/discovery/DiscoveryFragment.kt | 113 ++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 76 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/com/sinata/xqmuse/ui/discovery/DiscoveryFragment.kt b/app/src/main/java/com/sinata/xqmuse/ui/discovery/DiscoveryFragment.kt index a3a6970..cd8d950 100644 --- a/app/src/main/java/com/sinata/xqmuse/ui/discovery/DiscoveryFragment.kt +++ b/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() { @@ -28,10 +34,9 @@ private var page = 1 var search: String? = null //搜索 - override fun onFirstVisibleToUser() { EventBus.getDefault().register(this) - rv_list.layoutManager = GridLayoutManager(requireContext(),2) + rv_list.layoutManager = GridLayoutManager(requireContext(), 2) rv_list.adapter = adapter adapter.setOnItemClickListener { view, position -> @@ -56,48 +61,82 @@ 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{ - override fun onOk() { - val subscribe = - rxPermissions.request(Manifest.permission.ACCESS_FINE_LOCATION).subscribe { - if (it){ - //todo 高德定位 - refreshLayout.autoRefresh() - }else{ - SPUtils.instance().put(Const.User.LOCATION_REFUSED,true).apply() - refreshLayout.autoRefresh() - } - } - compositeDisposable.add(subscribe) - } + TipDialog.show( + childFragmentManager, + "为了展示您附近的疗愈馆,我们需要获取该设备的位置权限", + object : TipDialog.OnClickCallback { + override fun onOk() { + val subscribe = + rxPermissions.request(Manifest.permission.ACCESS_FINE_LOCATION) + .subscribe { + if (it) { + requestLocation() + } else { + SPUtils.instance().put(Const.User.LOCATION_REFUSED, true) + .apply() + refreshLayout.autoRefresh() + } + } + compositeDisposable.add(subscribe) + } - override fun onCancel() { - SPUtils.instance().put(Const.User.LOCATION_REFUSED,true).apply() - refreshLayout.autoRefresh() - } - },"去授权","取消") + override fun onCancel() { + 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-> - if (page == 1) - list.clear() - list.addAll(data?.list?: arrayListOf()) - adapter.notifyDataSetChanged() - if (list.isEmpty()) - refreshLayout.finishRefreshWithNoMoreData() - else if (data?.list?.isNullOrEmpty() == true) - refreshLayout.finishLoadMoreWithNoMoreData() - else if (page == 1) - refreshLayout.finishRefresh() - else - refreshLayout.finishLoadMore() - }){_,_-> + HttpManager.getMeditationPage(page, search, JkApplication.lat, JkApplication.lon).requestByF( + this, + success = { _, data -> + if (page == 1) + list.clear() + list.addAll(data?.list ?: arrayListOf()) + adapter.notifyDataSetChanged() + if (list.isEmpty()) + refreshLayout.finishRefreshWithNoMoreData() + else if (data?.list?.isNullOrEmpty() == true) + refreshLayout.finishLoadMoreWithNoMoreData() + else if (page == 1) + refreshLayout.finishRefresh() + else + refreshLayout.finishLoadMore() + }){ _, _-> if (page == 1) refreshLayout.finishRefresh(false) else @@ -106,7 +145,7 @@ } @Subscribe - fun refresh(e:EmptyEvent){ + fun refresh(e: EmptyEvent){ if (e.code == Const.EventCode.REFRESH_DISCOVERY) refreshLayout.autoRefresh() } -- Gitblit v1.7.1