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