博客: 安卓之家
微博: 追风917
CSDN: 蒋朋的家
简书: 追风917
定位
需要添加位置权限,这里有两个:
- android.permission.ACCESS_COARSE_LOCATION – 允许 API 利用 WiFi 或移动蜂窝数据(或同时利用两者)来确定设备位置。API 返回的位置精确度大约相当于城市街区。
- android.permission.ACCESS_FINE_LOCATION – 允许 API 利用包括全球定位系统 (GPS) 在内的可用位置提供商以及 WiFi 和移动蜂窝数据尽可能精确地确定位置。
下面介绍几种获取的方法:
1 安卓 SDK android.location.LocationManager
单独获取位置信息还是很简单的:
LocationManager mManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
return;
}
Location mLocation = mManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);//需要权限检测,上面添加
double mLat = location.getLatitude();//获取纬度
double mLng = location.getLongitude();//获取经度
实际开发中,我们需要实时定位,就需要监听位置变化来实现,
声明 LocationListener,然后调用 requestLocationUpdates 方法即可:
/**
* 获取原生gps信息,代码放 MainActivity 里就可以
*/
public void getGPSInfo() {
LocationManager mManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
return;
}
Location mLocation = mManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
updateGPSInfo(mLocation);
mManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 8, new LocationListener() {
@Override
public void onLocationChanged(Location location) {
updateGPSInfo(mLocation);//位置变化时,更新位置信息
}
@Override
public void onStatusChanged(S