2011-07-27 30 views
2

我的代碼正在某個給定時間取得一個位置的座標,然後顯示緯度/經度座標。我認爲我的代碼是正確的,但問題在於給手機賦予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和其他一些論壇上拿了下來,然後調整了一下。

+0

如果您可以在手機上安裝諸如Google地圖應用程序之類的東西,它可以修復設置中的任何錯誤並使GPS工作。 –

+0

我安裝了Google地圖,但它說:「網絡故障 - 此應用程序需要工作數據連接」 – rvisio

回答

1
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> 
<uses-permission android:name="android.permission.LOCATION"></uses-permission> 

添加上述permissions.May是這將幫助你。

+0

謝謝!我真的插在我的普通手機,有一個網絡,這樣的工作!但是我確實發現我缺少access_fine_location ..謝謝! – rvisio