can't find the exact current location in android

女生的网名这么多〃 提交于 2019-11-29 09:48:53

When the location comes in check for accuracy. If its not accurate enough then don't process it.

@Override
public void onLocationChanged(Location location) {
        if (!location.hasAccuracy()) {
            return;
        }
        if (location.getAccuracy() > 5) {
            return;
        }
     // do something with location accurate to 5 meters here.
    }

Do this, Load the application in your device, move to open sky, run the application, wait for 2 minutes. Come back to office inside, and then execute above code

It worked for me.

Hope it helps you.

We worked in Samsung devices and had issues too. Just ensure the following:

  1. GPS is on (Street Level should also be enabled)
  2. Mobile Network is enabled (If required, also enable Use packet data option)
  3. Download and install some 3rd party widgets in your phone and wait till the location coordinates appear/refresh in the widget. (This is because the widgets have timeout concept integrated in them and keep trying repeatedly to get coordinates)
  4. Goto Google-maps from the device and check if your location is being identified. (Sometimes, we have observed that Google Maps would be able to identify coordinates where as we would not be able to!!)
  5. Ensure that the GPS Satellite signal on the notification header bar is blinking.
  6. If required, set a timer for refresh and add toast messages to display lat long once obtained.

For samsung device alone, for the first time, the GPS Coordinates do not get reflected immediately (It is null and can last upto half an hour :( How Annoying!! ). So, we used to wait outside the office for some time till the GPS coordinate is recieved.

I had the same problem. The point is: You need a time-gap between your "requestLocationUpdates" and "getLastKnownLocation"

Try to start requestLocationUpdates in the "onStart" or "onCreate" method.

protected void onStart() {

   super.onStart();
   locationManager.requestLocationUpdates(
                      LocationManager.GPS_PROVIDER,
                      MIN_TIME_BW_UPDATES,
                      MIN_DISTANCE_CHANGE_FOR_UPDATES, this);

}

This activates your GPS. You have to wait some seconds until it found some locations. So i put the "getlastKnownLocation" - method in an OnClickEvent. If no location is found it just displays a Toast.

public void onClick(View v) {

  m_CurrentLocation = m_LocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
  if (m_CurrentLocation != null)
       // Your action with the last known location
  else
       Toast.makeText(YourActivity.this, "No GPS Location found", Toast.LENGTH_SHORT).show();
}

There are numerous bugs with LocationManager, why don't you try using fused location provider with LocationClient instead. The devs at Google have recommended this as well during the last Google I/O.

Unless the device runs on versions older than Froyo which do not have play services, there is no reason to use LocationManager.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!