如何检测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);

}

10-07 22:07