美文网首页
Android获取用户location值为NULL的解决办法的代

Android获取用户location值为NULL的解决办法的代

作者: jiangmm | 来源:发表于2021-10-15 23:34 被阅读0次

    下面的代码内容是关于Android获取用户location值为NULL的解决办法的代码,应该是对码农有一些用处。

    package com.jeedroid.tools; 

     

    import java.io.IOException; 

    import java.util.List; 

    import java.util.Locale; 

     

    import android.content.Context; 

    import android.location.Address; 

    import android.location.Criteria; 

    import android.location.Geocoder; 

    import android.location.Location; 

    import android.location.LocationListener; 

    import android.location.LocationManager; 

    import android.os.Bundle; 

    import android.provider.Settings; 

    import android.util.Log; 

     

    public class LocationTools 

        private Location location; 

    public static LocationManager getLocationManager(Context context) 

        return (LocationManager) context.getSystemService(context.LOCATION_SERVICE); 

    public String getAddress(Context context) 

        LocationManager locationManager = this.getLocationManager(context); 

        if(!locationManager.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)) 

        { 

        android.provider.Settings.Secure.setLocationProviderEnabled(context.getContentResolver(), LocationManager.GPS_PROVIDER, false); 

        } 

        return doWork(context); 

     

    private String doWork(Context context) 

        String addres=""; 

        LocationManager locationManager = this.getLocationManager(context); 

        Criteria criteria = new Criteria(); 

        criteria.setAccuracy(Criteria.ACCURACY_FINE);   

        criteria.setAltitudeRequired(false);   

        criteria.setBearingRequired(false);   

        criteria.setCostAllowed(false);   

        criteria.setPowerRequirement(Criteria.POWER_LOW);   

        String provider =locationManager.getBestProvider(criteria, true); 

        Log.i("provider>>>>>>", provider); 

        while(location==null) 

        { 

        location =locationManager.getLastKnownLocation(provider); 

        } 

        LocationListener locationListener = new LocationListener() 

        { 

     

            @Override 

            public void onLocationChanged(Location location) 

            { 

                LocationTools.this.location=location; 

            } 

     

            @Override 

            public void onProviderDisabled(String provider) 

            { 

                 

            } 

     

            @Override 

            public void onProviderEnabled(String provider) 

            { 

                 

            } 

     

            @Override 

            public void onStatusChanged(String provider, int status, Bundle extras) 

            { 

                 

            } 

             

        }; 

        locationManager.requestLocationUpdates(provider, 1000, 10, locationListener); 

       

        Geocoder geo = new Geocoder(context,Locale.getDefault()); 

        try 

        { 

            List<Address> address=geo.getFromLocation(location.getLatitude(), location.getLongitude(), 1); 

            if(address.size()>0) 

            { 

                addres=address.get(0).getAddressLine(0); 

            } 

        } catch (IOException e) 

        { 

            e.printStackTrace(); 

        } 

        return addres; 

                                   

                           

                   

                   

               

               

                   

    相关文章

      网友评论

          本文标题:Android获取用户location值为NULL的解决办法的代

          本文链接:https://www.haomeiwen.com/subject/lnluoltx.html