Getting Android Location and return “unknown” or null when providers are unavailable

我们两清 提交于 2019-12-07 07:43:29

Hope this helps:

private LocationManager lm; 
private LocationListener ll;
public static String latitude;
public static String longitude;
double lat,lon;


  lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

        if(lm.isProviderEnabled(LocationManager.GPS_PROVIDER)){ 
//                      Toast.makeText(this,"GPS PROVIDER", Toast.LENGTH_LONG).show();
            ll = new GpsListener(); 
            //lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 100, 0,ll);
            lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0, ll);

        }else if(lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){
//              Toast.makeText(this,"NETWORK PROVIDER.", Toast.LENGTH_LONG).show();
            ll = new GpsListener();
            lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0,0, ll);

        }else{
            Toast.makeText(this,"GPS is disabled.", Toast.LENGTH_LONG).show();
            prog.dismiss();
        }

Add the above code in your OnCreate method

and out of the onCreate method create a following class

private class GpsListener implements LocationListener 
 {

    public void onLocationChanged(Location location) {
        // TODO Auto-generated method stub
        float acc=-1;
        if(location!=null) {
            Toast.makeText(HomeScreen.hs,"Location Found", Toast.LENGTH_LONG).show();
            System.out.println("IN IF PART");

            if(location.hasAccuracy())
                    acc = location.getAccuracy();

            lat = location.getLatitude();
            lon = location.getLongitude();
            isLocFound=true;
            latitude = Double.toString(lat);
            longitude = Double.toString(lon);

            System.out.println("1)"+acc+" 2) "+latitude+" 3) "+longitude);

            lm.removeUpdates(ll);
            lm = null;

            stopSelf();
            //stopForeground(true);

        }else{
            Toast.makeText(HomeScreen.hs,"No Location Found", Toast.LENGTH_LONG).show();
            System.out.println("IN ELSE PART..");
        }

        prog.dismiss();
    }

    public void onProviderDisabled(String provider) {
        // TODO Auto-generated method stub

    }

    public void onProviderEnabled(String provider) {
        // TODO Auto-generated method stub

    }

    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub

    }


}//end of Class

Hope this helpss

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