android gps 定位

来源:互联网 发布:国家题库软件 编辑:程序博客网 时间:2024/05/16 07:24

客户需要跟踪运单信息,决定采用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 settings20                 // activity21                 // may not be found. In that case show the general settings.22 23                 // General settings activity24                 intent.setAction(Settings.ACTION_SETTINGS);25                 try {26                     startActivity(intent);27                 } catch (Exception e) {28                 }29             }30         }31 32     }

2、重写onResume,设置监听

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

2、重写onPause,注销监听

View Code
1 @Override2     protected void onPause() {3         // TODO Auto-generated method stub4         super.onPause();5 6          if (locationManager != null) {7          locationManager.removeUpdates(locationListener);8          }9     }

 

 


<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击