LocationManager基本用法

 一、获得LocationManager引用

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

 

二、提供设备最后已知位置,这里有3,GPS_PROVIDER GPS获得,NETWORK_PROVIDER网络获得,PASSIVE_PROVIDER被动提供其他应用程序提供

locMgr.getLastKnownLocation(LocationManager.GPS_PROVIDER);

 

三、返回所有能用或不能用的提供程序

locMgr.getAllProviders();

 

四、返回指定提供程序

locMgr.getProvider(Provider name);

 

五、判断指定提供程序是否能用

locMgr.isProviderEnabled(provider);

 

六、返回立即可以使用的提供程序

locMgr.getProviders(true);

 

七、返回可以使用的提供程序,并且用criteria对象指定条件

locMgr.getProviders(criteria, true)

 

八、onResume()中注册接收位置跟新事件的接收器

locMgr.requestLocationUpdates(

            LocationManager.GPS_PROVIDER,

             0,// 间隔多少毫秒通知

            0,// 最小间隔距离变化通知

            locListener);

 

 

九、onPause()中删除注册

locMgr.removeUpdates(locListener);

 

十、位置监听器

LocationListener locListener = new LocationListener(){//

            //位置信息更新时调用
            public void  onLocationChanged(Location location)
            {
                if (location != null)
                {
                    Toast.makeText(getBaseContext(),
                        "New location latitude [" + 
                        location.getLatitude() +
                        "] longitude [" + 
                        location.getLongitude()+"]",
                        Toast.LENGTH_SHORT).show();
                }
            }

十一、当禁用的提供程序被调用时会立即调用
            public void  onProviderDisabled(String provider)
            {
            }

十二、用户启用提供程序时被调用
            public void  onProviderEnabled(String provider)
            {
            }

 

 十三、状态变化时被调用
            public void  onStatusChanged(String provider, 
                            int status, Bundle extras)
            {
            }
        };
    }

 

 

十四、请求用户打开GPS

startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCALE_SETTINGS), 0); 

/**

LocationManager 接近提醒

*/

十五、geo模式:uri的前缀来过滤数据类型

String PROX_ALERT = "com.androidbook.intent.action.PROXIMITY_ALERT";

IntentFilter iFilter = new IntentFilter(PROX_ALERT);//设置了过滤器所接受的行为

iFilter.addDataScheme("geo");//设置了过滤器说接受的uri前缀

 

String geo = "geo:"+lat+","+lon;

Intent intent = new Intent(PROX_ALERT, Uri.parse(geo));//intent中添加uri匹配intentFilter

pIntent1 = PendingIntent.getBroadcast(getApplicationContext(), 0, intent,PendingIntent.FLAG_CANCEL_CURRENT);//创建PendingIntent

locMgr.addProximityAlert(lat, lon, radius, 6000L, pIntent1);//纬度,经度,半径,超时,触发后的行为

十六、获取经纬度和海拔

Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

double latitude = location.getLatitude();  //经度

double longitude = location.getLongitude(); //纬度

double altitude = location.getAltitude(); //海拔

 

 

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Android 中的 LocationManager 是用于获取设备当前位置信息的类,下面是使用 LocationManager基本方法: 1. 获取 LocationManager 实例: 要使用 LocationManager,首先需要获取它的实例。可以通过 getSystemService() 方法来获取系统级的 LocationManager 实例,例如: LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 2. 设置位置更新监听器: 要获取设备位置信息,需要注册一个位置更新监听器。可以通过 locationManager 的 requestLocationUpdates() 方法来设置监听器,设置监听器需要指定位置信息的更新频率和最小更新距离等参数: locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, locationListener); 3. 实现位置监听器: 需要自定义一个 LocationListener 的实现类来处理位置信息的更新。在 LocationListener 的回调方法中可以处理获取到的位置信息,例如: private class MyLocationListener implements LocationListener { @Override public void onLocationChanged(Location location) { // 处理获取到的位置信息 } @Override public void onStatusChanged(String provider, int status, Bundle extras) { // 位置提供者状态变化时的处理 } @Override public void onProviderEnabled(String provider) { // 位置提供者启用时的处理 } @Override public void onProviderDisabled(String provider) { // 位置提供者禁用时的处理 } } 4. 获取最后已知的位置信息: 除了实时获取设备位置信息外,还可以通过 LocationManager 的 getLastKnownLocation() 方法来获取设备最后一次已知的位置信息,例如: Location lastKnownLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 通过以上方法,可以使用 LocationManager 来获取设备的当前位置信息,并且可以在位置信息更新时及时进行处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhwadezh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值