Android全球定位系統GPS實時獲取位置-劉宇
阿新 • • 發佈:2019-01-10
GPS是全球定位系統,他能夠獲取到你當前的位置、方向、速度、高度等資訊,這樣可以幫助我們實現很多功能,如獲取當前位置等資訊、距離計算、鄰近報警等功能。下面我就帶大家一起來簡單實現第一個功能獲取當前位置等資訊,大牛繞過。
效果圖:
——————————————————————————————————————
首先先介紹一下GPS定位系統API中的兩個重要的方法:
一、LocationManager:位置管理器。要想操作定位相關裝置,必須先定義個LocationManager。我們可以通過如下程式碼建立LocationManger物件。
LocationManger locationManager=(LocationManager)this
二、LocationListener
LocationListener,位置監聽,監聽位置變化,監聽裝置開關與狀態。
三、LocationProvider
LocationProvider類可以獲取與位置提供者相關的資訊。Location類是對具體位置資訊的抽象表示。
使用GPS定位的關鍵之一就是獲取LocationProvider,每一個LocationProvider物件都表示一個抽象的定位系統。無論使用GPS做什麼,都需要首先獲取合適的LocationProvider物件。
// 獲取passive Location Provider LocationProvider passiveProvider = mLocationManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER); // 獲取gps Location Provider LocationProvider gpsProvider = mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); // 獲取network Location Provider LocationProvider passiveProvider = mLocationManager. getLastKnownLocation (LocationManager.NETWORK_PROVIDER);
四、需要的許可權
<uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/>
——————————————————————————————————
程式碼:
activity_main.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout>
MainActivity.java:
package com.oak.learngpslocationdemo;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView tv;//用於顯示資訊的TextView
private LocationManager mLocationManager;//位置管理器
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);//獲取到TextView
//獲取到位置管理器例項
mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
//獲取到GPS_PROVIDER
Location location = mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
//偵聽位置發生變化,2000毫秒更新一次,位置超過8米也更新一次
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 8, new LocationListener() {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// 當GPS Location Provider可用時,更新位置
updata(mLocationManager.getLastKnownLocation(provider));
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onLocationChanged(Location location) {
// 當GPS定位資訊發生改變時,更新位置
updata(location);
}
});
//更新位置資訊顯示到TextView
updata(location);
}
private void updata(Location location){
if(location != null){
StringBuilder sb = new StringBuilder();
sb.append("實時的位置資訊:\n");
sb.append("經度:");
sb.append(location.getLongitude());
sb.append("\n緯度:");
sb.append(location.getLatitude());
sb.append("\b高度:");
sb.append(location.getAltitude());
sb.append("\n速度:");
sb.append(location.getSpeed());
sb.append("\n方向:");
sb.append(location.getBearing());
tv.setText(sb.toString());
}
}
}
好啦,到這裡就結束了一個簡單的獲取位置的demo,還有距離計算和鄰近報警請看下篇部落格,不動的童鞋們可以留言給我哦,我會第一時間回覆的。
By:Brycen Liu