android实现gps定位位,需要怎么弄

定位何需流量,免费实现手机定位
百度地图最良心的地方在于&离线地图&功能,即使手机没有数据流量,只要开着GPS也能查看地图进行定位。如何下载和使用离线地图呢?
准备工作 操作之前请安装百度地图(下载地址) 在手机端直接导入离线地图 鉴于 iPhone 和安卓的百度地图在界面和操作上基本无异。下图以iPhone为例,为大家演示如何使用WiFi在线下载离线地图。
在电脑端导入
第一步(通用)前往百度手机地图官网下载离线地图包,地图是zip格式,为了方便,直接放在桌面。
第二步:导入到手机,分为 iPhone 和 安卓。 iPhone
将iPhone连接至电脑,打开iTunes。然后找下图操作。
之后打开百度地图,点击右下角的【我的】,然后点击【离线地图】,点击右上角的【导入】,此时软件会自动检测。在弹出的对话框中点击【确定】即可开始导入。
将安卓手机连接至电脑,打开USB存储模式,然后打开地图压缩包,将文件拖拽至手机存储卡的根目录(如果是MTP模式连接要先解压)。拷贝过程中提示&是否覆盖&,选择&是&,切记!。
打开手机端的百度地图,会自动导入(如果已经打开了百度地图要退出,退出方法:点击右下角&我的&&&退出地图&,然后重新打开一次)。
小编点评:对于小流量用户,比如只有上网才开启数据流量。使用百度地图的离线地图功能是非常方便的。出门前使用WiFi下载好城市地图。出门迷路了,只要打开百度地图就可以直接定位。现在百度地图的 5.0 版本也变得非常成熟了。
相关报道:
新闻热线:010-
责任编辑:仲猛
名企动态: |
标志着Windows迈出个性化计算的第一步……
本站特聘法律顾问:于国富律师
Copyright (C) 1997-4161人阅读
【Android】(23)
转载请注明出处:http://blog.csdn.net/smartbetter/article/details/今天给大家带来的是一篇关于GPS定位的文章,我们都知道,Android定位大致分为wifi定位,基站定位和GPS定位,今天我就带大家来看看GPS定位是什么玩意,通过本篇的学习,相信大家能很快上手GPS定位操作了。GPS定位是通过和GPS定位卫星通讯来进行定位的,可以使用最少数量的卫星实现全球定位,3颗,通过光波进行通讯,不需要联网,但是连接时间比较长,大致1分钟左右吧。好了,大致有个了解了,接下来我们开始进入GPS实践篇章吧,通过本篇的学习后,挑战一下一分钟实现GPS定位你自己的坐标吧,哈哈。一、定位的三种方式1.wifi定位,ip地址定位,通过ip地址进行查询实际地址;2.基站定位,信号塔,基站:手机通讯服务的设备 ,信号的格数决定了手机距离基站远近,精确度:几十米到几公里,精确度来自于基站的数量wifi定位和基站定位局限性:不能定位海拔;3.GPS定位,通过和GPS定位卫星通讯进行定位的,使用最少卫星实现全球定位,3颗,通过光波进行通讯,不需要联网,连接时间比较长,1分钟,比较费电,AGPS技术,通过联网来修正GPS定位坐标,AGPS技术需要联网,GPS不需要联网;二、定位的具体代码实现(了解整个流程)1.MainActivity.javapublic class MainActivity extends Activity {
private LocationManager locationM
private TextView textview1;
private MyLocationListener myLocationL
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textview1 = (TextView) findViewById(R.id.textview1);
//1.获取位置的管理者
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
//2.获取定位方式
//2.1获取所有的定位方式,true:表示返回所有可用定位方式
List&String& providers = locationManager.getProviders(true);
for (String string : providers) {
System.out.println(string);
//2.2获取最佳的定位方式
Criteria criteria = new Criteria();
criteria.setAltitudeRequired(true);//设置是否可以定位海拔,如果设置定位海拔,返回一定是gps
//criteria : 设置定位属性
//enabledOnly : true如果定位可用就返回
String bestProvider = locationManager.getBestProvider(criteria, true);
System.out.println(&最佳的定位方式:&+bestProvider);
myLocationListener = new MyLocationListener();
//provider : 定位的方式
//minTime : 定位的最小时间间隔
//minDistance : 定位最小的间隔距离
//LocationListener : 定位监听
locationManager.requestLocationUpdates(bestProvider, 0, 0, myLocationListener);
private class MyLocationListener implements LocationListener{
//当定位位置改变的调用的方法
//Location : 当前的位置
public void onLocationChanged(Location location) {
location.getAccuracy();//获取精确位置
location.getAltitude();//获取海拔
double latitude = location.getLatitude();//获取纬度,平行于赤道
double longitude = location.getLongitude();//获取经度,垂直于赤道
textview1.setText(&longitude:&+longitude+&
latitude:&+latitude);
//当定位状态发生改变的时候调用的方式
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
//当定位可用的时候调用的方法
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
//当定位不可用的时候调用的方法
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
protected void onDestroy() {
super.onDestroy();
locationManager.removeUpdates(myLocationListener);//关闭gps,但是高版本中规定打开和关闭gps必须由用户自己主观的去实现,代码已经不允许进行操作
}2.activity_main.xml&RelativeLayout xmlns:android=&/apk/res/android&
xmlns:tools=&/tools&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:paddingBottom=&@dimen/activity_vertical_margin&
android:paddingLeft=&@dimen/activity_horizontal_margin&
android:paddingRight=&@dimen/activity_horizontal_margin&
android:paddingTop=&@dimen/activity_vertical_margin&
tools:context=&.MainActivity& &
android:id=&@+id/textview1&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:text=&@string/hello_world& /&
&/RelativeLayout&3.需要添加的权限android.permission.ACCESS_MOCK_LOCATION : 模拟位置的权限,模拟器中必须添加,真机可加可不加
android.permission.ACCESS_FINE_LOCATION : 精确位置的权限,都必须添加
android.permission.ACCESS_COARSE_LOCATION : 大概位置的权限,都必须添加4.我们运行一下,运行效果如下三、验证坐标的准确度打开百度坐标拾取系统,进行坐标反查,(勾选坐标反查,百度搜索框中填入:经度,纬度),点击百度一下。注意:会有一定误差原因:是一种国家保密插件,也叫做加密插件或者加偏或者SM模组,其实就是对真实坐标系统进行人为的加偏处理,按照特殊的算法,将真实的坐标加密成虚假的坐标,而这个加偏并不是线性的加偏,所以各地的偏移情况都会有所不同。而加密后的坐标也常被人称为火星坐标系统。四、纠正坐标为真实坐标算法纠正五、定位移植到实际开发项目中1.问题:广播接受者中的onReceive方法执行时间不能超过10秒,超过了就不会再执行代码了,而GPS连接需要1分钟左右解决方案:a.开启一个服务,让该服务在后台运行,在服务中不断的进行定位操作,代码如下:public class GPSService extends Service {
private LocationManager locationM
private MyLocationListener myLocationL
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
public void onCreate() {
super.onCreate();
// 1.获取位置的管理者
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
// 2.获取定位方式
// 2.1获取所有的定位方式,true:表示返回所有可用定位方式
List&String& providers = locationManager.getProviders(true);
for (String string : providers) {
System.out.println(string);
// 2.2获取最佳的定位方式
Criteria criteria = new Criteria();
criteria.setAltitudeRequired(true);// 设置是否可以定位海拔,如果设置定位海拔,返回一定是gps
// criteria : 设置定位属性
// enabledOnly : true如果定位可用就返回
String bestProvider = locationManager.getBestProvider(criteria, true);
System.out.println(&最佳的定位方式:& + bestProvider);
myLocationListener = new MyLocationListener();
// provider : 定位的方式
// minTime : 定位的最小时间间隔
// minDistance : 定位最小的间隔距离
// LocationListener : 定位监听
locationManager.requestLocationUpdates(bestProvider, 0, 0,
myLocationListener);
private class MyLocationListener implements LocationListener{
//当定位位置改变的调用的方法
//Location : 当前的位置
public void onLocationChanged(Location location) {
location.getAccuracy();//获取精确位置
location.getAltitude();//获取海拔
double latitude = location.getLatitude();//获取纬度,平行
double longitude = location.getLongitude();//获取经度,垂直
//发送坐标给指定手机号码
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(&5556&, null, &longitude:&+longitude+& latitude:&+latitude, null, null);
//停止服务,但是必须得是startservice开启
stopSelf();
//当定位状态发生改变的时候调用的方式
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
//当定位可用的时候调用的方法
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
//当定位不可用的时候调用的方法
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
public void onDestroy() {
super.onDestroy();
locationManager.removeUpdates(myLocationListener);//关闭gps,但是高版本中规定打开和关闭gps必须由用户自己主观的去实现,代码已经不允许进行操作
}b.AndroidManifest.xml中配置该服务,并添加权限&service android:name=&com.moblie.location.GPSService&&&/service&c.在广播接受者中开启服务Intent gpsIntent = new Intent(context,GPSService.class);
context.startService(gpsIntent);
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:250173次
积分:3786
积分:3786
排名:第6791名
原创:60篇
评论:138条
阅读:19558
文章:28篇
阅读:110181
阅读:26104
阅读:13092
(3)(3)(3)(3)(1)(1)(7)(6)(19)(9)(9)(2)(1)手机是如何实现定位的?
我的图书馆
手机是如何实现定位的?
2014年,央视新闻报道了苹果手机能够将用户的位置信息精确到小数点后八位,如此高精度的定位让很多用户觉得很是害怕,这对个人隐私和人身安全造成了很大的威胁,那么手机是如何进行定位的呢?今天就来讲讲手机定位那些事。目前手机上主要使用的是三种定位方式,分别是GPS定位、基站定位、WI-FI定位。GPS定位说到GPS定位,首先要讲讲GPS的是怎么来的。GPS,即全球卫星定位系统(Global Positioning System)的缩写,是由美国建立的一个卫星导航定位系统。它可以为地球表面绝大部分地区(98%)提供准确的定位、测速和高精度的时间标准。全球定位系统可满足位于全球任何地方或近地空间的军事用户连续精确的确定三维位置、三维运动和时间的需要。该系统包括太空中的24颗GPS卫星(其中21颗为工作卫星,3颗为备用卫星);24颗卫星均匀分布在6个轨道平面上,即每个轨道面上有4颗卫星。卫星轨道面相对于地球赤道面的轨道倾角为55°,各轨道平面的升交点的赤经相差60°,一个轨道平面上的卫星比西边相邻轨道平面上的相应卫星升交角距超前30°。这种布局的目的是保证在全球任何地点、任何时刻至少可以观测到4颗卫星。卫星在发射到2万米的太空后,轨道位置数据都是确定的,用户在使用手机定位功能的时候,设备会发送定位请求给卫星,当处在手机上空的多个卫星向设备发送定位数据,这时手机接收到的就是来自卫星发出的经纬度数据,手机进行分析就可以知道自己所处的经纬度,从而得到位置信息。基站定位GPS定位由于精度问题,经常会发生定位误差大和定位时间长的问题,所以为了让手机定位精度更高定位时间更短,还需要辅助的定位技术,基站定位就可以解决。手机在网情况下,需要连接附近的通信基站,基站的坐标位置都是已知的,在手机需要定位的时候,手机就会根据收到的各个基站发来的信号参数进行分析,通过计算每个基站数据上传和下载的时间差,就能得到手机与各个基站的相对位置,从而就能知道自身位置。WI-FI定位除了上面两种定位方式外,有时候由于信号强度或者其他问题,也会发生定位不够精确的情况,所以现在人们又提出了利用WI-FI来定位的方法,主要原理就是在手机连接WI-FI之后,手机会根据所连接的WI-FI来获取为之信息,大家都知道,每个宽带都有独立的IP地址,这是在办理宽带的时候就在网络运营商数据库中备注的,所以手机在获取这些为之信息的时候就变得很容易,而且精准度也提高了很多。虽然有时候手机并没有连接WI-FI,但是手机在打开WI-FI功能后就会主动搜寻附近的WI-FI,这样手机也能够在不连接WI-FI的情况下也能获取位置信息。虽然现在手机定位精度随着各种技术的应用越来越高,用户的隐私信息安全也受到越来越多的挑战,所以在这里需要说的是,定位精准也不见得就是一件好事,合理使用定位软件,注重个人隐私信息需要时刻保持警惕的,毕竟网上出现因为位置信息泄露而造成人身安全遭受损害的事情也是不少的。【本文图片来自网络】
发表评论:
TA的最新馆藏盐城市盐马路小学盐马路小学管理系统&V2010
未指定参数!
如发现程序中存在问题,请及时和我们联系}

我要回帖

更多关于 java实现gps定位 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信