LocationManager的用法

来源:互联网 发布:java商城项目经验 编辑:程序博客网 时间:2024/06/03 18:04

           要使用LocationManager就必须先获取到它的实例,我们可以用Context的getSystemService()方法获取到。getSystemService()方法接收一个字符串参数,用于确定获取系统的那个服务,这里传入Context.LOCATION_SERVICE即可。因此,获取LocatManager的实例就可以写成:

           LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

接着我们需要选择一个位置提供器来确定设备当前的位置。Android中一般有三种位置提供器可供选择,

GPS_PROVIDER、NETWORK_PROVIDER和PASSVIE_PROVIDER.其中前两种使用的比较多,分别表示GPS定位和网络定位.

这两种定位各有特点,GPS定位精度比较高,但是非常耗电,而网络定位稍差,但耗电量较小。

        将选择好的位置提供器传入到getLastKnownLocation()方法中,就可以得到一个Location对象,如下所示:

       String provider = LocationManager.NETWORK_PROVIDER;

       Location location = locationManager.getLastKnownLocation(provider);

这个Location对象包含了经度、纬度、海拔等一系列的位置信息,然后从中取出我们所关心的那部分数据即可。 

另外,getLastKnownLocation虽然可以获取设备当前的位置信息,但是用户完全是有可能带着设备随时移动的,那么我们怎么 才可以在设备位置发生变化时获取到新的位置信息呢,不用担心,LocationManager还提供了一个requestLocationUpdate()方法,只要传入一个LocationListener的实例,并简单配置几个参数就可以实现上述功能了,写法如下:

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10,

       new LocationListener() {

               @Override

               public void onStatusChanged(String provider, int status, Bundle extras) {
           
     }

           @Override         
          
            public void onProviderEnabled(String provider) {
            

            }

            @Override
          
                public void onProviderDisabled(String provider)  {               
             
                 }

           @Override
         
           public void onLocationChanged(Location location)   {

          }  

});

           这里requestLocationUpdates()方法接收四个参数,第一个参数是位置提供器的类型,第二个参数是监听位置变化的时间间隔,以毫秒为单位,第三个参数是监听位置变化的距离,以米为单位;第四个参数则是LocationListener监听器。这样的话,,LocationManagermei每隔5秒钟会检查一下位置的变化情况,当移动距离超过10米时,就会调用LocationListener的onLocationChanged()方法,并把新的位置信息作为参数传入。

0 0
原创粉丝点击