Android中GPS定位的用法實(shí)例
GPS定位是目前很多手機(jī)都有的功能,且非常實(shí)用。本文以實(shí)例形式講述了Android中GPS定位的用法。分享給大家供大家參考之用。具體方法如下:
一般在Android中通過(guò)GPS獲得當(dāng)前位置,首先要獲得一個(gè)LocationManager實(shí)例,通過(guò)該實(shí)例的getLastKnownLocation()方法獲得第一個(gè)的位置,該方法的說(shuō)明如下:
void android.location.LocationManager.requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener)
provider即定位方式,可以采用GPS定位(LocationManager.GPS_PROVIDER)或者網(wǎng)絡(luò)定位(LocationManager.NETWORK_PROVIDER),本文是GPS定位,因此使用LocationManager.GPS_PROVIDER。minTime是位置更新的間隔時(shí)間。listener是位置改變的監(jiān)聽(tīng)器,自己定義一個(gè)LocationListener(),重寫(xiě)onLocationChanged(),加入位置改變時(shí)的動(dòng)作。
布局文件如下:
<LinearLayout 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"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/txt_time"
style="@style/my_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="時(shí)間:" />
<TextView
android:id="@+id/txt_lat"
style="@style/my_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="經(jīng)度:" />
<TextView
android:id="@+id/txt_lng"
style="@style/my_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="緯度:" />
</LinearLayout>
MainActivity.java文件如下:
package com.hzhi.my_gps;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView txt_time;
TextView txt_lat;
TextView txt_lng;
LocationManager lom;
Location loc;
Double lat;
Double lng;
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date now;
String str_date;
Timer timer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
get_con();
get_gps();
timer = new Timer(true);
timer.schedule(task, 0, 1000);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void get_gps(){
lom = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
loc = lom.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (loc != null) {
lat = loc.getLatitude();
lng = loc.getLongitude();
txt_lat.setText("緯度:" + String.valueOf(lat));
txt_lng.setText("經(jīng)度:" + String.valueOf(lng));
}
else{
txt_lat.setText("緯度:未知" );
txt_lng.setText("經(jīng)度:未知" );
}
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String provider = lom.getBestProvider(criteria, true);
lom.requestLocationUpdates(provider, 1000, 10, los);
}
LocationListener los = new LocationListener(){
public void onLocationChanged(Location location){
if (location != null) {
lat = location.getLatitude();
lng = location.getLongitude();
txt_lat.setText("緯度:" + String.valueOf(lat));
txt_lng.setText("經(jīng)度:" + String.valueOf(lng));
}
else{
txt_lat.setText("緯度:未知" );
txt_lng.setText("經(jīng)度:未知" );
}
};
public void onProviderDisabled(String provider){
};
public void onProviderEnabled(String provider){ };
public void onStatusChanged(String provider, int status,
Bundle extras){ };
};
// 獲取控件
public void get_con(){
txt_time = (TextView) findViewById(R.id.txt_time);
txt_lat = (TextView) findViewById(R.id.txt_lat);
txt_lng = (TextView) findViewById(R.id.txt_lng);
}
Handler handler = new Handler(){
public void handleMessage(Message msg){
switch (msg.what){
case 1:
get_time();
break;
}
}
};
TimerTask task = new TimerTask(){
public void run() {
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
};
// 獲取時(shí)間
public void get_time(){
now = new Date(System.currentTimeMillis());
str_date = formatter.format(now);
txt_time.setText("時(shí)間:" + str_date);
}
}
在AndroidManifest.xml文件中加入權(quán)限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
運(yùn)行前先打開(kāi)GPS衛(wèi)星,運(yùn)行結(jié)果如下圖所示:

讀者可以在室外信號(hào)充足的地方試試,是可以獲取GPS位置的。
希望本文所述對(duì)大家的Android程序設(shè)計(jì)有所幫助。
- Android打開(kāi)GPS導(dǎo)航并獲取位置信息返回null解決方案
- Android GPS定位測(cè)試(附效果圖和示例)
- Android實(shí)現(xiàn)GPS定位代碼實(shí)例
- android通過(guò)gps獲取定位的位置數(shù)據(jù)和gps經(jīng)緯度
- Android實(shí)現(xiàn)Service獲取當(dāng)前位置(GPS+基站)的方法
- android手機(jī)獲取gps和基站的經(jīng)緯度地址實(shí)現(xiàn)代碼
- Android中實(shí)現(xiàn)GPS定位的簡(jiǎn)單例子
- Android編程獲取GPS數(shù)據(jù)的方法詳解
- Android中GPS坐標(biāo)轉(zhuǎn)換為高德地圖坐標(biāo)詳解
- Android GPS獲取當(dāng)前經(jīng)緯度坐標(biāo)
相關(guān)文章
Android中實(shí)現(xiàn)多線程操作的幾種方式
多線程一直是一個(gè)老大難的問(wèn)題,首先因?yàn)樗y以理解,其次在實(shí)際工作中我們需要面對(duì)的關(guān)于線程安全問(wèn)題也并不常見(jiàn),今天就來(lái)總結(jié)一下實(shí)現(xiàn)多線程的幾種方式,感興趣的可以了解一下2021-06-06
Android獲取雙卡雙待手機(jī)的SIM卡信息示例代碼
這篇文章主要給大家介紹了關(guān)于Android獲取雙卡雙待手機(jī)的SIM卡信息的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)各位Android開(kāi)發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11
Android使用文件進(jìn)行數(shù)據(jù)存儲(chǔ)的方法
這篇文章主要介紹了Android使用文件進(jìn)行數(shù)據(jù)存儲(chǔ)的方法,較為詳細(xì)的分析了Android基于文件實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)所涉及的相關(guān)概念與使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09
Android 中ListView點(diǎn)擊Item無(wú)響應(yīng)問(wèn)題的解決辦法
如果listitem里面包括button或者checkbox等控件,默認(rèn)情況下listitem會(huì)失去焦點(diǎn),導(dǎo)致無(wú)法響應(yīng)item的事件,怎么解決呢?下面小編給大家分享下listview點(diǎn)擊item無(wú)響應(yīng)的解決辦法2016-12-12
淺談Android studio 生成apk文件時(shí)的 key store path 的問(wèn)題
這篇文章主要介紹了淺談Android studio 生成apk文件時(shí)的 key store path 的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03
Android學(xué)習(xí)系列一用按鈕實(shí)現(xiàn)顯示時(shí)間
這篇文章主要介紹了Android學(xué)習(xí)系列一用按鈕實(shí)現(xiàn)顯示時(shí)間的相關(guān)資料,需要的朋友可以參考下2016-05-05
Android ListView滾動(dòng)到底后自動(dòng)加載數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了Android之ListView滾動(dòng)到底后自動(dòng)加載數(shù)據(jù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09

