如何检测Android Mock Location
中的Marshmallow
是否触发了位置?
以前,我使用Settings.Secure.ALLOW_MOCK_LOCATION
但是,在API级别23中,已弃用该功能。
我要检查触发器是使用假位置还是原始GPS?
现在,检查Mock Location
是否已启用或不启用Android Marshmallow
的替代方法是什么?
最佳答案
如果您使用的是FusedLocationProviderApi
,并且已在callback/pendingIntentCallback中使用setMockLocation(mGoogleApiClient, fakeLocation);
设置了模拟位置,则返回的Location
对象将额外包含KEY_MOCK_LOCATION
,这是一个 bool 值,指示接收到的对象是模拟对象。
@Override
public void onLocationChanged (Location location){
Bundle extras = location.getExtras();
boolean isMockLocation = extras != null && extras.getBoolean(FusedLocationProviderApi.KEY_MOCK_LOCATION, false);
}