Java onLocationChanged未调用
嘿,这是我定期检索用户位置的代码Java onLocationChanged未调用,java,android,location,fusedlocationproviderapi,Java,Android,Location,Fusedlocationproviderapi,嘿,这是我定期检索用户位置的代码 @Override protected void onCreate(Bundle savedInstanceState) { buildGoogleApiClient(); } private void prepareLocationServices() { int permissionCheck = ContextCompat.checkSelfPermission(MainActivity.this, Manifes
@Override
protected void onCreate(Bundle savedInstanceState) {
buildGoogleApiClient();
}
private void prepareLocationServices() {
int permissionCheck = ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.ACCESS_FINE_LOCATION);
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
} else {
LocationManager service = (LocationManager) getSystemService(LOCATION_SERVICE);
boolean enabled = service
.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (!enabled) {
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
} else {
LocationRequest locationRequest = LocationRequest.create();
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setInterval(1000);
LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, locationRequest, this);
}
}
}
private void buildGoogleApiClient() {
if (GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(this) == ConnectionResult.SUCCESS) {
googleApiClient = new GoogleApiClient.Builder(this)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
if (!googleApiClient.isConnected() || !googleApiClient.isConnecting()) {
googleApiClient.connect();
}
}
}
@Override
public void onLocationChanged(Location location) {
lat = location.getLatitude();
lng = location.getLongitude();
Log.d("location", location.toString());
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) {
switch (requestCode) {
case 1: {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
prepareLocationServices();
}
}
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
@Override
public void onConnected(@Nullable Bundle bundle) {
prepareLocationServices();
}
@Override
public void onConnectionSuspended(int i) {
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
buildGoogleApiClient();
}
但是
onLocationChanged
在我启用手机数据和GPS时根本不呼叫。怎么了?您的代码是否通过了带有“GoogleAppAvailability”的if语句?是的onConnected
正在调用@Pablobaxter位置更新的停止逻辑在哪里?我不想停止它。它应该定期更新并获取用户位置@PabloBaxterI强烈建议不要这样做,除非您知道您的用户已连接到电源。运行位置更新会很快耗尽电池电量。关于停止逻辑,我是在问,因为如果有停止逻辑,它可能会被调用。您的代码是否通过带有“GoogleAppAvailability”的if语句?是的onConnected
正在调用@pablobaxter位置更新的停止逻辑在哪里?我不想停止它。它应该定期更新并获取用户位置@PabloBaxterI强烈建议不要这样做,除非您知道您的用户已连接到电源。运行位置更新会很快耗尽电池电量。关于停止逻辑,我是在问,因为如果有停止逻辑,它可能会被调用。