显然,有两种方法可以在Android中设置模拟位置(目前正在使用Android 11 )
使用FusedLocationProviderClient的一种方法:
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
mFusedLocationClient.setMockMode(true);
mFusedLocationClient.setMockLocation(createLocation(LAT, LNG, ACCURACY));
另一个使用LocationManager的方法:
LocationManager lm = (LocationManager) ctx.getSystemService(
Context.LOCATION_SERVICE);
lm.addTestProvider(providerName, false, false, false, false, false,
true, true, 1, 1);
lm.setTestProviderEnabled(providerName, true);
Location mockLocation = createLocation(LAT, LNG, ACCURACY);
lm.setTestProviderLocation(providerName, mockLocation);
想知道什么是正确的方法。对我来说,第二个工作很好,第一个没有(仍在调查中),但我想知道什么是正确的方法?也想知道为什么有两种截然不同的方式?
发布于 2021-10-13 17:04:55
区别在于LocationManager和LocationServices。
LocationManager是安卓内置的定位功能。它通过GPS或网络识别提供对位置的访问。每个设备都有这个。
LocationServices是谷歌Play服务的一项功能。它的主要价值是使用网络、少量的GPS使用和其他数据源来提供位置的“融合”提供商。它往往比电池电量比GPS少的网络更准确(但不像GPS那样准确/精确)。只有其OEM向Google付费以访问Google Play服务的设备才有此功能(这主要是亚洲和非洲的问题)。
两种不同的系统,两种不同的模拟定位方式。如果你通过谷歌Play服务获得位置,你最上面的一个可以工作,如果你通过LocationManager,你可以在底部找到位置。使用与您通常获取位置的方式相匹配的方法。
https://stackoverflow.com/questions/69559461
复制相似问题