要获取安卓手机的当前位置,可以使用Android的定位服务(Location Service)来实现。以下是一个包含代码示例的解决方法:
在app的build.gradle文件中添加以下依赖项:
implementation 'com.google.android.gms:play-services-location:18.0.0'
private static final int PERMISSION_REQUEST_CODE = 123;
private void requestLocationPermission() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
PERMISSION_REQUEST_CODE);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == PERMISSION_REQUEST_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 权限已授予,可以开始获取位置
getCurrentLocation();
} else {
// 权限被拒绝,可以向用户解释需要位置权限的原因
}
}
}
private FusedLocationProviderClient fusedLocationProviderClient;
private LocationCallback locationCallback;
private void getCurrentLocation() {
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);
locationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
if (locationResult == null) {
return;
}
Location location = locationResult.getLastLocation();
double latitude = location.getLatitude();
double longitude = location.getLongitude();
// 在这里处理获取到的位置信息
}
};
fusedLocationProviderClient.requestLocationUpdates(createLocationRequest(), locationCallback, null);
}
private LocationRequest createLocationRequest() {
LocationRequest locationRequest = LocationRequest.create();
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setInterval(10000); // 更新间隔,单位毫秒
locationRequest.setFastestInterval(5000); // 最快更新间隔,单位毫秒
return locationRequest;
}
@Override
protected void onResume() {
super.onResume();
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
getCurrentLocation();
} else {
requestLocationPermission();
}
}
@Override
protected void onPause() {
super.onPause();
if (fusedLocationProviderClient != null && locationCallback != null) {
fusedLocationProviderClient.removeLocationUpdates(locationCallback);
}
}
通过以上步骤,你可以在安卓手机上获取到当前位置的经纬度信息,并在适当的位置进行处理。