zoukankan      html  css  js  c++  java
  • 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:

    [java] view plaincopy
     
    1. package com.home.locationprovider;  
    2.   
    3. import java.util.ArrayList;  
    4. import java.util.List;  
    5.   
    6. import android.app.Activity;  
    7. import android.content.Context;  
    8. import android.location.Criteria;  
    9. import android.location.LocationManager;  
    10. import android.os.Bundle;  
    11. import android.view.View;  
    12. import android.widget.ArrayAdapter;  
    13. import android.widget.ListView;  
    14.   
    15. public class LocationProviderTestActivity extends Activity {  
    16.     private ListView listView;  
    17.     private LocationManager locationManager;  
    18.     // 存放LocationProvider名称的集合  
    19.     private List<String> providerNames = new ArrayList<String>();  
    20.     private ArrayAdapter<String> adapter;  
    21.   
    22.     @Override  
    23.     protected void onCreate(Bundle savedInstanceState) {  
    24.         super.onCreate(savedInstanceState);  
    25.         setContentView(R.layout.main);  
    26.         listView = (ListView) findViewById(R.id.main_lv_show);  
    27.         // 获取系统的LocationManager对象  
    28.         locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);  
    29.     }  
    30.   
    31.     public void click(View v) {  
    32.         if (v.getId() == R.id.main_btn_get_all) {  
    33.             // 获取系统所有的LocationProvider的名称  
    34.             providerNames = locationManager.getAllProviders();  
    35.             adapter = new ArrayAdapter<String>(this,  
    36.                     android.R.layout.simple_list_item_1, providerNames);  
    37.             listView.setAdapter(adapter);  
    38.         }  
    39.         if (v.getId() == R.id.main_btn_get_criteria) {  
    40.             // 创建一个LocationProvider的过滤条件  
    41.             Criteria criteria = new Criteria();  
    42.             // 设置要求LocationProvider必须使免费的  
    43.             criteria.setCostAllowed(false);  
    44.             // 设置要求LocationProvider能提供高度信息  
    45.             criteria.setAltitudeRequired(true);  
    46.             // 设置要求LocationProvider能提供方向信息  
    47.             criteria.setBearingRequired(true);  
    48.             // 获取系统所有符合条件的LocationProvider的名称  
    49.             providerNames = locationManager.getProviders(criteria, true);  
    50.             adapter = new ArrayAdapter<String>(this,  
    51.                     android.R.layout.simple_list_item_1, providerNames);  
    52.             listView.setAdapter(adapter);  
    53.         }  
    54.         if (v.getId() == R.id.main_btn_get_byname) {  
    55.             providerNames.clear();  
    56.             // 根据名称获取指定的LocationProvider的名称  
    57.             providerNames.add(locationManager.getProvider(  
    58.                     LocationManager.GPS_PROVIDER).getName());  
    59.             adapter = new ArrayAdapter<String>(this,  
    60.                     android.R.layout.simple_list_item_1, providerNames);  
    61.             listView.setAdapter(adapter);  
    62.         }  
    63.     }  
    64. }  

    布局XML:

    [html] view plaincopy
     
    1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    2.     android:layout_width="match_parent"  
    3.     android:layout_height="match_parent"  
    4.     android:orientation="vertical" >  
    5.   
    6.     <Button  
    7.         android:id="@+id/main_btn_get_all"  
    8.         android:layout_width="wrap_content"  
    9.         android:layout_height="wrap_content"  
    10.         android:onClick="click"  
    11.         android:text="获取所有LocationProvider" />  
    12.   
    13.     <Button  
    14.         android:id="@+id/main_btn_get_criteria"  
    15.         android:layout_width="wrap_content"  
    16.         android:layout_height="wrap_content"  
    17.         android:onClick="click"  
    18.         android:text="根据条件获取LocationProvider" />  
    19.   
    20.     <Button  
    21.         android:id="@+id/main_btn_get_byname"  
    22.         android:layout_width="wrap_content"  
    23.         android:layout_height="wrap_content"  
    24.         android:onClick="click"  
    25.         android:text="获取指定的LocationProvider" />  
    26.   
    27.     <ListView  
    28.         android:id="@+id/main_lv_show"  
    29.         android:layout_width="match_parent"  
    30.         android:layout_height="wrap_content" />  
    31.   
    32. </LinearLayout>  

    权限:

    [html] view plaincopy
     
    1. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>  

    附上图片效果:

    转自这里:http://blog.csdn.net/u010142437/article/category/1435920

  • 相关阅读:
    DIY 作品 及 维修 不定时更新
    置顶,博客中所有源码 github
    openwrt PandoraBox PBR-M1 极路由4 HC5962 更新固件
    使用 squid 共享 虚拟专用网至局域网
    第一次参加日语能力测试 N5
    libx264 libfdk_aac 编码 解码 详解
    开发RTSP 直播软件 H264 AAC 编码 live555 ffmpeg
    MFC Camera 摄像头预览 拍照
    http2 技术整理 nginx 搭建 http2 wireshark 抓包分析 server push 服务端推送
    plist 图集 php 批量提取 PS 一个个切
  • 原文地址:https://www.cnblogs.com/buffer/p/3231273.html
Copyright © 2011-2022 走看看