zoukankan      html  css  js  c++  java
  • 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     }
    复制代码
  • 相关阅读:
    es5预览本地文件、es6练习代码演示案例
    Java实现 LeetCode 838 推多米诺(暴力模拟)
    Java实现 LeetCode 838 推多米诺(暴力模拟)
    Java实现 LeetCode 838 推多米诺(暴力模拟)
    Java实现 LeetCode 837 新21点(DP)
    Java实现 LeetCode 837 新21点(DP)
    Java实现 LeetCode 837 新21点(DP)
    Java实现 LeetCode 836 矩形重叠(暴力)
    Subversion under Linux [Reprint]
    Subversion how[Reprint]
  • 原文地址:https://www.cnblogs.com/crazywenza/p/2891428.html
Copyright © 2011-2022 走看看