Galaxy Tab - приложение, у которого нет GPS-местоположения в сети или у пассивного провайдера
ОБНОВЛЕНИЕ 2: проблема решена
после того как я вышел на улицу и получил сигнал от GPS_PROVIDER, теперь у меня больше нет проблем с определением местоположения с помощью NETWORK_PROVIDER....
Я до сих пор не знаю, почему приложение Google Maps смогло исправить это до того, как я это сделал, а мое приложение - нет, но теперь оно работает (даже после перезапуска вкладки galaxy), и я отчасти счастлив;)
ОБНОВЛЕНИЕ: название темы изменено, см. Правку внизу поста.
Я только что попробовал этот учебник ( http://www.firstdroid.com/2010/04/29/android-development-using-gps-to-get-current-location-2/) для получения GPS-местоположения в галактике вкладка, но я не получаю никакого местоположения....
Я уже пытался использовать другого провайдера, но это совсем не помогло (я попробовал GPS_PROVIDER, NETWORK_PROVIDER, PASSIVE_PROVIDER).
Странно то, что с официальным приложением Google Maps я получаю местоположение.:\
разрешения в AndroidManifest.xml устанавливаются следующим образом:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
Кто-нибудь знает, почему мое приложение не находится?
редактировать:
с провайдером GPS я получаю починку, когда нахожусь на улице. но я не понимаю, почему у меня нет местоположения с помощью NETWORK_PROVIDER или PASSIVE_PROVIDER.
Какой провайдер использует приложение Google Maps, если GPS недоступен?
редактировать 2:
код (это из учебника выше с некоторыми незначительными изменениями):
package Firstdroid.Tutorial.Gps;
import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.Toast;
public class UseGps extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Toast.makeText(getApplicationContext(), "Application started", Toast.LENGTH_SHORT).show();
/* Use the LocationManager class to obtain GPS locations */
LocationManager mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener mlocListener = new MyLocationListener();
// here I choose the location provider:
mlocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, mlocListener); // <---
}
/* Class My Location Listener */
public class MyLocationListener implements LocationListener {
@Override
public void onLocationChanged(Location loc) {
loc.getLatitude();
loc.getLongitude();
String Text = "My current location is: " +
"Latitude = " + loc.getLatitude() +
"Longitude = " + loc.getLongitude() + " (PROVIDER: " + loc.getProvider() + ")";
Toast.makeText(getApplicationContext(), Text, Toast.LENGTH_SHORT).show();
}
@Override
public void onProviderDisabled(String provider) {
Toast.makeText(getApplicationContext(), "Gps Disabled", Toast.LENGTH_SHORT).show();
}
@Override
public void onProviderEnabled(String provider) {
Toast.makeText(getApplicationContext(),
"Gps Enabled", Toast.LENGTH_SHORT).show();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}/* End of Class MyLocationListener */
}/* End of UseGps Activity */
1 ответ
Есть ли у вашей вкладки galaxy радио 3G и он подключен к сети? Если нет, он никогда не получит местоположение network_provider.
Также вам не нужны эти два дополнительных вызова loc.getLatitude и loc.getLongitude вверх, хотя я бы порекомендовал использовать их для установки переменной и использования переменной в вашем выходном сообщении. Теперь вы можете просто вызвать GPSData.getLatitude() и т. Д., Чтобы получить нужные вам значения.
public class GPSData {
private static double latitude;
/**
* @return the latitude
*/
public static double getLatitude() {
return latitude;
}
/**
* @param latitude the latitude to set
*/
public static void setLatitude(double l) {
latitude = l;
}
private static double longitude;
/**
* @return the longitude
*/
public static double getLongitude() {
return longitude;
}
/**
* @param d the longitude to set
*/
public static void setLongitude(double d) {
longitude = d;
}
private static float accuracy;
/**
* @return the accuracy
*/
public static float getAccuracy() {
return accuracy;
}
/**
* @param f the accuracy to set
*/
public static void setAccuracy(float f) {
accuracy = f;
}
//Altitude is in feet
private static double altitude;
public static void setAltitude (double a) {
altitude = a;
}
public static double getAltitude() {
return altitude;
}
/**
* New location listener to be instantiated for getting locational data
*
*/
public static class MyLocationListener implements LocationListener {
public void onLocationChanged(Location location) {
setAccuracy(location.getAccuracy());
setLongitude(location.getLongitude());
setLatitude(location.getLatitude());
//Altitude is in feet
setAltitude(location.getAltitude());
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}
}