Android GPS獲取當前經(jīng)緯度坐標
APP中可能會遇到一種需求,就是將當前所在位置的坐標傳到服務器上,今天我提供三種途徑去獲取經(jīng)緯度坐標信息,第一種是通過Android API來實現(xiàn),第二種通過百度地圖API來實現(xiàn),第三種通過天地圖API來實現(xiàn)。
第一種方法(Android API實現(xiàn)),廢話不多說,上代碼。
MainActivity代碼如下:
public class MainActivity extends Activity {
private static final String TAG = MainActivity.class.getSimpleName();
private double latitude = 0.0;
private double longitude = 0.0;
private TextView info;
private LocationManager locationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
info = (TextView) findViewById(R.id.tv);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
getLocation();
//gps已打開
} else {
toggleGPS();
new Handler() {
}.postDelayed(new Runnable() {
@Override
public void run() {
getLocation();
}
}, 2000);
}
}
private void toggleGPS() {
Intent gpsIntent = new Intent();
gpsIntent.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider");
gpsIntent.addCategory("android.intent.category.ALTERNATIVE");
gpsIntent.setData(Uri.parse("custom:3"));
try {
PendingIntent.getBroadcast(this, 0, gpsIntent, 0).send();
} catch (CanceledException e) {
e.printStackTrace();
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, locationListener);
Location location1 = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (location1 != null) {
latitude = location1.getLatitude(); // 經(jīng)度
longitude = location1.getLongitude(); // 緯度
}
}
}
private void getLocation() {
Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
} else {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, locationListener);
}
info.setText("緯度:" + latitude + "\n" + "經(jīng)度:" + longitude);
}
LocationListener locationListener = new LocationListener() {
// Provider的狀態(tài)在可用、暫時不可用和無服務三個狀態(tài)直接切換時觸發(fā)此函數(shù)
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
// Provider被enable時觸發(fā)此函數(shù),比如GPS被打開
@Override
public void onProviderEnabled(String provider) {
Log.e(TAG, provider);
}
// Provider被disable時觸發(fā)此函數(shù),比如GPS被關閉
@Override
public void onProviderDisabled(String provider) {
Log.e(TAG, provider);
}
// 當坐標改變時觸發(fā)此函數(shù),如果Provider傳進相同的坐標,它就不會被觸發(fā)
@Override
public void onLocationChanged(Location location) {
if (location != null) {
Log.e("Map", "Location changed : Lat: " + location.getLatitude() + " Lng: " + location.getLongitude());
latitude = location.getLatitude(); // 經(jīng)度
longitude = location.getLongitude(); // 緯度
}
}
};
/*
*
* 打開和關閉gps第二種方法
* private void openGPSSettings() {
//獲取GPS現(xiàn)在的狀態(tài)(打開或是關閉狀態(tài))
boolean gpsEnabled = Settings.Secure.isLocationProviderEnabled(getContentResolver(), LocationManager.GPS_PROVIDER);
if (gpsEnabled) {
//關閉GPS
Settings.Secure.setLocationProviderEnabled(getContentResolver(), LocationManager.GPS_PROVIDER, false);
} else {
//打開GPS
Settings.Secure.setLocationProviderEnabled(getContentResolver(), LocationManager.GPS_PROVIDER, true);
}
}*/
}
main.xml布局如下
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/layout" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/white" android:orientation="vertical" > <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="經(jīng)緯度信息:" android:textColor="#660000" android:textSize="20sp" /> </LinearLayout>
清單文件如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.tqmapdemo"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<!-- 連接互聯(lián)網(wǎng)Internet權限 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- GPS定位權限 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black" >
<activity
android:name="com.example.tqmapdemo.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
運行結果如下

第二種方法(百度地圖API實現(xiàn),注:需要自己申請apikey)

第三種方法(天地圖API實現(xiàn))

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- Android通過原生方式獲取經(jīng)緯度與城市信息的方法
- Android通過原生APi獲取所在位置的經(jīng)緯度
- Android編程實現(xiàn)根據(jù)經(jīng)緯度查詢地址并對獲取的json數(shù)據(jù)進行解析的方法
- Android獲取當前位置的經(jīng)緯度數(shù)據(jù)
- android通過gps獲取定位的位置數(shù)據(jù)和gps經(jīng)緯度
- Android獲取經(jīng)緯度計算距離介紹
- Android 通過當前經(jīng)緯度獲得城市的實例代碼
- android手機獲取gps和基站的經(jīng)緯度地址實現(xiàn)代碼
- Android獲取經(jīng)緯度的完美解決方案
相關文章
Android開發(fā)實現(xiàn)帶有反彈效果仿IOS反彈scrollview教程詳解
本文給大家分享android開發(fā)實現(xiàn)帶有反彈效果,模仿ios反彈scrollview詳細教程,本文介紹的非常詳細,具有參考借鑒價值,感興趣的朋友一起看看吧2016-09-09
Android?Studio實現(xiàn)音樂播放器的全過程(簡單易上手)
這篇文章主要給大家介紹了關于Android?Studio實現(xiàn)音樂播放器的相關資料,文中通過實例代碼以及圖文介紹的非常詳細,對各位Android開發(fā)者們具有一定的參考學習價值,需要的朋友可以參考下2022-02-02
Android Studio如何為Activity添加自定義注解信息
好久沒用寫文章了,今天給大家分享Android Studio如何為Activity添加自定義注解信息,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2021-06-06
XListView實現(xiàn)網(wǎng)絡加載圖片和下拉刷新
這篇文章主要為大家詳細介紹了XListView實現(xiàn)網(wǎng)絡加載圖片和下拉刷新,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-11-11

