2012-01-26 35 views
1

如果我想覆蓋來自設備上所有應用程序(包括Google地圖)的其他來源的GPS位置(在此情況下爲外部GPS定位器),是否需要更改爲源代碼?覆蓋內部GPS Android以便與導航一起使用

我已經看到模擬位置正在使用,但據我所知,這個模擬數據不會進入谷歌地圖,所以不會工作?

源代碼更改還是有其他方法嗎?

公平地說,在源代碼的正確方向上需要改變的一點也不錯!

回答

0

這是你應該如何使用自定義模擬提供商:

//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); 

操作系統應該阻止你成功在這個的(如果不是,這將是一個重大的安全漏洞)。