02-android-模拟定位
模拟位置数据
使用模拟位置数据的基本流程:
- 实例化LocationManager对象
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); - 添加TestProvider
只允许一个应用程序使用模拟数据,如系统中有正使用的TestProvider,这时候直接添加会报错,因此向获取,如成功则直接使用,不成功,再添加,使用时只能使用gps_Provider
3. 启用TestProvider
lm.setTestProviderEnabled(LocationManager.GPS_PROVIDER, true);
lm.setTestProviderStatus(LocationManager.GPS_PROVIDER,LocationProvider.AVAILABLE,null, System.currentTimeMillis());
4. 创建Location对象,并设定属性值
Location newLocation = new
Location(LocationManager.GPS_PROVIDER);
newLocation.setLatitude(39.820015);
newLocation.setLongitude(116.813752);
newLocation.setAccuracy(500);
newLocation.setTime(System.currentTimeMillis());
5、一定要设置nonasecond单位的值,否则是没法持续收到监听的newLocation.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());
6、注册监听完成后再进行模拟定位点的设置,否则接受不到回调
lm.setTestProviderLocation(LocationManager.GPS_PROVIDER, newLocation);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlistener);
7、需要在AndroidManifest.xml文件中添加「获取模拟定位信息」权限。
不同版本Android studio可能报错,按提示会自动加到debug清单文件中。
8、开启系统允许模拟位置开关
(1)Android 6.0以下:有【允许模拟位置】选项,直接打开即可,也可通过以下代码进行判断是否打开,不建议使用。
boolean canMockPosition = Settings.Secure.getInt(getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION, 0) != 0
(2)Android6.0及以上:没有【允许模拟位置】选项,弃用了Settings.Secure.ALLOW_MOCK_LOCATION,无法通过上面的方法判断。增加了【选择模拟位置信息应用】的方法,需要选择使用模拟位置的应用。
代码直接使用暂无。为什么?
需要打开开发者选项。
打开android studio模拟器的开发者权限步骤如下:
step1:找到安卓的setting点开;
step2:点击System,再找到关于手机,手机版本连续点击7次,返回上一层就有一个开发者选项;
step3:点击Developer options,找到select mock location app,点击需要模拟定位的app。
例子
总结
本文地址:https://blog.csdn.net/weixin_44123412/article/details/107494727
上一篇: EVP AES_CBC加密解密记录