GPS是Global Positioning System(全球定位系統)的簡稱,它的做用就是爲全球的物體提供定位功能。GPS定位是一門高新技術,但對於Android程序員來講,開發GPS功能的應用程序又十分簡單,Android爲此提供LocationManager類及其餘幾個輔助類,開發人員能夠很是方便地開發出GPS應用。在程序中,經過getSystemService得到LocationManager對象以後,就能夠調用LocationManager提供的經常使用方法:html
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
在上面方法中涉及另外一個重要的類:LocationProvider(定位提供者),就是GPS定位組件的抽象表示,它提供了以下方法來獲取定位組件的相關信息:java
![](http://static.javashuo.com/static/loading.gif)
另外,GPS支持還涉及到另外一個類:Location,它是一個表明位置信息的抽象類,它提供以下方法來獲取定位信息:android
![](http://static.javashuo.com/static/loading.gif)
另外,在獲取LocationProvider時,每每須要加上過濾條件,即Criteria,Criteria提供以下方法來設置過濾條件:程序員
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
使用上面三個類及其提供的方法就能夠獲取GPS定位信息了,步驟以下:
一、獲取系統的LocationManager對象。
二、使用LocationManager,經過指定LocationProvider來獲取定位信息,定位信息由對象Location表示。
三、從Location對象中獲取定位信息。app
下面用一個簡單的示例來演示,根據不一樣方式獲取LocationProvider定位信息,代碼以下:ide
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;
-
- 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) getSystemService(Context.LOCATION_SERVICE);
- }
-
- public void click(View v) {
- if (v.getId() == R.id.main_btn_get_all) {
-
- 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) {
-
- Criteria criteria = new Criteria();
-
- criteria.setCostAllowed(false);
-
- criteria.setAltitudeRequired(true);
-
- criteria.setBearingRequired(true);
-
- 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();
-
- 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:ui
- <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>
權限:this
- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
附上圖片效果:spa
![](http://static.javashuo.com/static/loading.gif)
轉自這裏:http://blog.csdn.net/u010142437/article/category/1435920