Android locationmanager:不稳定的行为

时间:2016-09-24 17:13:29

标签: android android-location

我使用以下代码(从其他SO帖子粘贴)来获取当前位置

public void getCurrentLocation() {
        LocationManager locationManager;
        String context = Context.LOCATION_SERVICE;
        locationManager = (LocationManager) getSystemService(context);
        Criteria crta = new Criteria();
        crta.setAccuracy(Criteria.ACCURACY_FINE);
        crta.setAltitudeRequired(false);
        crta.setBearingRequired(false);
        crta.setCostAllowed(true);
        crta.setPowerRequirement(Criteria.POWER_LOW);
        Log.d("gotloc","First Place");
        String provider = locationManager.getBestProvider(crta, true);
        Log.d("gotloc",provider);

        try {
            locationManager.requestLocationUpdates(provider, 0, 0,
                    new LocationListener() {
                        @Override
                        public void onStatusChanged(String provider, int status,
                                                    Bundle extras) {
                        }

                        @Override
                        public void onProviderEnabled(String provider) {
                        }

                        @Override
                        public void onProviderDisabled(String provider) {
                        }

                        @Override
                        public void onLocationChanged(Location location) {
                            Log.d("gotloc", "2nd7 place");

                            if (location != null) {
                                 lat = location.getLatitude();
                                 lng = location.getLongitude();
                                Log.d("gotloc", "3rd place");

                                if (lat != 0.0 && lng != 0.0) {
                                   /* System.out.println("WE GOT THE LOCATION");
                                    System.out.println(lat);
                                    System.out.println(lng);
//                                   */
                                   Log.d("gotloc", lat+ "," + lng);
                                   // return lat+","+lng;
                                }
                            }

                        }


                    });

        }catch (SecurityException e){
            Log.d("gotloc", "3rd place");

        }
        catch (Exception e){
            Log.d("gotloc", "3rd place");

        }
    }

}

当我在我的Moto G3上使用它时它工作正常,我得到经度和经度但是当我在Moto X Play上使用它时,我得到0。我发现onLocationChanged没有被执行

我没有任何例外。可能是什么问题?

0 个答案:

没有答案