首先我们需要设置权限
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
然后我们需要在开发者设置里启用模拟位置应用并设置为我们的app
接着设置位置
val locationManager = getSystemService(LocationManager::class.java)
val providers = arrayOf(
LocationManager.GPS_PROVIDER,
LocationManager.NETWORK_PROVIDER,
)
providers.forEach { providerName ->
locationManager.addTestProvider(
providerName,
false,
false,
false,
false,
true,
true,
true,
Criteria.POWER_LOW,
Criteria.ACCURACY_FINE
)
locationManager.setTestProviderEnabled(providerName, true)
providers.forEach { providerName ->
val mockLocation = Location(providerName).apply {
// 注意:高德地图给的顺序是(纬度,经度),但保存时要分清
val latitude = "经度"
val longitude = "纬度"
val wgs84Pos = CoordinateUtils.gcj02ToWGS84(longitude, latitude)
this.latitude = wgs84Pos[1] // 纬度
this.longitude = wgs84Pos[0] // 经度
altitude = 0.0
time = System.currentTimeMillis()
elapsedRealtimeNanos = SystemClock.elapsedRealtimeNanos()
speed = 0f
bearing = 0f
accuracy = 5f
}
locationManager.setTestProviderLocation(providerName, mockLocation) // 设置位置
}
这样就完成了