1.定位的修改

This commit is contained in:
2025-09-26 14:22:48 +08:00
committed by 梁小江
parent 393c59dd1b
commit 77a1d910f0
8 changed files with 326 additions and 196 deletions

View File

@@ -60,5 +60,7 @@ dependencies {
implementation (libs.arouter.api.v150)
//annotationProcessor
annotationProcessor libs.arouter.compiler
implementation libs.permissionx
}
apply plugin: 'com.alibaba.arouter' //

View File

@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 前台定位权限 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 后台定位权限Android 10+ -->
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<application
>

View File

@@ -18,6 +18,7 @@ import android.view.KeyEvent;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -36,6 +37,12 @@ import com.example.modulenews.fragment.NewsFragment;
import com.example.moduleroom.activity.RoomActivity;
import com.example.modulevocal.fragment.VocalRangeFragment;
import com.example.modulevoice.fragment.VoiceFragment;
import com.permissionx.guolindev.PermissionX;
import com.permissionx.guolindev.callback.ExplainReasonCallback;
import com.permissionx.guolindev.callback.ForwardToSettingsCallback;
import com.permissionx.guolindev.callback.RequestCallback;
import com.permissionx.guolindev.request.ExplainScope;
import com.permissionx.guolindev.request.ForwardScope;
import com.xscm.modulemain.R;
import com.xscm.modulemain.contacts.HomeContacts;
import com.xscm.modulemain.databinding.ActivityMainBinding;
@@ -553,8 +560,49 @@ public class MainActivity extends BaseMvpActivity<HomePresenter, ActivityMainBin
MvpPre.getMyInfo(SpUtil.getUserId() + "");//获取首充是否需要展示
// mBinding.ivShouchl.setVisibility(View.VISIBLE);
LogUtils.e("@@@1","开始定位", "描述:", "");
initLocation();
// 请求GPS相关权限精确位置+可选的后台权限)
requestGpsPermissions();
}
private void requestGpsPermissions() {
PermissionX.init(this)
// 请求精确位置权限包含GPS定位能力
.permissions(
Manifest.permission.ACCESS_FINE_LOCATION,
// 如需后台使用GPS添加此权限Android 10+
Manifest.permission.ACCESS_BACKGROUND_LOCATION
).explainReasonBeforeRequest()
.onExplainRequestReason(new ExplainReasonCallback() {
@Override
public void onExplainReason(ExplainScope scope, List<String> deniedList) {
String message = "需要GPS权限以获取您的精确位置用于导航/定位功能";
// 若包含后台权限,补充说明
scope.showRequestReasonDialog(deniedList, message, "确定", "取消");
}
})
// 权限被永久拒绝时,引导至设置页面
.onForwardToSettings(new ForwardToSettingsCallback() {
@Override
public void onForwardToSettings(ForwardScope scope, List<String> deniedList) {
scope.showForwardToSettingsDialog(deniedList, "GPS权限被拒绝无法使用定位功能请去设置开启", "去设置", "取消");
}
})
// 权限请求结果回调
.request(new RequestCallback() {
@Override
public void onResult(boolean allGranted, List<String> grantedList, List<String> deniedList) {
if (allGranted) {
// Toast.makeText(MainActivity.this, "GPS权限已授予可开始定位", Toast.LENGTH_SHORT).show();
initLocation(); // 启动GPS定位逻辑
} else {
Toast.makeText(MainActivity.this, "GPS权限被拒绝无法使用定位功能", Toast.LENGTH_SHORT).show();
}
}
});
}
@Subscribe(threadMode = ThreadMode.MAIN)
@@ -629,18 +677,19 @@ public class MainActivity extends BaseMvpActivity<HomePresenter, ActivityMainBin
private String city1;
@Override
public void onLocationReceived(double latitude, double longitude, String city) {
LogUtils.e("当前位置:" + city);
city1 = city;
EventBus.getDefault().post(city1);
LogUtils.e("@@@1","开始定位", "描述:","当前位置"+city);
LogUtils.e("@@@1", "开始定位", "描述:", "当前位置" + city);
}
@Override
public void onFailed(String errorMessage) {
LogUtils.e("@@@1","开始定位", "描述:","失败");
LogUtils.e("@@@1", "开始定位", "描述:", "失败");
}
@@ -874,18 +923,9 @@ public class MainActivity extends BaseMvpActivity<HomePresenter, ActivityMainBin
private SystemLocationProvider locationProvider;
private void initLocation() {
if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// 在Activity或Fragment中调用
// 请求定位权限
ActivityCompat.requestPermissions(
(Activity) this,
new String[]{
android.Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION
},
1001 // 自定义常量,比如 1001
);
}
locationProvider = new SystemLocationProvider();
// 请求一次性的位置信息