获取LocationProvider
Android的定位信息由LocationProvider对象来提供,该对象代表一个抽象的定位组件。在开始编程之前,需要先获得LocationProvider对象。
一、获取所有可用的LocationProvider
LocationManager提供了一个getAllProviders()方法来获取系统所有可用LocationProvider,下面的示例程序将可以列出系统所有的LocationProvider,
import java.util.List;
import android.location.LocationManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class AllProviderTest extends Activity {
ListView providers;
LocationManager lm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_all_provider_test);
providers = (ListView) findViewById(R.id.providers);
//获取系统的LocationManager对象
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
//获取系统所有的LocationProvider的名称
List<String> providerNames = lm.getAllProviders();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,providerNames);
//使用ListView来显示所有可用的LocationProvider
providers.setAdapter(adapter);
}
}
二、通过名称获得指定LocationProvider
程序调用LocationManager的getAllProviders()方法获取所有LocationProvider时返回的是List<String>集合,集合元素为LocationProvider的名称,为了获取实际的LocationProvider对象,可借助于LocationManager的LocationProvider getProvider(String name)方法。
例如以下代码:
//获取基于GPS的LocationProvider
LocationProvider locProvider lm.getProvider(LocationManager.GPS_PROVIDER);
三、根据Criteria获取LocationProvider
前面的程序调用LocationManager的getAllProviders()方法返回了系统所有可用的LocationProvider,但大部分时候,应用程序可能希望得到符合指定条件的LocationProvider,这就需要借助于LocationManager的getBestProvider(Criteria criteria , boolean enabledOnle)方法来获取。
上面的方法中Criteria就代表一个“过滤”条件,该方法将只返回符合该Criteria的LocationProvider,Criteria提供如下常用的方法来设置条件:
1、setAccuracy(int accuracy):设置对LocationProvider的精度要求。
2、setAltitudeRequired(boolean altitudeRequired):设置要求LocationProvider能提供高度信息。
3、setBearingRequired(boolean bearingRequired):设置要求LocationProvider能提供方向信息。
4、setCostAllowed(boolean costAllowed):设置要求LocationProvider是否免费。
5、setPowerRequired(int level):设置要求LocationProvider的耗电量。
6、setSpeedRequired(boolean speedRequired):设置要求LocationProvider能提供速度信息。
下面的程序示范了如何获取系统中免费的LocationProvider,并且该LocationProvider必须能提供高度信息、速度信息等。
import java.util.List;
import android.location.Criteria;
import android.location.LocationManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class FreeProviderTest extends Activity {
ListView providers;
LocationManager lm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_free_provider_test);
providers = (ListView) findViewById(R.id.providers);
//获取系统的LocationManager对象
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
//创建一个LocationProvider的过滤条件
Criteria cri = new Criteria();
//设置要求LocationProvider必须是免费的
cri.setCostAllowed(false);
//设置要求LocationProvider能提供高度信息
cri.setAltitudeRequired(true);
//设置要求LocationProvider能提供方向信息
cri.setBearingRequired(true);
//获取系统所有符合条件的LocationProvider的名称
List<String> providerNames = lm.getAllProviders();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, providerNames);
//使用ListView来显示所有可用的LocationProvider
providers.setAdapter(adapter);
}
}
上面的程序中粗体字代码创建了一个Criteria对象,并通过设置了LocationProvider必须满足的条件,运行该程序,即可列出所有符合Criteria条件的LocationProvider。
获取LocationProvider的更多相关文章
- GPS(1)核心API及3种列出LocationProvider的方法
GPS的常用API Android SDK为GPS提供了很多API,其中LocationManager类是这些API的核心.所有与GPS相关的操作都由LocationManager对象及其派生的对象完 ...
- Android GPS应用开发
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5715879.html GPS定位系统由三部分组成,即由GPS卫星组成的空间部分,若干地面组成的控制部分和普通 ...
- 支持GPS的核心API
Android为GPS功能支持专门提供了一个LocationManager类,它的作用于TelephonyManager.AudioManager等服务类的作用相似,所有GPS定位相关的服务.对象都将 ...
- Android中GPS类及方法简介
GPS是Global Positioning System(全球定位系统)的简称,它的作用就是为全球的物体提供定位功能.GPS定位是一门高新技术,但对于Android程序员来说,开发GPS功能的应用程 ...
- Android开发权威指南(第2版)新书发布
<Android 开发权威指南(第二版)>是畅销书<Android开发权威指南>的升级版,内容更新超过80%,是一本全面介绍Android应用开发的专著,拥有45 章精彩内容供 ...
- 18、GPS技术
GPS核心API Android SDK为GPS提供了很多API,其中LocationManager类是这些API的核心.LocationManager是一个系统服务类,与TelephonyManag ...
- Android中GPS简介及其应用
GPS是Global Positioning System(全球定位系统)的简称,它的作用就是为全球的物体提供定位功能.GPS定位是一门高新技术,但对于Android程序员来说,开发GPS功能的应用程 ...
- (转)android mock location
android mock location 2014-01-26 我来说两句 来源:党玉涛 收藏 我要投稿 现在软件市场上有很多可以改变手机地理位置的软件,更改后打开微信就可以随意定位 ...
- Android之 GPS学习笔记
========================================GPS:全球定位系统 GPS由三部分组成:GPS卫星组成的空间部分,若干地面组成的控制站,用户手中的接收机.Androi ...
随机推荐
- Spark分析笔记
前言 第一章 Spark简介 本章将对Spark做一个介绍,以及它的一些基本概念 Spark是什么? Spark生态系统BDAS Spark架构 Spark分布式与单机多核架构的异同 Spark的企业 ...
- php中curl模拟浏览器来传输数据
cURL可以使用URL的语法模拟浏览器来传输数据, 因为它是模拟浏览器,因此它同样支持多种协议,FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以 ...
- NaN
not a number 全称, 任何数/0 js会出现NaN alert(NaN==NaN); // false isNaN(NaN); // true alert(isNaN(10)); // f ...
- WebClient与WebRequest差异
WebRequst的使用 WebClient和HttpWebRequst是用来获取数据的2种方式,在我的这篇数据访问(2)中主要是讲的WebClient的使用,一般而言,WebClient更倾向于“按 ...
- [充电]C++ string字符串替换
//C++ 第一种替换字符串的方法用replace()|C++ 第二种替换字符串的方法用erase()和insert()[ C++string|C++ replace()|C++ erase()|C+ ...
- 2016.8.16 Java培训第一天
1. 十进制转换二进制 31/2=15余1 15/2=7余1 7/2=3余1 3/2=1余1 31的二进制结果为11111 35/2=17余1 17/2=8余1 8/2=4余0 4/2=2 ...
- OWASP top10
PhishTank 是互联网上免费提供恶意网址黑名单的组织之一,它的黑名单由世界各地的志愿者提供,且更新频繁. 1.XSS 1.1. XSS简介 跨站脚本攻击,英文全称是Cross Site Scri ...
- Java开发中经典的小实例-(比较输入数值的最大值、最小值和平均值)
//输入数字个数来产生数字并且比较大小 import java.util.Scanner;public class Test1 { public static void main(String ...
- 读《编写可维护的JavaScript》第一章总结
第一章 基本的格式化 1.4 ① 换行 当一行长度到达了单行最大的字符限制时,就需要手动将一行拆成俩行.通常我们会在运算符后换行,下一行会增加俩个层级的缩进. // 好的做法: 在运算符后换行,第二行 ...
- 关于Python中输出中文的一点疑问
#encoding=gb2312 import urllib import re def getHtml(url): page = urllib.urlopen(url) html = page.re ...