位置: 编程技术 - 正文

Android笔记三十二.Android位置服务及核心API(android 笔记软件推荐)

编辑:rootadmin
一、位置服务概念1.位置服务 位置服务(Location-Based Services,LBS),又称定位服务或基于位置的服务,融合了GPS定位、移动通信、导航等多种技术,提供了与个空间位置相关的综合应用服务。2.GPS与网络位置提供器 Android平台支持提供位置服务的API,可以利用GPS(Global Positioning System,全球定位系统)和Network Location Provider(网络位置提供器)来获得用户的位置。 (1)GPS相对来说更精确,但它只能在户外工作,很费电,并且不能像用户期望的那样立即就能返回位置信息; (2)Android的网络位置提供器使用手机发射塔和WI-FI信号来判断用户位置,在室内外都能工作、响应速度快、并且更加省点。如果想在应用程序中获得用户的位置,可以同时使用GPS和网络位置提供器,或者其中一种。通过定位服务可以获得当前设备的地理位置,应用程序可以定时请求更新设备当前的地理定位信息,从而达到实时监测的功能。3.基本框架二、提供位置服务的核心API Android为支持位置服务,提供了android.location包,该包中包含了与位置信息密切相关的了和接口,主要有:LocationManager、LocationProvider、Location、LocationListener。1.LocationManager类(1)功能 定位管理者。该类是访问Android系统位置服务的入口,所有定位相关的服务、对象都将由该类的对象来产生。和其他服务一样,程序不能直接创建LocationManager对象,而是通过Context的getSystemService()方法来获取对象:LocationManager locMg=getSystemService(Context.LOCATION_SERVICE);(2)LocationManager中的常用方法 ★ public String getBestProvider(Criteria criteria,boolean enabledOnly):根据指定条件返回最优的LocationProvider。其中criteria表示过滤条件,enabledOnly表示是否要求处于启用状态。 ★public Location getLastKnowLocation(String provider):根据LocationProvider获取最近一次已经的Location对象。其中provider表示提供上次位置的LocationProvider名称。 ★public LocationProvider getProvider(String name):根据名称返回LocationProvider对象。 ★public List<String> getProviders(boolean enabledOnly):获取所有可用的LocationProvaider。 ★public voidrequestLocationUpdates(String provider,long minTime,float minDistance,LocationListener listener):通过指定的LocationProvider周期性地获取定位信息,并触发listener所对应的触发器。 ★public void addProximityAlert(double latitude,double longitude,float radius,long expiration,PendingIntent intent):添加一个临近警告。即不断监听手机的位置,当手机与固定点的距离小于指定范围时,系统将会触发相应事件,进行处理。其中,latitude指定中心点的经度,longitude指定中心点的纬度,指定一个半径长度,expiration指定经过多少毫秒后该临近警告就会过期失效(-1指定永不过期),intent指定临近该固定点时触发该intent对应的组件。 ★public void requestLocationUpdates(String provider,long minTime,float minDistance,PendingIntent intent):通过指定的LocationProvider周期性地获取定位信息,并通过intent启动相应的组件进行事件处理,provider表示LocationProvider的名称,minTime表示每次更新的时间间隔,单位为毫秒,minDistance表示更新的最近位置,单位为米,intent每次更新时启动的组件。★public void requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener) :通过指定的LocationProvider周期性地获取定位信息,当位置信息变化时回调LocationListener监听器的onLocationChanged(Location location)方法。其中, minTime为多少时间间隔更新一下位置信息;minDistance为多少距离间隔更新一下位置信息。2.LocationProvider类(1)功能 定位提供者。该类是对定位组件的抽象表示,用来提供定位信息,能够周期性的报告设备的地理位置,Android中支持多种LocationProvider,它们以不同的技术提供设备的当前位置,区别在于定位的精度、速度和成本等方面。(2)常用LocationProvider种类※network:由LocationManager.NETWORK_PROVIDER常量表示,代表通过网络获取定位信息的 Location Provider对象;※gps:由LocationManager.GPS_PROVIDER常量表示,代表通过GPS获取定位信息的 LocationProvider对象。(3)LocationProvider中的常用方法★int getAccuracy():返回该LocationProvider的精度;★int getPowerRequirement():返回LocationProvider对电量的要求;★String getName():返回该LocationProvider的名称;★boolean hasMonetaryCost():判断该LocationProvider是否支持方向信息;★boolean supportsSpeed():判断该LocationProvider是否支持速度信息。3.Location类功能:该类代表位置信息的抽象类,通过Location可获取定位信息的精度、高度、方向、纬度、经度、速度以及改位置的LocationProvider等信息。4.LocationListener接口(1)功能 该接口用于监听定位信息的监听器,必须在定位管理器中注册该对象,这样在位置发生变化的时候就会触发相应的方法进行事件处理。(2)常用方法★public abstract void onLacationChanged(Location location):位置发生改变时回调该方法;★public abstract void onProviderDisabled(String provider):Provider禁止时回调该方法;★public abstract void onProviderEnabled(String provider):Provider启动时回调该方法;★public abstract void onStatusChanged(String provider,int status,Bundle extras):当Provider状态发生变化时回调该方法。三、获取位置信息的一般步骤1.通过位置服务获取系统的LocationManager对象;2.使用LocationManager,通过指定LocationProvider来获取Location对象,表示定位信息;3.从Location对象中获取位置信息。4.调用LocationManager的requestLocationUpdates方法获取实时位置信息示例:LocationManager locmgr=(LocationManager) getSystemService(Context.LOCATION_SERVICE); Location loc=locmgr.getLastKnownLocation(LocationManager.GPS_PROVIDER); double longitudeValue=loc.getLongitude(); locmgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, , 8, new LocationListener() { ........ public void onLocationChanged(Location location) { showInfo( location); //当位置信息发生变化时,回调该方法 } }); 四、源码实战1.功能:(1)实时获取位置的经度与纬度信息;(2)设置指定区域警示:当进入指定范围后提示"您已经进入广州";离开指定范围后提示"您已离开广州"。2.源码(1)src/../LocationTest.java a.获取LocationManager位置管理器对象;通过该对象指定LocationProvider来获取Location对象; b.调用Location中的方法获取Location对象表示的位置信息; c.调用LocationManager的requestLocationUpdates方法实时更新显示的位置信息; d.调用LocationManager的addProximityAlert方法设置靠近警示,并发送一个广播给指定的广播接收器;package com.example.mylocation; import android.app.Activity; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.widget.TextView; public class LocationTest extends Activity { private TextView location; private LocationManager locmgr; private Location loc; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); location = (TextView)findViewById(R.id.location); //1.获取LocationManager管理器(对象) locmgr=(LocationManager) getSystemService(Context.LOCATION_SERVICE); //2.使用Locationmanager,通过指定LocationProvider来获取Location对象,表示定位信息; loc=locmgr.getLastKnownLocation(LocationManager.GPS_PROVIDER); //3.从Location表示的定位信息中获取定位细节并更新 showInfo(loc); locmgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, , 8, new LocationListener() { public void onStatusChanged(String provider, int status, Bundle extras) { } public void onProviderEnabled(String provider) { } public void onProviderDisabled(String provider) { } public void onLocationChanged(Location location) { showInfo( location); //当位置信息发生变化时,回调该方法 } }); //4.靠近区域警示 double latitude=.; double longitude=.; int radius=; Intent intent=new Intent("com.jiangdongguo.broadcast"); PendingIntent pi = PendingIntent.getBroadcast(this, -1, intent, 0); //发送一个广播到指定接收器 locmgr.addProximityAlert(latitude, longitude, radius, -1, pi); //设置指定范围警告 } public void showInfo(Location loc) { String err="未获取到位置信息."; if(loc!=null) { StringBuffer sb = new StringBuffer(); //可变字符串缓存 sb.append("经度:"&#;loc.getLongitude()&#;"n"); sb.append("纬度:"&#;loc.getLatitude()); location.setText(sb.toString()); } else { System.out.println(err); } } }(2)src/.../AlertBroadcast.java功能:广播接收器子类,用于响应发送过来的广播,并根据intent传过来的信息作出响应。package com.example.mylocation; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.location.LocationManager; import android.widget.Toast; public class AlertBroadcast extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { //获取intent传递过来的信息,判断是否进入(默认为false) Boolean flag = intent.getBooleanExtra(LocationManager.KEY_PROXIMITY_ENTERING, false); String result=""; if(flag) { result="您已经进入广州!"; } else { result="您已离开广州!"; } Toast.makeText(context, result, Toast.LENGTH_SHORT).show(); } } 效果演示:转载请标明出处:

推荐整理分享Android笔记三十二.Android位置服务及核心API(android 笔记软件推荐),希望有所帮助,仅作参考,欢迎阅读内容。

Android笔记三十二.Android位置服务及核心API(android 笔记软件推荐)

文章相关热门搜索词:android记笔记软件,安卓端笔记软件,安卓系统记笔记,安卓笔记软件squid使用方法,android 笔记app,安卓笔记软件squid使用方法,android 笔记软件推荐,android 笔记app,内容如对您有帮助,希望把文章链接给更多的朋友!

【JNI】开发流程6步骤 JNI开发流程主要分为以下6步:1、编写声明了native方法的Java类2、将Java源代码编译成class字节码文件3、用javah-jni命令生成.h头文件(javah是jdk自带的一个

android javascript 混淆配置。 1,定义javascrip接口对象。privateclassJsApi{@JavascriptInterfacepublicvoidonLoginCallback(Stringaccount,Stringtoken){GLogger.e(lich,fromjsp:account,token);//sendbroadcasttouiprocess.Intentit=n

AlertDialog自定义布局 AlertDialog自定义布局activity调用privatevoidshowAlertDialog(){finalAlertDialogUtildialog=newAlertDialogUtil(this,false,null);//false代表必须点击确定其它不可以点击不消失,true

标签: android 笔记软件推荐

本文链接地址:https://www.jiuchutong.com/biancheng/378198.html 转载请保留说明!

上一篇:Java中的锁(java中的锁机制)

下一篇:【JNI】开发流程6步骤(开发流程和步骤)

  • 含税价和不含税计算公式
  • 增值税进项税额加计抵减会计处理
  • 年平均资金占用额计算公式
  • 金税盘证书口令被锁死自己能解吗
  • 失控发票补税可以抵扣吗
  • 购买旧资产如何入账
  • 固定资产报废如何做账务处理
  • 定货合同有法律效力吗?
  • 银行承兑个人可以接受吗
  • 企业所得税弥补亏损怎么算
  • 冲减预提费用
  • 营改增后哪些进项不能抵扣
  • 为什么算除税价不算税金
  • 建筑企业1%承包承租个人所得税的会计分录
  • 车辆租赁费用标准
  • 代购要交税么
  • 防伪税控服务费减免文件
  • 2021年保险营销员
  • 上海地方教育费附加减半征收2018
  • 企业所得税可以弥补几年亏损
  • 小规模查账征收增值税怎么算
  • 应交增值税有哪些
  • 个体户流水过大怎么避税
  • 如何使用u盘安装软件
  • 个体户工商年报异常怎么解除
  • php 字符串函数
  • 实收资本没到位会计怎么处理
  • 固态硬盘什么牌子性价比高
  • 招行网银专业版怎么登陆
  • 工资福利支出包括五险一金吗
  • 黄金旧料卖出收据怎么写
  • php常用数组函数和用法
  • laravel怎么用
  • 内外参标定
  • 作废发票需要拿回执单吗
  • js数组常用方法有哪几种
  • IDEA 2022专业版创建Java Web项目(保姆式小白讲义,强烈建议入手!)
  • 车间管理人员为什么是制造费用
  • 进项未认证但已开票怎么办
  • 工会经费计税依据比例
  • 机关事业单位体育协会举办体育赛事活动应当
  • SQL Server 2008用'sa'登录失败,启用'sa'登录的解决办法
  • mysql@变量
  • 企业购入固定资产发生的运输费,装卸费
  • 月报表该怎么做表格
  • 支付的物业费如何做账
  • 有差价的商品发票怎么开
  • 带有折扣的增值税专用发票图片
  • 应收账款应付账款借贷方都表示什么
  • 施工企业简易计税的依据
  • 向银行借的款属于什么会计要素
  • 原始凭证错误的更正方法
  • 委托加工后直接对外销售消费税
  • 资产负债表和利润表的利润不一致
  • 公司买东西算什么费用
  • mysql5.7.30安装
  • ARP欺骗攻击原理
  • ubuntu系统怎么设置不锁屏
  • 惠普hp笔记本电脑
  • smsvchost.exe是什么文件 电脑中Svchost.exe病毒解决办法
  • 怎样打开windows设置页面
  • win7更改win10系统要怎么更改
  • win8管理工具在哪里
  • win10修改启动
  • win10rs2是哪个版本
  • gcasSWUpdater.exe是什么进程 有什么作用 gcasSWUpdater进程查询
  • linux系统坏了怎么恢复数据
  • win7使用技巧
  • win7系统怎么设置屏保图片
  • win7连接路由器设置
  • rsa加解密过程是什么
  • perl正则表达式
  • python 入门
  • jquery移动div到另一个div中
  • linux shell 输出到文件
  • 简述shell命令提示符的组成
  • Jquery实现$.fn.extend和$.extend函数
  • 房产税纳税义务终止
  • 税务清查工作总结
  • 税务申报如何网上申报
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设