Android获取当前位置(GPS和网络定位)

港控/mmm° 2022-09-23 08:41 563阅读 0赞

1、比较:

GPS准确度高但耗电多,网络定位耗电少但准确度低

2、代码

①添加权限:
AndroidManifest.xml:

  1. <!-- 两种provider的权限 -->
  2. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  3. <!-- 仅网络定位的权限 -->
  4. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

注:因为手机问题没有测试好,不确定是否加访问网络权限


②Java代码:

  1. public class MainActivity extends Activity {
  2. //定位都要通过LocationManager这个类实现
  3. private LocationManager locationManager;
  4. private String provider;
  5. @SuppressWarnings("static-access")
  6. @Override
  7. protected void onCreate(Bundle savedInstanceState) {
  8. super.onCreate(savedInstanceState);
  9. setContentView(R.layout.activity_main);
  10. //获取定位服务
  11. locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
  12. //获取当前可用的位置控制器
  13. List<String> list = locationManager.getProviders(true);
  14. if (list.contains(LocationManager.GPS_PROVIDER)) {
  15. //是否为GPS位置控制器
  16. provider = LocationManager.GPS_PROVIDER;
  17. }
  18. else if (list.contains(LocationManager.NETWORK_PROVIDER)) {
  19. //是否为网络位置控制器
  20. provider = LocationManager.NETWORK_PROVIDER;
  21. } else {
  22. Toast.makeText(this, "请检查网络或GPS是否打开",
  23. Toast.LENGTH_LONG).show();
  24. return;
  25. }
  26. Location location = locationManager.getLastKnownLocation(provider);
  27. if (location != null) {
  28. //获取当前位置,这里只用到了经纬度
  29. String string = "纬度为:" + location.getLatitude() + ",经度为:"
  30. + location.getLongitude();
  31. }
  32. //绑定定位事件,监听位置是否改变
  33. //第一个参数为控制器类型第二个参数为监听位置变化的时间间隔(单位:毫秒)
  34. //第三个参数为位置变化的间隔(单位:米)第四个参数为位置监听器
  35. locationManager.requestLocationUpdates(provider, 2000, 2,
  36. locationListener);
  37. }
  38. LocationListener locationListener = new LocationListener() {
  39. @Override
  40. public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
  41. // TODO Auto-generated method stub
  42. }
  43. @Override
  44. public void onProviderEnabled(String arg0) {
  45. // TODO Auto-generated method stub
  46. }
  47. @Override
  48. public void onProviderDisabled(String arg0) {
  49. // TODO Auto-generated method stub
  50. }
  51. @Override
  52. public void onLocationChanged(Location arg0) {
  53. // TODO Auto-generated method stub
  54. // 更新当前经纬度
  55. }
  56. };
  57. //关闭时解除监听器
  58. @Override
  59. protected void onDestroy() {
  60. // TODO Auto-generated method stub
  61. super.onDestroy();
  62. if (locationManager != null) {
  63. locationManager.removeUpdates(locationListener);
  64. }
  65. }
  66. }

发表评论

表情:
评论列表 (有 0 条评论,563人围观)

还没有评论,来说两句吧...

相关阅读