Android GPS定位实现

Android百度地图(一):百度地图定位sdk 类方法参数、定位原理详细介绍 本文主要针对百度定位sdk的api进行详细说明、注意事项,还会简单的谈一下定位的原理,目的是让读者真正了解定位,只有在完全了解的情况下,在开发中才会少走弯路,少踩坑。 一 定位简介 目前定位大致分为三种:gps定位、wifi定位、基站定位 gps定位:卫星定位,利用手机gps硬件定位,实现简单,手机本地就能实现定位,不需要和服务端进行交互。 //伪代码 LocationMana 阅读详情
 


  通过GPS取得的是一个Location类型的经纬度, 可以转换为两个Double 纬度和经度.

  纬度: 23.223871812820435

  纬度: 113.58986039161628

  首先创建一个TextView和两个Button

  mian.xml

 

    <TextView  
	android:id="@+id/text"
   	android:layout_width="fill_parent" 
    	android:layout_height="wrap_content"     />
    
    <Button
    	android:id="@+id/btnStart"
    	android:layout_width="wrap_content"
    	android:layout_height="wrap_content"
    	android:text="定位"			/>
    <Button
    	android:id="@+id/btnStop"
    	android:layout_width="wrap_content"
    	android:layout_height="wrap_content"
    	android:text="停止"			/>

然后添加主Activity的代码

Location 是存放经纬度的一个类型

LocationManager是位置管理服务类型

	private Button btnStart;
	private Button btnStop;
	private TextView textView;
	private Location mLocation;
 	private LocationManager mLocationManager;
   	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		btnStart = (Button)findViewById(R.id.btnStart);
		btnStop  = (Button)findViewById(R.id.btnStop);
		textView = (TextView)findViewById(R.id.text);
		btnStart.setOnClickListener(btnClickListener);	//开始定位
		btnStop.setOnClickListener(btnClickListener);	//结束定位按钮
	}

gpsIsOpen是自己写的查看当前GPS是否开启
getLocation 是自己写的一个获取定位信息的方法

mLocationManager.removeUpdates()是停止当前的GPS位置监听

public Button.OnClickListener btnClickListener = new Button.OnClickListener()
	{
		public void onClick(View v)
		{
			Button btn = (Button)v;
			if(btn.getId() == R.id.btnStart)
			{
				if(!gpsIsOpen())
				return;
			
  				mLocation = getLocation();
			
				if(mLocation != null)
					textView.setText("维度:" + mLocation.getLatitude() + "\n经度:" + mLocation.getLongitude());
				else textView.setText("获取不到数据");
			}
			else if(btn.getId() == R.id.btnStop)
			{
				mLocationManager.removeUpdates(locationListener);
			}
			
		}
	};

private boolean gpsIsOpen()
	{
		boolean bRet = true;
		
		LocationManager alm = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
		if(!alm.isProviderEnabled(LocationManager.GPS_PROVIDER))
		{
			Toast.makeText(this, "未开启GPS", Toast.LENGTH_SHORT)
			.show();
			
			bRet = false;
		}
		else 
		{
			Toast.makeText(this, "GPS已开启", Toast.LENGTH_SHORT)
			.show();
		}

		return bRet;
	}


判断当前是否开启GPS

private boolean gpsIsOpen()
	{
		boolean bRet = true;
		
		LocationManager alm = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
		if(!alm.isProviderEnabled(LocationManager.GPS_PROVIDER))
		{
			Toast.makeText(this, "未开启GPS", Toast.LENGTH_SHORT)
			.show();
			
			bRet = false;
		}
		else 
		{
			Toast.makeText(this, "GPS已开启", Toast.LENGTH_SHORT)
			.show();
		}

		return bRet;
	}

该方法获取当前的经纬度, 第一次获取总是null

后面从LocationListener获取已改变的位置

mLocationManager.requestLocationUpdates()是开启一个LocationListener等待位置变化

private Location getLocation()
	{
		//获取位置管理服务
		mLocationManager = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);

		//查找服务信息
		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 = mLocationManager.getBestProvider(criteria, true); //获取GPS信息

		Location location = mLocationManager.getLastKnownLocation(provider);
		
		mLocationManager.requestLocationUpdates(provider, 2000, 5, locationListener);
		
		return location;
	}


改方法是等待GPS位置改变后得到新的经纬度

private final LocationListener locationListener = new LocationListener()
	{
		public void onLocationChanged(Location location)
		{
			// TODO Auto-generated method stub
			if(location != null)
				textView.setText("维度:" + location.getLatitude() + "\n经度:" 
							+ location.getLongitude());
			else 	textView.setText("获取不到数据" + Integer.toString(nCount));
			
		}

		public void onProviderDisabled(String provider)
		{
			// TODO Auto-generated method stub
			
		}

		public void onProviderEnabled(String provider)
		{
			// TODO Auto-generated method stub
			
		}

		public void onStatusChanged(String provider, int status, Bundle extras)
		{
			// TODO Auto-generated method stub
			
		}
	};


