Android locationlistener не работает на устройстве Android - PullRequest
0 голосов
/ 21 апреля 2011

Мой приемник местоположения работает, когда я использую элементы управления DDMS в эмуляторе, но когда я его развертываю на телефоне, он больше не работает. Мой код выглядит следующим образом

public class hoosheerAndroidAct extends MapActivity implements LocationListener {
    /** Called when the activity is first created. */
    MapController mc;
    public static MapView gMapView = null;
    GeoPoint p = null;
    static double latitude, longitude;
    MyLocationOverlay myLocationOverlay;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.screen1);

        // Creating and initializing Map
        gMapView = (MapView) findViewById(R.id.mapview);
        p = new GeoPoint((int) (latitude * 1E6),
                (int) (longitude * 1E6));
        gMapView.setSatellite(true);
        gMapView.setBuiltInZoomControls(true);
        mc = gMapView.getController();
        mc.setCenter(p);

        mc.setZoom(11);
        myLocationOverlay = new MyLocationOverlay(this, gMapView);
        gMapView.getOverlays().add(myLocationOverlay);
        list = gMapView.getOverlays();
        list.add(myLocationOverlay);

        LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L, 5.0f,
                this);

    }

методы реализованы для implements LocationListener

public void onLocationChanged(Location location) {
        if (location != null) {
            GeoPoint point = new GeoPoint((int) (location.getLatitude() * 1E6),
                    (int) (location.getLongitude() * 1E6));
            mc.animateTo(point);
            connect("http://api.foursquare.com/v1/venues.json?geolat="
                    + location.getLatitude() + "&geolong="
                    + location.getLongitude());
            Drawable marker = getResources().getDrawable(R.drawable.marker);
            gMapView.getOverlays().add(new SitesOverlay(marker));

        }
    }

    public void onProviderDisabled(String provider) {
        // required for interface, not used
    }

    public void onProviderEnabled(String provider) {
        // required for interface, not used
    }

    public void onStatusChanged(String provider, int status, Bundle extras) {
        // required for interface, not used
    }

    protected boolean isRouteDisplayed() {
        // TODO Auto-generated method stub
        return false;
    }

Есть ли что-то, чего мне не хватает? : - (

Ответы [ 4 ]

0 голосов
/ 23 октября 2013

У меня была похожая проблема и попробую все в программировании.Я читал о том, что Google использует те же другие датчики, чтобы найти местоположение.Я даже нахожу мобильный, где слушатель местоположения не будет работать в Google Maps.Когда я проверил настройки, я случайно включил энергосбережение батареи, и слушатель местоположения запускается.На каком-то другом устройстве, где местоположение тоже не работает, я включаю сохранение, и отображается местоположение.Я не знаю, почему это так, но, возможно, маслянистое спасет ваше приложение.

0 голосов
/ 22 апреля 2011

Google maps по умолчанию выберет провайдера сетевого местоположения, если GPS не может найти сигнал, чтобы тест мог вернуть местоположение без сигнала GPS.Я бы порекомендовал GPS Status в качестве хорошего бесплатного приложения.Единственное, о чем я могу подумать, это убедиться, что у вас есть четкое представление о небе.

0 голосов
/ 24 марта 2013

Может быть, вы тестируете в дверях, не можете получить информацию GPS.попробуйте изменить LocationManager.GPS_PROVIDER -> LocationManager.NETWORK_PROVIDER.

0 голосов
/ 21 апреля 2011

потому что, когда ваше устройство не может найти местоположение, оно возвращает местоположение по умолчанию 0,0.лучше проверять соединение с устройством через GPS, проверяя другие приложения, такие как приложение карты вашего устройства

...