Android中GPS简介及其应用
GPS是Global Positioning System(全球定位系统)的简称,它的作用就是为全球的物体提供定位功能。GPS定位是一门高新技术,但对于Android程序员来说,开发GPS功能的应用程序又十分简单,Android为此提供LocationManager类及其他几个辅助类,开发人员可以非常方便地开发出GPS应用。在程序中,通过getSystemService获得LocationManager对象之后,就可以调用LocationManager提供的常用方法:
在上面方法中涉及另一个重要的类:LocationProvider(定位提供者),就是GPS定位组件的抽象表示,它提供了如下方法来获取定位组件的相关信息:
另外,GPS支持还涉及到另一个类:Location,它是一个代表位置信息的抽象类,它提供如下方法来获取定位信息:
另外,在获取LocationProvider时,往往需要加上过滤条件,即Criteria,Criteria提供如下方法来设置过滤条件:
使用上面三个类及其提供的方法就可以获取GPS定位信息了,步骤如下:
1、获取系统的LocationManager对象。
2、使用LocationManager,通过指定LocationProvider来获取定位信息,定位信息由对象Location表示。
3、从Location对象中获取定位信息。
下面用一个简单的示例来演示,根据不同方式获取LocationProvider定位信息,代码如下:
Activity:
package com.home.locationprovider; import java.util.ArrayList;
import java.util.List; import android.app.Activity;
import android.content.Context;
import android.location.Criteria;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView; public class LocationProviderTestActivity extends Activity {
private ListView listView;
private LocationManager locationManager;
// 存放LocationProvider名称的集合
private List<String> providerNames = new ArrayList<String>();
private ArrayAdapter<String> adapter; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
listView = (ListView) findViewById(R.id.main_lv_show);
// 获取系统的LocationManager对象
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
} public void click(View v) {
if (v.getId() == R.id.main_btn_get_all) {
// 获取系统所有的LocationProvider的名称
providerNames = locationManager.getAllProviders();
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, providerNames);
listView.setAdapter(adapter);
}
if (v.getId() == R.id.main_btn_get_criteria) {
// 创建一个LocationProvider的过滤条件
Criteria criteria = new Criteria();
// 设置要求LocationProvider必须使免费的
criteria.setCostAllowed(false);
// 设置要求LocationProvider能提供高度信息
criteria.setAltitudeRequired(true);
// 设置要求LocationProvider能提供方向信息
criteria.setBearingRequired(true);
// 获取系统所有符合条件的LocationProvider的名称
providerNames = locationManager.getProviders(criteria, true);
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, providerNames);
listView.setAdapter(adapter);
}
if (v.getId() == R.id.main_btn_get_byname) {
providerNames.clear();
// 根据名称获取指定的LocationProvider的名称
providerNames.add(locationManager.getProvider(
LocationManager.GPS_PROVIDER).getName());
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, providerNames);
listView.setAdapter(adapter);
}
}
}
布局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/main_btn_get_all"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click"
android:text="获取所有LocationProvider" /> <Button
android:id="@+id/main_btn_get_criteria"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click"
android:text="根据条件获取LocationProvider" /> <Button
android:id="@+id/main_btn_get_byname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click"
android:text="获取指定的LocationProvider" /> <ListView
android:id="@+id/main_lv_show"
android:layout_width="match_parent"
android:layout_height="wrap_content" /> </LinearLayout>
权限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
附上图片效果:
Android中GPS简介及其应用的更多相关文章
- Android中GPS定位的简单应用
在Android中通过GPS获得当前位置,首先要获得一个LocationManager实例,通过该实例的getLastKnownLocation()方法获得第一个的位置,该方法的说明如下: void ...
- Android中GPS类及方法简介
GPS是Global Positioning System(全球定位系统)的简称,它的作用就是为全球的物体提供定位功能.GPS定位是一门高新技术,但对于Android程序员来说,开发GPS功能的应用程 ...
- Android中如何监听GPS开启和关闭
转自 chenming 原文 Android中如何监听GPS开启和关闭 摘要: 本文简单总结了如何监听GPS开关的小技巧 有时需要监听GPS的开关(这种需求并不多见).实现的思路是监听代表 GPS ...
- Android中的 init.rc文件简介
init.rc脚本是由Android中linux的第一个用户级进程init进行解析的. init.rc 文件并不是普通的配置文件,而是由一种被称为"Android初始化语言"(An ...
- android中SELINUX规则分析和语法简介【转】
本文转载自:https://blog.csdn.net/LoongEmbedded/article/details/62430039 1. SELINUX是可以理解为一种Android上面的安全机制, ...
- Android中SELinux的TE简介【转】
转自:https://blog.csdn.net/murphykwu/article/details/52457667 selinux的概念如上一篇链接所示: http://www.cnblogs.c ...
- Android中三种常用解析XML的方式(DOM、SAX、PULL)简介及区别
XML在各种开发中都广泛应用,Android也不例外.作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能.今天就由我向大家介绍一下在Android平台下几种常见的XML解 ...
- android中SELINUX规则分析和语法简介
1. SELINUX是可以理解为一种android上面的安全机制,是有美国国家安全局和一些公司设计的一个针对linux的安全加强系统我们可以通过配置SELINUX的相关policy,来定制自己的手机的 ...
- Android中后台的劳动者“服务”
前言 作为四大组件之一的Service,想必不少开发者都是了解的,那具体熟悉吗?是不是对Service中的每个知识点是否了解,它与Activity的关系又是什么样的,我们所理解的后台服务跟Servic ...
随机推荐
- 一次http完整的请求tcp报文分析
一次http请求的报文分析 数据包如下: 第一个包113.31的主机(下边称之为客户端)给114.80的主机(下边称之为服务器)发送一个syn包请求建立连接 第二个包服务器回复客户端syn+ack表示 ...
- R与数据分析旧笔记(六)多元线性分析 上
> x=iris[which(iris$Species=="setosa"),1:4] > plot(x) 首先是简单的肉眼观察数据之间相关性 多元回归相较于一元回归的 ...
- Visual Studio 常用快捷键总结
删除或剪切一行: Ctrl + X 或者 Shift+Delete格式化整个文档: Ctrl + K + D 或者 Ctrl+E+D智能感知: Ctrl + J 或者 Alt+→折叠所有方法: C ...
- 阿里云ECS每天一件事D9:nginx1.7整合tomcat8.0
仅通过8080端口访问jsp显然不是一算是一个太好的方法,可以使用nginx的proxy_pass子模块,实现nginx转发jsp请求至tomcat. 典型的配置如下: server { listen ...
- 传智播客C/C++各种开发环境搭建视频工具文档免费教程
传智播客作为中国IT培训的领军品牌,一直把握技术趋势,给大家带来最新的技术分享!传智播客C/C++主流开发环境免费分享视频文档中,就有写一个helloworld程序的示范.火速前来下载吧 所谓&quo ...
- Codeforces 703D Mishka and Interesting sum(树状数组+扫描线)
[题目链接] http://codeforces.com/contest/703/problem/D [题目大意] 给出一个数列以及m个询问,每个询问要求求出[L,R]区间内出现次数为偶数的数的异或和 ...
- yii_CGridView_ajax_pagination_and_ajax_sort
本文主要内容: 1, 正常情况下 CGridView 实现 Ajax 分页和排序的原理 2, 分页和排序无法Ajax的情况分析 3, 自定义分页(重写CLinkPager)后如何实现 Ajax 分页和 ...
- linux之线程
http://blog.csdn.net/lanyan822/article/details/7586845 POSIX线程数据类型: pthread_t 线程标识符: pthread_mutex_t ...
- 2014-07-23 利用ASP.NET自带控件实现单文件上传与下载
效果图 上传文件页面: 下载文件页面: 1.母版页site.Master <%@ Master Language="C#" AutoEventWireup="tr ...
- objective-C学习笔记(十)协议
协议 Protocol 协议是类的合同约定,只描述外部接口,不提供具体实现.所以,协议其实可以写在类的.h文件中,不去实现就可以了. 协议可以包含以下成员: 属性 (编译器不会和普通interface ...