-
1 # 木杳子
-
2 # 成謎吃瓜的少年
第一步,申明許可權。(5.0之後許可權需要動態申請,具體程式碼和這個問題無關就不貼出來了)
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
第二步透過LocationManager類獲取位置資訊,下面是一個封裝好的工具類
**
* Created by DELL zhanghuirong on 2019/3/15.
* 獲取當前位置資訊
*/
public class MyLocationUtil {
private static String provider;
public static Location getMyLocation() {
// 獲取當前位置資訊
//獲取定位服務
LocationManager locationManager = (LocationManager) MyApp.getContext().getSystemService(Context.LOCATION_SERVICE);
//獲取當前可用的位置控制器
List<String> list = locationManager.getProviders(true);
if (list.contains(locationManager.GPS_PROVIDER)) {
// GPS位置控制器
provider = locationManager.GPS_PROVIDER;//GPS定位
} else if (list.contains(locationManager.NETWORK_PROVIDER)) {
// 網路位置控制器
provider = locationManager.NETWORK_PROVIDER;//網路定位
}
if (provider != null) {
if (ActivityCompat.checkSelfPermission(MyApp.getContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(MyApp.getContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return null;
}
Location lastKnownLocation = locationManager.getLastKnownLocation(provider);
return lastKnownLocation;
} else {
ToastUtils.makeText("請檢查網路或GPS是否開啟");
}
return null;
}
}
第三步(其實到上一步這個問題已經解決了,這個算擴充套件吧)將位置資訊轉換成地址資訊。
在高德或者百度地圖開發者平臺申請訪問api許可。將第二步獲取到的經緯度資訊上傳查詢對應座標資訊。因為百度和高德用的不是同一個座標系,查詢時仔細看官方API。
回覆列表
直接透過安卓的原生介面獲取一個gps的位置意義不是很大。這個資料在一定的座標系上才有意義。建議去高德的開發平臺註冊個帳號,引入sdk來做,地理位置與地理位置解析的概念先了解下吧。