1
如果我想覆蓋來自設備上所有應用程序(包括Google地圖)的其他來源的GPS位置(在此情況下爲外部GPS定位器),是否需要更改爲源代碼?覆蓋內部GPS Android以便與導航一起使用
我已經看到模擬位置正在使用,但據我所知,這個模擬數據不會進入谷歌地圖,所以不會工作?
源代碼更改還是有其他方法嗎?
公平地說,在源代碼的正確方向上需要改變的一點也不錯!
如果我想覆蓋來自設備上所有應用程序(包括Google地圖)的其他來源的GPS位置(在此情況下爲外部GPS定位器),是否需要更改爲源代碼?覆蓋內部GPS Android以便與導航一起使用
我已經看到模擬位置正在使用,但據我所知,這個模擬數據不會進入谷歌地圖,所以不會工作?
源代碼更改還是有其他方法嗎?
公平地說,在源代碼的正確方向上需要改變的一點也不錯!
這是你應該如何使用自定義模擬提供商:
//Instantiate in your activity
LocationManager lm = getSystemService(LOCATION_SERVICE);
//Add a test provider
lm.addTestProvider("myprovider", false, false, false, false, true, true, true, Criteria.POWER_HIGH, Criteria.ACCURACY_FINE);
//Update the last location your provider will serve
Location fakeLoc = ...;
lm.setTestProviderLocation("myprovider", fakeLoc);
//Using your custom location provider
LocationProvider customProvider = lm.getProvider("myprovider");
您可以看到最重要的方法here的文檔。
由於每個應用程序選擇使用哪個提供程序,因此不能強制他們使用您的應用程序。此外,客戶端應用程序應該有權限ACCESS_MOCK_LOCATION
,這是你不能強制的另一件事。
但是你可以嘗試註冊使用默認的GPS供應商名稱的模擬提供商:
lm.addTestProvider(LocationManager.GPS_PROVIDER, false, false, false, false, true, true, true, Criteria.POWER_HIGH, Criteria.ACCURACY_FINE);
操作系統應該阻止你成功在這個的(如果不是,這將是一個重大的安全漏洞)。