Android(安卓)GPS定位 获取经纬度
16lz
2021-01-24
Android GPS定位 获取经纬度 Android 应用服务器 Eclipse 移动 是手机与手持设备的最大特点,可以通过Eclipse的DDMS视图,模拟设备的位置变化,改变经纬度后,点击send,然后运行程序,在应用程序中,动态的获取设备位置,然后显示当前的位置信息。
获取位置信息分为三步:
1. 添加系统权限,来支持对LBS硬件的访问
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION">
</uses-permission>
2. 得到系统服务 的LocationManager 对象
LocationManager loctionManager;
String contextService=Context.LOCATION_SERVICE;
//通过系统服务,取得LocationManager对象
loctionManager=(LocationManager) getSystemService(contextService);
3. 得到位置提供器,通过位置提供器,得到位置信息,可以指定具体的位置提供器,也可以提供一个标准集合,让系统根据 标准匹配最适合的位置提供器,位置信息是由位置提供其提供的。
a. 通过GPS位置提供器获得位置(指定具体的位置提供器)
String provider=LocationManager.GPS_PROVIDER;
Location location = loctionManager.getLastKnownLocation(provider);
b. 使用标准集合,让系统自动选择可用的最佳位置提供器,提供位置
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);//高精度
criteria.setAltitudeRequired(false);//不要求海拔
criteria.setBearingRequired(false);//不要求方位
criteria.setCostAllowed(true);//允许有花费
criteria.setPowerRequirement(Criteria.POWER_LOW);//低功耗
//从可用的位置提供器中,匹配以上标准的最佳提供器
String provider = loctionManager.getBestProvider(criteria, true);
//获得最后一次变化的位置
Location location = loctionManager.getLastKnownLocation(provider);
最后将位置信息显示在TextView中,如图:
监听位置的变化
//监听位置变化,2秒一次,距离10米以上
loctionManager.requestLocationUpdates(provider, 2000, 10, locationListener);
//位置监听器
private final LocationListener locationListener = 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) {
//使用新的location更新TextView显示
updateWithNewLocation(location);
}
};
通过改变位置经纬度,程序会自动更新TextView显示的位置信息
请问博主,应该怎么用?
到设置中把gps定位打开试试
谢谢 博主 30 楼 LoveZhou 2013-05-06 pimkle 写道 2.3.3报错
google 可能已经不支持这种方式定位了,现在我在公司的项目里,用的是百度定位 29 楼 pimkle 2013-05-04 2.3.3报错 28 楼 czltx224 2013-04-28 不行啊,獲取不到 27 楼 LoveZhou 2013-03-25 xiexinjing 写道 附件不是源代码 是源代码,这个demo是很久以前的了,当时测试可以获取,现在google定位可能获取不到位置了,我在公司用百度的开放sdk获取的位置
26 楼 xiexinjing 2013-03-21 附件不是源代码 25 楼 yaoguanyuan 2013-02-08 我用这代码得到的数值怎么跟你上面的数据是一模一样的,为什么不是我当地的经纬度值 24 楼 zhaomingshen 2012-12-19 真个是没得结果,测试环境,三星PAD N8000,Android4.0,开启GPS,开启WLAN,插上手机卡,信号肯定是有的,有朋友晓得是怎么回事不呢? 23 楼 liangzedong 2012-12-17 获取经纬度两个数字,请问这两个数字有什么用呢?可以怎么用? 22 楼 zhouxiangang123 2012-11-22 很不错,我的也不能定位~
21 楼 min_you1314 2012-08-23 很不错,好像 不能定位
20 楼 LoveZhou 2012-05-03 mvpstevenlin 写道 我在模拟器上运行,没有内容。
请问博主,应该怎么用?
到设置中把gps定位打开试试 19 楼 mvpstevenlin 2012-05-02 我在模拟器上运行,没有内容。
请问博主,应该怎么用? 18 楼 wf1023 2012-04-05 感谢分享... 17 楼 LoveZhou 2012-03-16 han0917 写道 LoveZhou 写道 JACKDG2010 写道 location 在真机上运行是null。
在真机上有可能是null,有获取不到的情况,gps定位不到,需要用network定位,network定位,位置不入gps准确,但是只要手机有信号就能定到,经常是很大一个范围内的手机显示都在同一个位置
那如何实现精确定位啊???另外在室内测试为什么获取不到啊?
在室内有取不到的情况,还不太清楚如何精确定位,看很多软件,定位也都是定大体位置,都不精确 16 楼 han0917 2012-03-15 LoveZhou 写道 JACKDG2010 写道 location 在真机上运行是null。
在真机上有可能是null,有获取不到的情况,gps定位不到,需要用network定位,network定位,位置不入gps准确,但是只要手机有信号就能定到,经常是很大一个范围内的手机显示都在同一个位置
那如何实现精确定位啊???另外在室内测试为什么获取不到啊? 15 楼 LoveZhou 2012-01-16 335062868 写道 这个是用百度定位还是Google定位的呢?
google 14 楼 335062868 2012-01-16 这个是用百度定位还是Google定位的呢? 13 楼 LoveZhou 2012-01-13 JACKDG2010 写道 location 在真机上运行是null。
在真机上有可能是null,有获取不到的情况,gps定位不到,需要用network定位,network定位,位置不入gps准确,但是只要手机有信号就能定到,经常是很大一个范围内的手机显示都在同一个位置 12 楼 JACKDG2010 2012-01-13 location 在真机上运行是null。
获取位置信息分为三步:
1. 添加系统权限,来支持对LBS硬件的访问
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION">
</uses-permission>
2. 得到系统服务 的LocationManager 对象
LocationManager loctionManager;
String contextService=Context.LOCATION_SERVICE;
//通过系统服务,取得LocationManager对象
loctionManager=(LocationManager) getSystemService(contextService);
3. 得到位置提供器,通过位置提供器,得到位置信息,可以指定具体的位置提供器,也可以提供一个标准集合,让系统根据 标准匹配最适合的位置提供器,位置信息是由位置提供其提供的。
a. 通过GPS位置提供器获得位置(指定具体的位置提供器)
String provider=LocationManager.GPS_PROVIDER;
Location location = loctionManager.getLastKnownLocation(provider);
b. 使用标准集合,让系统自动选择可用的最佳位置提供器,提供位置
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);//高精度
criteria.setAltitudeRequired(false);//不要求海拔
criteria.setBearingRequired(false);//不要求方位
criteria.setCostAllowed(true);//允许有花费
criteria.setPowerRequirement(Criteria.POWER_LOW);//低功耗
//从可用的位置提供器中,匹配以上标准的最佳提供器
String provider = loctionManager.getBestProvider(criteria, true);
//获得最后一次变化的位置
Location location = loctionManager.getLastKnownLocation(provider);
最后将位置信息显示在TextView中,如图:
监听位置的变化
//监听位置变化,2秒一次,距离10米以上
loctionManager.requestLocationUpdates(provider, 2000, 10, locationListener);
//位置监听器
private final LocationListener locationListener = 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) {
//使用新的location更新TextView显示
updateWithNewLocation(location);
}
};
通过改变位置经纬度,程序会自动更新TextView显示的位置信息
- 大小: 17.5 KB
- 大小: 7.3 KB
- 大小: 7.8 KB
- 大小: 17.5 KB
- WhereAmI.rar (42 KB)
- 下载次数: 2206
- 查看图片附件
- 2010-12-26 15:50
- 浏览 25576
- 评论(31)
- 分类:移动开发
- 相关推荐
评论
31 楼 mvpstevenlin 2013-08-26 LoveZhou 写道 mvpstevenlin 写道 我在模拟器上运行,没有内容。请问博主,应该怎么用?
到设置中把gps定位打开试试
谢谢 博主 30 楼 LoveZhou 2013-05-06 pimkle 写道 2.3.3报错
google 可能已经不支持这种方式定位了,现在我在公司的项目里,用的是百度定位 29 楼 pimkle 2013-05-04 2.3.3报错 28 楼 czltx224 2013-04-28 不行啊,獲取不到 27 楼 LoveZhou 2013-03-25 xiexinjing 写道 附件不是源代码 是源代码,这个demo是很久以前的了,当时测试可以获取,现在google定位可能获取不到位置了,我在公司用百度的开放sdk获取的位置
26 楼 xiexinjing 2013-03-21 附件不是源代码 25 楼 yaoguanyuan 2013-02-08 我用这代码得到的数值怎么跟你上面的数据是一模一样的,为什么不是我当地的经纬度值 24 楼 zhaomingshen 2012-12-19 真个是没得结果,测试环境,三星PAD N8000,Android4.0,开启GPS,开启WLAN,插上手机卡,信号肯定是有的,有朋友晓得是怎么回事不呢? 23 楼 liangzedong 2012-12-17 获取经纬度两个数字,请问这两个数字有什么用呢?可以怎么用? 22 楼 zhouxiangang123 2012-11-22 很不错,我的也不能定位~
21 楼 min_you1314 2012-08-23 很不错,好像 不能定位
20 楼 LoveZhou 2012-05-03 mvpstevenlin 写道 我在模拟器上运行,没有内容。
请问博主,应该怎么用?
到设置中把gps定位打开试试 19 楼 mvpstevenlin 2012-05-02 我在模拟器上运行,没有内容。
请问博主,应该怎么用? 18 楼 wf1023 2012-04-05 感谢分享... 17 楼 LoveZhou 2012-03-16 han0917 写道 LoveZhou 写道 JACKDG2010 写道 location 在真机上运行是null。
在真机上有可能是null,有获取不到的情况,gps定位不到,需要用network定位,network定位,位置不入gps准确,但是只要手机有信号就能定到,经常是很大一个范围内的手机显示都在同一个位置
那如何实现精确定位啊???另外在室内测试为什么获取不到啊?
在室内有取不到的情况,还不太清楚如何精确定位,看很多软件,定位也都是定大体位置,都不精确 16 楼 han0917 2012-03-15 LoveZhou 写道 JACKDG2010 写道 location 在真机上运行是null。
在真机上有可能是null,有获取不到的情况,gps定位不到,需要用network定位,network定位,位置不入gps准确,但是只要手机有信号就能定到,经常是很大一个范围内的手机显示都在同一个位置
那如何实现精确定位啊???另外在室内测试为什么获取不到啊? 15 楼 LoveZhou 2012-01-16 335062868 写道 这个是用百度定位还是Google定位的呢?
google 14 楼 335062868 2012-01-16 这个是用百度定位还是Google定位的呢? 13 楼 LoveZhou 2012-01-13 JACKDG2010 写道 location 在真机上运行是null。
在真机上有可能是null,有获取不到的情况,gps定位不到,需要用network定位,network定位,位置不入gps准确,但是只要手机有信号就能定到,经常是很大一个范围内的手机显示都在同一个位置 12 楼 JACKDG2010 2012-01-13 location 在真机上运行是null。
更多相关文章
- android 获取当前设备的ip地址 mac地址 设备号 手机号 运营商信
- Android基础篇——创建一个Android工程
- android系统的优缺点
- 【Android测试工具】02. Android抓包解析全过程
- Android(安卓)编程下设置 Activity 切换动画
- 【移动开发】WIFI热点通信(一)
- Android——简介
- (转帖)Android重力感应Demo
- Android(安卓)studio如何用真机调试,只需两步