Моят код взема координатите на дадена позиция ведно време и след това да показвате координати Lat / Long. Мисля, че моят код е прав, но там, където проблемът е, е даването на разрешение от GPS на телефона. Аз използвам Samsung Nexus S и имам инсталирани всички необходими драйвери, но няма телефонна мрежа. Казаха ми, че GPS трябва да работи и трябва да може да извлича координати. Имам разрешената настройка "Използване на GPS сателити" и са дали разрешение в манифеста, както се вижда тук в manifest.xml
<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 и няколко други форуми и след това го оправих малко.
Отговори:
1 за отговор № 1<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.LOCATION"></uses-permission>
Добавете по-горе разрешения. Може би това ще ви помогне.
0 за отговор № 2
Трябва да поставите следното разрешение
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
Ref: http://developer.android.com/reference/android/Manifest.permission.html#ACCESS_FINE_LOCATION