Android:如何使用 GPS 提供程序获取离线当前位置?
Posted
技术标签:
【中文标题】Android:如何使用 GPS 提供程序获取离线当前位置?【英文标题】:Android: How to get offline current location using GPS provider? 【发布时间】:2018-03-20 08:01:36 【问题描述】:我想构建在用户离线时提供当前位置的代码。我创建了一个代码,其中我使用 GPS 提供程序,但我仅在用户在线时提供当前位置。我想获取用户的当前和新位置 这是代码
final LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
LocationListener locationListener=new LocationListener()
@Override
public void onLocationChanged(Location location)
lat=location.getLatitude();
String mm = "";
longitude=location.getLongitude();
locationManager.removeUpdates(this);
Geocoder geocoder = new Geocoder(context, Locale.getDefault());
try
List<Address> addresses = geocoder.getFromLocation(lat, longitude, 1);
Address obj = addresses.get(0);
mm = obj.getCountryName();
mm=mm+" , "+obj.getSubAdminArea();
mm=mm+" , "+obj.getSubLocality();
mm=mm+" , "+obj.getFeatureName();
Log.v("IGA", "Address" + mm);
catch (IOException e)
e.printStackTrace();
@Override
public void onStatusChanged(String s, int i, Bundle bundle)
@Override
public void onProviderEnabled(String s)
@Override
public void onProviderDisabled(String s)
;
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)
String[] permissions,
int[] grantResults)
return;
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
【问题讨论】:
此link 与您需要的不完全相同,但可能会有所帮助。 How do I get the current GPS location programmatically in android? 【参考方案1】:请定义在线/离线e
我建议你使用: locationManager.requestSingleUpdate(LocationManager.GPS_PROVIDER, locationListenerGPS, null);
您更新后的代码应该是:
final LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
LocationListener locationListener=new LocationListener()
@Override
public void onLocationChanged(Location location)
lat=location.getLatitude();
String mm = "";
longitude=location.getLongitude();
Geocoder geocoder = new Geocoder(context, Locale.getDefault());
try
List<Address> addresses = geocoder.getFromLocation(lat, longitude, 1);
Address obj = addresses.get(0);
mm = obj.getCountryName();
mm=mm+" , "+obj.getSubAdminArea();
mm=mm+" , "+obj.getSubLocality();
mm=mm+" , "+obj.getFeatureName();
Log.v("IGA", "Address" + mm);
catch (IOException e)
e.printStackTrace();
@Override
public void onStatusChanged(String s, int i, Bundle bundle)
@Override
public void onProviderEnabled(String s)
@Override
public void onProviderDisabled(String s)
;
if (ActivityCompat.checkSelfPermission(context,
Manifest.permission.ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED
&&
ActivityCompat.checkSelfPermission(context,
Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED)
String[] permissions, int[] grantResults)
return;
locationManager.requestSingleUpdate(LocationManager.GPS_PROVIDER, locationListenerGPS, null);
【讨论】:
我想在没有互联网的情况下使用 如果您只需要请求一次位置,请使用我提供的代码,它可以在没有互联网的情况下使用。您只需要互联网进行地理编码,检索地址而不是位置(纬度和经度)以上是关于Android:如何使用 GPS 提供程序获取离线当前位置?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用 GPS 的情况下获取 Android 设备的当前城市名称?