Tip:
Highlight text to annotate it
X
这堂课将对bada的Location命名空间进行讲解。
我将简单介绍一下Location命名空间中的Location Provider,
Landmark和Location Service。
接着会介绍利用Map空间绘制地图。
bada的Location 命名空间提供获取设备当前位置的功能,
和搜索和管理地标。
利用这个命名空间,你可以开发出LBS应用程序。
现在开始讲Locationg命名空间中的子命名空间。
Location命名空间提供了获取用户当前位置和其它设备的位置的类。
Landmark,LandmarkStore和RemoteLandmarkStore类,
通过数据库来管理兴趣点。
Location Service 包括地图,地理编解码,路线和目录服务。
界面空间用来显示和位置相关的信息。
让我们来看看LocationProvider,
它用来提供当前的位置的详细信息,
LocationProvider类的API需要LOCATION权限。
它可以通过设备的GPS或者Wi-Fi接入点获取设备当前的位置信息。
LocationProvider类可以根据预定义的时间间隔,
返回设备的当前位置信息。
位置信息在Location类中,Location提供了位置坐标,
方向和速度,时间标签,并提供和获取这些位置的方法。
如果存在GPS,会有GPS的卫星数量信息。
一个监听句柄用于将位置信息传递给应用程序。
RequestLocationUpdate,CancelLocationUpdate,AddAreaListener等
函数用来管理句柄。RequestLocationUpdate按照设定的时间,
当位置改变时通过句柄返回位置信息。
CancelLocationUpdate函数用来删除在
RequestLocationUpdate函数中注册的句柄。
AddAreaListener函数用于注册一个句柄,
当离开或者进入一个设定的区域时,句柄将会被回调到。
通过RemoveAreaListener删除注册的句柄。
让我们看如何使用LocationProvider类。
首先通过LocationProvider定期获取位置信息,
因为这个方法消耗大量资源,
所以不推荐总使用这个方法。 可以这样使用这个函数,
在构造函数中调用GetRequestLocationupdates,并注册句柄,
这样句柄中的监听函数就可以被周期性的回调到了。
可以在监听函数中获取位置信息, 如果程序到了后台,
调用CancelLocationUpdates 取消位置更新,
这样可以节省电量, 当程序回到前台时,
再注册句柄,调用RequestLocationUpdates函数。
接着又可以周期性的进行位置更新了。 最后,如果程序终止了,
调用CancelLocationUpdates停止位置更新。
第二个场景是对设备进行监听,
在初始化时,获取当前位置,
可以设置当设备移出以当前位置为原点的指定范围时,
是否接收通知。
首先,调用GetLastKnownLocationN 得到最新报告的位置,
按照这个位置设置几何形状的范围,
调用AddAreaListener添加监听句柄,
这样,当设备移出到这个区域时,通过句柄可以接收到通知。
句柄的OnBoundaryCrossed 函数会被调用到。
如果设备移出了指定的边界,OnBoundaryCrossed 被调用到了的话,
你可以通过AddAreaListener 去设置一个新的区域。
当句柄被添加后,
应用程序退出了,你必须调用RemoveAreaListener去
删除掉位置监听句柄。
最后的情况是仅当应用程序需要更新时才进行更新,
因为这个方法对比周期更新位置要省电,
如果不需要对位置进行周期性的更新,
你可以调用GetLastKnownLocationN函数,
得到最新更新的位置信息。