android中实现GPS定位功能,Android GPS定位步骤 Android GPS定位步骤作者:李老师,为确定设备所在位置,需要进行以下步骤的操作。提供位置服务,需要获得LocationManager对象。使用LOCATION_SERVICE参数调用android.app.Activity.getSystemService()函数获取一个LocationManager实例。android.app.Activity.getSystemService()函数代... 阅读详情

相关推荐

android中关于gps定位的实现方式

其一,通过wifi定位。其实现原理是通过路由器绑定IP地址实现定位(android模拟器不支持此种定位方式),不建议在公共场合使用,安全系数极低。其二,通过3G、4G网络。其实现原理是通过基站信号塔网络信号中转实现(通过与手机最相邻的3个基站确定手机所在位置),精确度低,城市定位较准确(几十米到几百米),偏远山区定位度在几公里以内,谷歌命名为消极定位。其三,通过gps定位。即为卫星定位,空旷地域定位

a289509175的博客 3796

安卓中实现LocationManager定位服务

一. LocationManager: LocationManager系统服务是位置服务的核心组件,它提供了一系列方法来处理与位置相关的问题,比如查询上一个已知位置,定期更新设备的地理位置,或者当设备进入给定地理位置附近时,触发应用指定意图等; (A). 使用LocationManager需要以下过程; 1.获取LocationManager,它不能直接实例化: LocationManager lm = (LocationManager) getSystemService(Context.LOCAT

weixin_44548405的博客 5721

安卓定位技术详解:GPS与网络定位实现与优化

移动应用开发中,定位技术是实现LBS(基于位置服务)的核心基础。GPS定位通过卫星信号提供高精度位置数据,而网络定位则利用基站和WiFi热点实现快速响应。现代安卓开发推荐使用FusedLocationProviderClient智能整合多源定位数据,同时需要处理Android 6.0引入的运行时权限机制。在工程实践中,开发者常面临定位精度、耗电量和响应速度的平衡问题,通过设置合理的LocationRequest参数、实现超时处理机制和多源数据融合等技术手段可以显著优化定位性能。这些技术在导航、社交、O2O等

weixin_30629653的博客 394

LocationManager Android自动定位使用以及注意事项(个人)

if (locationListener == null) { locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); if (locationManager == null) { return; } Location lastlocation = locationManager .

L有只大大熊 1107

Android GPS定位功能实现详解

在移动互联网高速发展的今天,能够为用户提供准确的位置服务已经成为许多应用程序的基础功能。特别是在Android平台上,GPS(全球定位系统)定位功能的应用已变得不可或缺。本章将为您概述在Android系统中实现GPS定位功能的基础知识和重要性,从而帮助开发者了解整个定位服务的框架及其在移动应用中的价值。首先,我们将简要介绍GPS定位技术的基础原理,包括它如何在智能手机等移动设备上运作,并讨论为什么在现代移动应用中实现定位服务至关重要。

weixin_35734408的博客 2783

Delphi XE6中实现Android GPS定位的方法

Android权限系统是基于Linux的权限模型构建的,其设计目的是保护用户设备的安全与个人隐私。每个应用都运行在它自己的沙箱(sandbox)环境中,这个环境限制了它对系统资源的访问。当应用需要执行某些需要提升权限的操作时,比如访问联系人、电话、传感器等,它必须明确地向用户请求相应的权限。权限分为两类:普通权限和危险权限。普通权限是那些被认为不会对用户的安全或隐私构成风险的权限,通常不会干扰用户其他应用的正常运行,应用可以自动获得这些权限。

weixin_33193177的博客 888

Android中的几种定位方式调用详解

PASSIVE_PROVIDER 返回的位置是通过其他 providers 产生的,可以查询 getProvider() 方法决定位置更新的由来,需要 ACCESS_FINE_LOCATION 权限,但是如果未启用 GPS,则此provider 可能只返回粗略位置匹配;上面是android自带的定位方式,我们还可以获取一些原始信息(比如基站信息、wifi信息),通过公开的接口来获取位置信息。但是我们还可以通过其它方式获取位置信息,这篇文章就详细的讲解一下在android中几种获取定位的方式。

sig321的专栏 6645

Android GPS定位的实现

使用Android的GPS进行定位,主要是获致了定位信息的,至于在地图上实现,这个没有,在下个版中会有!

使用LocationManager获取定位信息

最近项目用到定位,获取经纬度的需求,在项目中使用了百度的地图的定位功能,获取到了定位信息,已经详细的地址,国家,省份,城市等,因为要用到百度的其他功能就引入的百度的包,(这里就不详细介绍百度定位了,官方文档都特别详细!),我个人感觉如果只是单独使用定位功能,我们只需要使用Android自带的就好,下面就我个人了解到介绍一下定位管理器LocationManager    使用LocationMana...

itdream88的博客 4297

Android GPS 定位的实现

Android GPS 定位的实现 使用Google地图 Android下实现GPS定位服务

一张图搞懂 Android GPS框架的实现流程

一张图搞懂 Android GPS框架的实现流程,主要代码的实现流程

android中实现GPS定位功能,Android中实现GPS定位的简单例子

今天弄了一个多小时,写了一个GPS获取地理位置代码的小例子,包括参考了网上的一些代码,并且对代码进行了一些修改,希望对大家的帮助。具体代码如下: 要实用Adnroid平台的GPS设备,首先需要添加上权限,所以需要添加如下权限:具体实现代码如下:首先判断GPS模块是否存在或者是开启:private void openGPSSettings() {LocationManager alm = (Loc...

weixin_31437717的博客 1031

Android中实现GPS定位的简单例子

主要介绍了Android中实现GPS定位的简单例子,例子逻辑清晰,但相对简单了些,需要的朋友可以参考下

gps定位技术android,A-GPS定位Android简单实现

以前都是听别人说,真到自己的身上才叫着急,不过这个很有实力的 他的Q <7787 05056>以前都是听别人说,真到自己的身上才叫着急,不过这个很有实力的 他的Q <7787 05056>以前都是听别人说,真到自己的身上才叫着急,不过这个很有实力的 他的Q <7787 05056>以前都是听别人说,真到自己的身上才叫着急,不过这个很有实力的 他的Q <77...

weixin_29055137的博客 241

2025年一篇解决Windows11安装医学图像处理工具-FSL(各种问题解决,过程详细,小白轻松安装)

2025年一篇帮你解决FSl安装所有问题,包括环境安装、使用说明、常见问题,过程简单易懂,小白轻松安装。

weixin_52145255的博客 2524

Linux PE vs WinPE:为何麒麟系统修复需要专属工具?

本文探讨了Linux PE与WinPE在修复国产麒麟系统时的关键差异,强调了专属工具的必要性。通过分析文件系统兼容性、引导修复、硬件适配和安全合规等方面,揭示了通用PE工具的局限性,并提供了构建专属修复工具链的实用方案,确保系统维护的高效与安全。

weixin_29290863的博客 1059

Android系统GPS定位实现

一、定位方式简介 定位基本分为三种方式,特点如下: 1.wifi定位:IP地址定位,根据ip地址查询实际的地理位置,因为动态获取ip的操作,定位不准确2.基站定位:根据基站(信号塔)的个数以及手机与基站的距离来实现定位,准确性取决于基站的个数3.GPS定位:通过光波的形式和Gps定位卫星通讯,返回经纬度坐标,连接时间比较长,在空旷的地方定位比较流畅,不需要联网,agps:通过网络修正gps定位...

RYshuang的博客 1万+

halcon 查找圆形

先找到大概位置进行拟合,然后再以拟合出的位置作为测量的大概位置进行找圆;

qq_59062726的博客 734

Android实现百度离线地图+gps定位

android实现百度离线地图+gps定位关于效果图第一步,添加百度地图jar包及引用第二步,下载离线地图功能第三步,GPS定位+地图展示 关于   这段时间,因为公司项目需求,要在内网下实现地图展示及个人定位上报功能,一开始接到这个需求比较懵逼也以为实现起来很简单,结果…我以为的离线地图和实际的百度提供的离线地图功能相差甚远。一开始是想着将离线地图通过后台copy至接口或者资源复制,但是因为种种原因离线地图没显示出来,现在想来应该是地图加载页面写的有问题或者就是缓存问题,这个等有时间研究下吧,项目太着急,

Tobey_r1的博客 4707

Cadence 批量一次性修改title 页码标题

本文介绍如何在Cadence软件中对DSN文件进行标题栏的批量编辑操作,包括选择编辑对象、使用快捷键打开属性面板以及如何修改标题、页码等关键信息。

tianpu2320959696的博客 977

k3s cpu load 和 cpu 使用率很高处理

在这期间还执行过缩减 sqlite3 数据库操作,不知道是哪个操作起了作用,亦或者两个操作有影响,删除 ns 促进了数据库缩减的执行(没删除之前数据库缩减不成功,db文件大小未减小,但不确定是不是执行完 VACUUM 之后需要时间 db 文件才会减小,或者是因为删除了 ns 才导致其减小),再或者是两个操作都起了作用。kubectl get ns 发现有很多卡在删除状态的 ns。k3s 官网关于这个问题的谈论。执行如下脚本删除掉这些 ns。有人详细说过这个问题。

weixin_40548182的博客 683
上一篇: 自定义 Tabhost 样式
下一篇: Android ExpandableListView 展开列表控件(手机QQ好友列表)
克雷斯
博客等级 码龄17年 36粉丝 42原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值