• android gps


    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); // 创建LocationManager对象
    
    provider = locationManager.getBestProvider(getCriteria(), true); // 设置查询条件,返回定位方式,默认为GPS定位
    
    
    //设置监听
    locationListener = new LocationListener() {
    
                @Override
                public void onStatusChanged(String provider, int status,
                        Bundle extras) {
                    // TODO Auto-generated method stub
    
                }
    
                @Override
                public void onProviderEnabled(String provider) {
                    // TODO Auto-generated method stub
                    Location l = locationManager.getLastKnownLocation(provider); // 获取位置信息
                    updateView(l); // 更新EditText控件的内容
                }
    
                @Override
                public void onProviderDisabled(String provider) {
                    
                    updateView(null);
                }
    
                @Override
                public void onLocationChanged(Location location) {
                    // TODO Auto-generated method stub
                    updateView(location);
                }
            };
    
    
    
    btn.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    progressDialog = new ProgressDialog(DemoActivity.this);
                    progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
                    progressDialog.setMessage("定位中!");
                    progressDialog.show();
                    new Thread() {
                        @Override
                        public void run() {
                            getLocation();
                        };
                    }.start();
    
                }
            });
    
    private void getLocation() {
            // 获取位置管理服务
    
            try {
    
                location = locationManager.getLastKnownLocation(provider); // 通过GPS获取位置
    
                address = gps.updateToNewLocation(location);
    
                handler.sendEmptyMessage(2);
    
            } catch (Exception e) {
                // TODO Auto-generated catch block
                address = e.getMessage();
                handler.sendEmptyMessage(3);
            }
        }
    private Handler handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                switch (msg.what) {
                case 0:
                    // 登录加载
    
                    break;
                case 1:
    
                    break;
                case 2:
                    progressDialog.dismiss();
                    updateView(location);
    
                default:
                    break;
                }
            };
        };
    复制代码

    需要注意的地方:

    1、重写onStart,检测GPS是否开启

    View Code
    复制代码
     1 @Override
     2     protected void onStart() {
     3         // TODO Auto-generated method stub
     4         super.onStart();
     5 
     6             Boolean a = locationManager
     7                 .isProviderEnabled(LocationManager.GPS_PROVIDER);
     8 
     9         if (!a) {
    10             Intent intent = new Intent();
    11             intent.setAction(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
    12             intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    13 
    14             try {
    15                 startActivity(intent);
    16 
    17             } catch (ActivityNotFoundException ex) {
    18 
    19                 // The Android SDK doc says that the location settings
    20                 // activity
    21                 // may not be found. In that case show the general settings.
    22 
    23                 // General settings activity
    24                 intent.setAction(Settings.ACTION_SETTINGS);
    25                 try {
    26                     startActivity(intent);
    27                 } catch (Exception e) {
    28                 }
    29             }
    30         }
    31 
    32     }
    复制代码

    2、重写onResume,设置监听

    View Code
    复制代码
    1 @Override
    2     protected void onResume() {
    3         // TODO Auto-generated method stub
    4         super.onResume();
    5 
    6          locationManager.requestLocationUpdates(provider, 1000, 0,
    7          locationListener);// 此处实际用network方式定位
    8 
    9     }
    复制代码

    2、重写onPause,注销监听

    View Code
    复制代码
    1 @Override
    2     protected void onPause() {
    3         // TODO Auto-generated method stub
    4         super.onPause();
    5 
    6          if (locationManager != null) {
    7          locationManager.removeUpdates(locationListener);
    8          }
    9     }
    复制代码
  • 相关阅读:
    面向对象初识,类名称空间,对象名称空间
    python内置函数二
    生成器、列表推导式、生成器表达式
    python内置函数一
    Error response from daemon: rpc error: code = AlreadyExists desc = name conflicts with an existing object: service myweb already exists
    centos7单机安装kafka
    一个自动化框架demo
    浅谈自动化测试
    测试的个人想法
    电子课堂6:ChangeLog-2.19
  • 原文地址:https://www.cnblogs.com/crazywenza/p/2891428.html
Copyright © 2020-2023  润新知