当前位置:K88软件开发文章中心编程语言APP编程Android01 → 文章内容

10.14 Android GPS初涉

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-12 6:28:13

本节引言:说到GPS这个名词,相信大家都不陌生,GPS全球定位技术嘛,嗯,Android中定位的方式一般有这四种:GPS定位,WIFI定准,基站定位,AGPS定位(基站+GPS);本系列教程只讲解GPS定位的基本使用!GPS是通过与卫星交互来获取设备当前的经纬度,准确度较高,但也有一些缺点,最大的缺点就是:室内几乎无法使用...需要收到4颗卫星或以上信号才能保证GPS的准确定位!但是假如你是在室外,无网络的情况,GPS还是可以用的!本节我们就来探讨下Android中的GPS的基本用法~1.定位相关的一些API1)LocationManager官方API文档:LocationManager这玩意是系统服务来的,不能直接new,需要:LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);另外用GPS定位别忘了加权限:<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>好的,获得了LocationManager对象后,我们可以调用下面这些常用的方法:addGpsStatusListener(GpsStatus.Listener listener):添加一个GPS状态监听器addProximityAlert(double latitude, double longitude, float radius, long expiration, PendingIntent intent):添加一个临界警告getAllProviders():获取所有的LocationProvider列表getBestProvider(Criteria criteria, boolean enabledOnly):根据指定条件返回最优LocationProvidergetGpsStatus(GpsStatus status):获取GPS状态getLastKnownLocation(String provider):根据LocationProvider获得最近一次已知的LocationgetProvider(String name):根据名称来获得LocationProvidergetProviders(boolean enabledOnly):获取所有可用的LocationProvidergetProviders(Criteria criteria, boolean enabledOnly):根据指定条件获取满足条件的所有LocationProviderisProviderEnabled(String provider):判断指定名称的LocationProvider是否可用removeGpsStatusListener(GpsStatus.Listener listener):删除GPS状态监听器removeProximityAlert(PendingIntent intent):删除一个临近警告requestLocationUpdates(long minTime, float minDistance, Criteria criteria, PendingIntent intent):通过制定的LocationProvider周期性地获取定位信息,并通过Intent启动相应的组件requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener):通过制定的LocationProvider周期性地获取定位信息,并触发listener所对应的触发器2)LocationProvider(定位提供者)官方API文档:LocationProvider这比是GPS定位组件的抽象表示,调用下述方法可以获取该定位组件的相关信息!常用的方法如下:getAccuracy():返回LocationProvider精度getName():返回LocationProvider名称getPowerRequirement():获取LocationProvider的电源需求hasMonetaryCost():返回该LocationProvider是收费还是免费的meetsCriteria(Criteria criteria):判断LocationProvider是否满足Criteria条件requiresCell():判断LocationProvider是否需要访问网络基站requiresNetwork():判断LocationProvider是否需要访问网络数据requiresSatellite():判断LocationProvider是否需要访问基于卫星的定位系统supportsAltitude():判断LocationProvider是否支持高度信息supportsBearing():判断LocationProvider是否支持方向信息supportsSpeed():判断是LocationProvider否支持速度信息3)Location(位置信息)官方API文档:Location位置信息的抽象类,我们可以调用下述方法获取相关的定位信息!常用方法如下:float getAccuracy():获得定位信息的精度double getAltitude():获得定位信息的高度float getBearing():获得定位信息的方向double getLatitude():获得定位信息的纬度double getLongitude():获得定位信息的精度String getProvider():获得提供该定位信息的LocationProviderfloat getSpeed():获得定位信息的速度boolean hasAccuracy():判断该定位信息是否含有精度信息4)Criteria(过滤条件)官方API文档:Criteria获取LocationProvider时,可以设置过滤条件,就是通过这个类来设置相关条件的~常用方法如下:setAccuracy(int accuracy):设置对的精度要求setAltitudeRequired(boolean altitudeRequired):设置是否要求LocationProvider能提供高度的信息setBearingRequired(boolean bearingRequired):设置是否要LocationProvider求能提供方向信息setCostAllowed(boolean costAllowed):设置是否要求LocationProvider能提供方向信息setPowerRequirement(int level):设置要求LocationProvider的耗电量setSpeedRequired(boolean speedRequired):设置是否要求LocationProvider能提供速度信息2.获取LocationProvider的例子运行效果图:由图可以看到,当前可用的LocationProvider有三个,分别是:passive:被动提供,由其他程序提供gps:通过GPS获取定位信息network:通过网络获取定位信息实现代码:布局文件:activity_main.xml:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/btn_one" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="获得系统所有的LocationProvider" /> <Button android:id="@+id/btn_two" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="根据条件获取LocationProvider" /> <Button android:id="@+id/btn_three" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="获取指定的LocationProvider" /> <TextView android:id="@+id/tv_result" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="10dp" android:background="#81BB4D" android:padding

[1] [2] [3]  下一页


10.14 Android GPS初涉