我的代碼正在某個給定時間取得一個位置的座標,然後顯示緯度/經度座標。我認爲我的代碼是正確的,但問題在於給手機賦予GPS權限。我正在使用三星Nexus S,並安裝了所有適當的驅動程序,但手機上沒有網絡。我被告知GPS應該仍然可以工作,並且應該能夠檢索座標。我已在「使用GPS衛星」設置啓用,並給予清單中的權限,如在manifest.xml測試開發者電話上的GPS座標
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"></uses-permission>
我在所有可能的位置扔權限,以防萬一我失去了一些東西在這裏看到,希望這不是問題。
至於我的代碼,我有這樣的onCreate方法(類?我不知道它的正式名稱)的
double[] gps = getGPS();
TextView tv = (TextView) this.findViewById(R.id.gpsCoordinates);
tv.setText("Latitude: " + gps[0] + "\nLongitude: " + gps[1]);
然後在GPS類的私有方法實際得到的座標
private double[] getGPS() {
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
List<String> providers = lm.getProviders(true);
/* Loop over the array backwards, and if you get an accurate location, then break out the loop*/
Location l = null;
for (int i=providers.size()-1; i>=0; i--) {
l = lm.getLastKnownLocation(providers.get(i));
if (l != null) break;
}
double[] gps = new double[2];
if (l != null) {
gps[0] = l.getLatitude();
gps[1] = l.getLongitude();
}
return gps;
我相信我把這段代碼從stackoverflow和其他一些論壇上拿了下來,然後調整了一下。
如果您可以在手機上安裝諸如Google地圖應用程序之類的東西,它可以修復設置中的任何錯誤並使GPS工作。 –
我安裝了Google地圖,但它說:「網絡故障 - 此應用程序需要工作數據連接」 – rvisio