【问题标题】:FusedLocationProvider return nullFusedLocationProvider 返回 null
【发布时间】:2019-04-01 10:27:20
【问题描述】:

我使用 fusedlocation 提供程序客户端获取设备位置。但如果位置设置关闭我的手机并使用 locationServices 打开位置设置。 getSettingsClient 融合位置提供者返回 null

 final Task<Location> locationTask = fusedLocationProviderClient.getLastLocation();
        locationTask.addOnSuccessListener((Activity) context, new OnSuccessListener<Location>() {
            @Override
            public void onSuccess(Location location) {
                if (location != null) {
                    lastKnownLocation = location;
                    map.moveCamera(CameraUpdateFactory.newLatLngZoom(
                            new LatLng(lastKnownLocation.getLatitude(),
                                    lastKnownLocation.getLongitude()), Constants.DEFAULT_ZOOM));
                    LatLng position = new LatLng(lastKnownLocation.getLatitude(), lastKnownLocation.getLongitude());
                    HashMap<String, String> adressInfo = MapUtility.getAddressGeocoderObject(context, position);

                    MapUtility.moveCamera(context, map, position, Constants.DEFAULT_ZOOM,
                            adressInfo.get("addressFeatureName"), adressInfo.get("remainAdress"));


                } else {
                    Toast.makeText(context, "null", Toast.LENGTH_LONG).show();
                    //map.getUiSettings().setMyLocationButtonEnabled(false);

                }

【问题讨论】:

    标签: android google-maps null android-fusedlocation


    【解决方案1】:

    在更新 fusedLocation 提供程序时解决了我的问题

    private void createLocationRequest() {
        mLocationRequest = new LocationRequest();
        mLocationRequest.setInterval(10*1000);
        mLocationRequest.setFastestInterval(10*1000);
        mLocationRequest.setSmallestDisplacement(10);
        mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    }
    
    private void createLocationCallback(){
        locationCallback=new LocationCallback(){
            @Override
            public void onLocationResult(LocationResult locationResult) {
                super.onLocationResult(locationResult);
               //code here
    
            }
        };
    
    }
    

    如果位置空更新融合了位置提供者

     public void getDeviceLocation() {
        try {
            final Task<Location> locationTask = fusedLocationProviderClient.getLastLocation();
            locationTask.addOnSuccessListener((Activity) context, new OnSuccessListener<Location>() {
                @Override
                public void onSuccess(Location location) {
                    if (location != null) {
                        lastKnownLocation = location;
                        if(map==null){
                            Toast.makeText(context,"map null",Toast.LENGTH_LONG).show();
                            return;
                        }
                        map.moveCamera(CameraUpdateFactory.newLatLngZoom(
                                new LatLng(lastKnownLocation.getLatitude(),
                                        lastKnownLocation.getLongitude()), Constants.DEFAULT_ZOOM));
                        LatLng position = new LatLng(lastKnownLocation.getLatitude(), lastKnownLocation.getLongitude());
                        HashMap<String, String> adressInfo = MapUtility.getAddressGeocoderObject(context, position);
    
                        assert adressInfo != null;
                        MapUtility.moveCamera(context, map, position, Constants.DEFAULT_ZOOM,
                                adressInfo.get("addressFeatureName"), adressInfo.get("remainAdress"));
    
                    } else {
                        createLocationRequest();
                        createLocationCallback();
                        fusedLocationProviderClient.requestLocationUpdates(mLocationRequest,locationCallback,Looper.myLooper());
    
                    }
    
    
                }
    
    
            });
    
            locationTask.addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Log.d(Constants.PlacesTag, "Current location is null. Using defaults.");
                }
            });
    
    
        } catch (SecurityException e) {
            Log.e("Exception: %s", e.getMessage());
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2022-01-21
      • 1970-01-01
      • 2020-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-21
      • 2020-06-19
      • 2011-10-15
      相关资源
      最近更新 更多