Android中GPS简介及其应用
隨時隨地技術(shù)實戰(zhàn)干貨,獲取項目源碼、學(xué)習(xí)資料,請關(guān)注源代碼社區(qū)公眾號(ydmsq666)
GPS是Global Positioning System(全球定位系統(tǒng))的簡稱,它的作用就是為全球的物體提供定位功能。GPS定位是一門高新技術(shù),但對于Android程序員來說,開發(fā)GPS功能的應(yīng)用程序又十分簡單,Android為此提供LocationManager類及其他幾個輔助類,開發(fā)人員可以非常方便地開發(fā)出GPS應(yīng)用。在程序中,通過getSystemService獲得LocationManager對象之后,就可以調(diào)用LocationManager提供的常用方法:
在上面方法中涉及另一個重要的類:LocationProvider(定位提供者),就是GPS定位組件的抽象表示,它提供了如下方法來獲取定位組件的相關(guān)信息:
另外,GPS支持還涉及到另一個類:Location,它是一個代表位置信息的抽象類,它提供如下方法來獲取定位信息:
另外,在獲取LocationProvider時,往往需要加上過濾條件,即Criteria,Criteria提供如下方法來設(shè)置過濾條件:
使用上面三個類及其提供的方法就可以獲取GPS定位信息了,步驟如下:
1、獲取系統(tǒng)的LocationManager對象。
2、使用LocationManager,通過指定LocationProvider來獲取定位信息,定位信息由對象Location表示。
3、從Location對象中獲取定位信息。
下面用一個簡單的示例來演示,根據(jù)不同方式獲取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;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);listView = (ListView) findViewById(R.id.main_lv_show);// 獲取系統(tǒng)的LocationManager對象locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);}public void click(View v) {if (v.getId() == R.id.main_btn_get_all) {// 獲取系統(tǒng)所有的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) {// 創(chuàng)建一個LocationProvider的過濾條件Criteria criteria = new Criteria();// 設(shè)置要求LocationProvider必須使免費的criteria.setCostAllowed(false);// 設(shè)置要求LocationProvider能提供高度信息criteria.setAltitudeRequired(true);// 設(shè)置要求LocationProvider能提供方向信息criteria.setBearingRequired(true);// 獲取系統(tǒng)所有符合條件的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();// 根據(jù)名稱獲取指定的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" ><Buttonandroid:id="@+id/main_btn_get_all"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="click"android:text="獲取所有LocationProvider" /><Buttonandroid:id="@+id/main_btn_get_criteria"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="click"android:text="根據(jù)條件獲取LocationProvider" /><Buttonandroid:id="@+id/main_btn_get_byname"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="click"android:text="獲取指定的LocationProvider" /><ListViewandroid:id="@+id/main_lv_show"android:layout_width="match_parent"android:layout_height="wrap_content" /></LinearLayout>權(quán)限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>附上圖片效果:
?
總結(jié)
以上是生活随笔為你收集整理的Android中GPS简介及其应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PE中Ghost 使用详解
- 下一篇: UE4 指南针制作方法