Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java onLocationChanged未调用_Java_Android_Location_Fusedlocationproviderapi - Fatal编程技术网

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强烈建议不要这样做,除非您知道您的用户已连接到电源。运行位置更新会很快耗尽电池电量。关于停止逻辑,我是在问,因为如果有停止逻辑,它可能会被调用。