Android中LocationManager的简单使用01
来源:互联网 发布:韩顺平数据库视频教程 编辑:程序博客网 时间:2024/06/05 05:56
Android中LocationManager的提供了一系列方法来地理位置相关的问题,包括查询上一个已知位置;注册/注销来自某个 LocationProvider的周期性的位置更新;以及注册/注销接近某个坐标时对一个已定义Intent的触发等。今天我们就来看看Android 中LocatinManager的简单使用,以获取当前所在的位置为例。
首先,我们需要获取LocationManager的一个实例,这里需要注意的是他的实例只能通过下面这种方式来获取,直接实例化LocationManager是不被允许的。
得到了LocationManager的实例locatonManager以后,我们通过下面的语句来注册一个周期性的位置更新。
这句代码告诉系统,我们需要从GPS获取位置信息,并且是每隔1000ms更新一次,并且不考虑位置的变化。最后一个参数是LocationListener的一个引用,我们必须要实现这个类。
以上的这些步骤一般应当在Activity的onCreate()阶段完成。
在成功注册了一个周期性坐标更新以后,我们就随时可以通过下面的方法来取得当前的坐标了。
不过这时候,如果你尝试去运行这个LocationSample的话程序启动时多半就会报错,因为我们没有设置GPS相关的权限,解决方法也相当简单,在AndroidManifest.xml中的block里添加下面这句即可解决权限的问题。详细的权限设置,请参考官方文档docs/reference/android/Manifest.permission.html
如果是在模拟器中调试的话,我们有两种方法来设置一个模拟的坐标值,第一种是通过DDMS,我们可以在eclipse的ADT插件中使用这种方法,只要打开"Window" --> "Show View" 中打开"Emulator Control" View即可看到如下的设置窗口,我们可以手动,或者通过KML和GPX文件来设置一个坐标。
另一种方法是使用geo命令,我们需要telnet到本机的5554端口,然后在命令行下输入类似于 geo fix -121.45356 46.51119 4392 这样的命令,后面三个参数分别代表了经度、纬度和(可选的)海拔。
首先,我们需要获取LocationManager的一个实例,这里需要注意的是他的实例只能通过下面这种方式来获取,直接实例化LocationManager是不被允许的。
- LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
得到了LocationManager的实例locatonManager以后,我们通过下面的语句来注册一个周期性的位置更新。
- locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
- 1000, 0, locationListener);
这句代码告诉系统,我们需要从GPS获取位置信息,并且是每隔1000ms更新一次,并且不考虑位置的变化。最后一个参数是LocationListener的一个引用,我们必须要实现这个类。
- privatefinal LocationListener locationListener =new LocationListener() {
- public void onLocationChanged(Location location) {//当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发
- // log it when the location changes
- if (location != null) {
- Log.i("SuperMap","Location changed : Lat: "
- + location.getLatitude() + " Lng: "
- + location.getLongitude());
- }
- }
- public void onProviderDisabled(String provider) {
- // Provider被disable时触发此函数,比如GPS被关闭
- }
- public void onProviderEnabled(String provider) {
- // Provider被enable时触发此函数,比如GPS被打开
- }
- public void onStatusChanged(String provider,int status, Bundle extras) {
- // Provider的转态在可用、暂时不可用和无服务三个状态直接切换时触发此函数
- }
- };
以上的这些步骤一般应当在Activity的onCreate()阶段完成。
在成功注册了一个周期性坐标更新以后,我们就随时可以通过下面的方法来取得当前的坐标了。
- Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
- double latitude = location.getLatitude(); //经度
- double longitude = location.getLongitude();//纬度
- double altitude = location.getAltitude(); //海拔
不过这时候,如果你尝试去运行这个LocationSample的话程序启动时多半就会报错,因为我们没有设置GPS相关的权限,解决方法也相当简单,在AndroidManifest.xml中的block里添加下面这句即可解决权限的问题。详细的权限设置,请参考官方文档docs/reference/android/Manifest.permission.html
- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
如果是在模拟器中调试的话,我们有两种方法来设置一个模拟的坐标值,第一种是通过DDMS,我们可以在eclipse的ADT插件中使用这种方法,只要打开"Window" --> "Show View" 中打开"Emulator Control" View即可看到如下的设置窗口,我们可以手动,或者通过KML和GPX文件来设置一个坐标。
另一种方法是使用geo命令,我们需要telnet到本机的5554端口,然后在命令行下输入类似于 geo fix -121.45356 46.51119 4392 这样的命令,后面三个参数分别代表了经度、纬度和(可选的)海拔。
0 0
- Android中LocationManager的简单使用01
- Android中LocationManager的简单使用01
- Android中LocationManager的简单使用02
- Android中LocationManager的简单使用03
- Android中LocationManager的简单使用,获取当前位置
- Android中LocationManager的简单使用,获取当前位置
- 主题:[原创]Android中LocationManager的简单使用,获取当前位置
- [原创]Android中LocationManager的简单使用,获取当前位置
- Android中LocationManager的简单使用,获取当前位置
- LocationManager 的简单使用
- android LocationManager的使用
- Android中LocationManager的简单使用,获取当前位置(转http://www.javaeye.com/topic/363950)
- android中使用LocationManager定位获取信息
- Android LocationManager 使用
- Android LocationManager 使用
- Android LocationManager 使用
- Android LocationManager 使用
- android LocationManager的简单使用(获取经纬度信息到textview显示)
- 大数相乘(支持浮点数)
- SpringMvc工作原理
- JAVA VERSION ON MAC
- Y4M 格式详解
- jQuery选择器总结
- Android中LocationManager的简单使用01
- 增量式PID和位置式PID
- 单循环链表
- Oracle 日期类型 取各个字段
- Java 并发编程系列教程整理
- hibernate增删改查小结
- 关于LINUX权限-bash: ./startup.sh: Permission denied
- Writing an Hadoop MapReduce Program in Python
- Linux下tomcat-7.0.11中tomcat-users.xml配置