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简介及其应用的更多相关文章

  1. Android中GPS定位的简单应用

    在Android中通过GPS获得当前位置,首先要获得一个LocationManager实例,通过该实例的getLastKnownLocation()方法获得第一个的位置,该方法的说明如下: void ...

  2. Android中GPS类及方法简介

    GPS是Global Positioning System(全球定位系统)的简称,它的作用就是为全球的物体提供定位功能.GPS定位是一门高新技术,但对于Android程序员来说,开发GPS功能的应用程 ...

  3. Android中如何监听GPS开启和关闭

    转自 chenming 原文 Android中如何监听GPS开启和关闭   摘要: 本文简单总结了如何监听GPS开关的小技巧 有时需要监听GPS的开关(这种需求并不多见).实现的思路是监听代表 GPS ...

  4. Android中的 init.rc文件简介

    init.rc脚本是由Android中linux的第一个用户级进程init进行解析的. init.rc 文件并不是普通的配置文件,而是由一种被称为"Android初始化语言"(An ...

  5. android中SELINUX规则分析和语法简介【转】

    本文转载自:https://blog.csdn.net/LoongEmbedded/article/details/62430039 1. SELINUX是可以理解为一种Android上面的安全机制, ...

  6. Android中SELinux的TE简介【转】

    转自:https://blog.csdn.net/murphykwu/article/details/52457667 selinux的概念如上一篇链接所示: http://www.cnblogs.c ...

  7. Android中三种常用解析XML的方式(DOM、SAX、PULL)简介及区别

    XML在各种开发中都广泛应用,Android也不例外.作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能.今天就由我向大家介绍一下在Android平台下几种常见的XML解 ...

  8. android中SELINUX规则分析和语法简介

    1. SELINUX是可以理解为一种android上面的安全机制,是有美国国家安全局和一些公司设计的一个针对linux的安全加强系统我们可以通过配置SELINUX的相关policy,来定制自己的手机的 ...

  9. Android中后台的劳动者“服务”

    前言 作为四大组件之一的Service,想必不少开发者都是了解的,那具体熟悉吗?是不是对Service中的每个知识点是否了解,它与Activity的关系又是什么样的,我们所理解的后台服务跟Servic ...

随机推荐

  1. Hibernate学习之hibernate执行顺序

    Hibernate 执行的顺序如下:  (1) 生成一个事务的对象,并标记当前的 Session 处于事务状态(注:此时并未启动数据库级事务).  (2) 应用使用 s.save 保存对象,这个时候  ...

  2. [Usaco2009 Feb]Revamping Trails 堆优化 Dijkstra

    .. 这题一眼就看出就是一个二维DP dp[i][j]表示到点i使用了j次免费边的最短距离 MD 卡SPFA.. 遂写dij. AC #include <iostream> #includ ...

  3. Android ActionBar详解(二)--->使用ActionBar显示选项菜单

    MainActivity如下: package cc.testsimpleactionbar1; import android.os.Bundle; import android.app.Activi ...

  4. Anndroid 开发架构读书笔记

    市面上大部分应用不外乎就是颠过来倒过去地做以下这些事情: --------------- --------------- --------------- --------------- | | | | ...

  5. H3C交换配置PBR最佳实践

    简要说明 PBR算是比较常用的功能,需要我们去掌握一下 配置步骤简要 配置BFD 配置track 配置acl 配置policy-based-route 在接口上面应用policy-based-rout ...

  6. perspective结合transform的3D效果

    http://css-tricks.com/almanac/properties/p/perspective/ 链接中讲了 perspective的两种用法及比较: 1.perspective:100 ...

  7. Netty那点事: 概述, Netty中的buffer, Channel与Pipeline

    Netty那点事(一)概述 Netty和Mina是Java世界非常知名的通讯框架.它们都出自同一个作者,Mina诞生略早,属于Apache基金会,而Netty开始在Jboss名下,后来出来自立门户ne ...

  8. oracle 11g RAC ocfs2

    http://oracle-base.com/articles/linux/ocfs2-on-linux.php http://oracle-base.com/articles/11g/oracle- ...

  9. UBER人民优步司机注册攻略

        注意:本文驾驶证行驶证图片为本人拍摄,请广大网友勿作它用 转载请修改! 详细的介绍注册优步uber司机端步骤; uber对司机的要求: 车辆为本地牌照 车龄在5年以内 裸车价格在10万以上 目 ...

  10. 网页在Safari快速滚动和回弹的原理: -webkit-overflow-scrolling : touch;的实现

    现在很多for Mobile的H5网页内都有快速滚动和回弹的效果,看上去和原生app的效率都有得一拼. 要实现这个效果很简单,只需要加一行css代码即可: -webkit-overflow-scrol ...