Kotlin实现实时定位时无法访问LocationRequest私有构造函数问题
错误原因
- 导包错误:当前导入的系统原生
android.location.LocationRequest类构造方法为私有,不允许直接实例化。 - 实例化方式错误:Google Play Location服务对应的
LocationRequest类在较新版本中也废弃了公开构造方法,需通过静态方法创建实例。
修复步骤
- 第一步:替换导包
删除代码中import android.location.LocationRequest,替换为:
import com.google.android.gms.location.LocationRequest
- 第二步:修改LocationRequest实例化逻辑
将iniciarLocationRequest()方法的代码修改为如下形式,可根据需求调整定位参数:
private fun iniciarLocationRequest() { locationRequest = LocationRequest.create().apply { // 普通定位更新间隔,单位毫秒 interval = 10000 // 其他应用触发更新时,本应用可接收的最短间隔 fastestInterval = 5000 // 定位优先级,PRIORITY_HIGH_ACCURACY为高精度模式,优先使用GPS priority = LocationRequest.PRIORITY_HIGH_ACCURACY } }
- 可选补充:确保依赖引入
检查app模块build.gradle的dependencies配置中已添加定位服务依赖:
implementation 'com.google.android.gms:play-services-location:21.0.1'
- 可选优化:修改Toast展示逻辑
你当前onLocationResult中的Toast固定显示"a",可修改为展示实际坐标:
Toast.makeText(applicationContext, "${ubicacion.latitude} - ${ubicacion.longitude}", Toast.LENGTH_SHORT).show()
内容的提问来源于stack exchange,提问作者Siniestre
相关产品推荐
相关产品推荐

