首先我们需要设置权限

 <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) // 设置位置
    }

这样就完成了