Google Maps CameraUpdateFactory no se ha inicializado

Estoy recibiendo algunos informes de la experiencia del usuario a través de crashlytics me da un error

Fatal Exception java.lang.NullPointerException CameraUpdateFactory is not initialized 

Esto no es un accidente regular, ya que en él no ocurre para todos los usuarios, pero se está volviendo demasiado regular y tengo que resolverlo.

Había leído que esto podría suceder si los mapas no se habían inicializado que creo que he cubierto

 if(googleMap!=null){ googleMap.animateCamera(CameraUpdateFactory.newLatLng(selectedLatLng)); } 

También una posible causa podría ser que los servicios de Google Play no está en el dispositivo o está fuera de fecha y he añadido una cierta verificación para que también.

  public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(FuelsFragment.this.getActivity()); // Showing status //CAMERAUPDATE FACTORY CRASH CAN BE A RESULT OF GOOGLE PLAY SERVICES NOT INSTALLED OR OUT OF DATE //ADDITIONAL VERIFICATION ADDED TO PREVENT FURTHER CRASHES //https://github.com/imhotep/MapKit/pull/17 if(status == ConnectionResult.SUCCESS) { mMapFragment = ReepMapFragment.newInstance(); FragmentTransaction fragmentTransaction = getChildFragmentManager().beginTransaction(); fragmentTransaction.add(R.id.mapContainer, mMapFragment); fragmentTransaction.commit(); } else if(status == ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED){ reep.toastNotify("You need to update Google Play Services in order to view maps"); } else if (status==ConnectionResult.SERVICE_MISSING){ reep.toastNotify("Google Play service is not enabled on this device."); } 

Después de eso no estoy seguro de qué hacer a continuación, ya que esto no sucede para cada usuario.

Si alguien tiene alguna idea sobre por qué esto ocurre, agradecería su opinión

Yo estaba recibiendo el mismo error, a pesar de que obtuve un objeto GoogleMap no nulo de un MapView. Lo resolví con una llamada explícita a MapsInitializer, aunque la documentación dice que no es necesario.

El Fragmento de mi aplicación configura el MapView mediante lo siguiente:

 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.map_panel, container, false); mapView = (MapView) view.findViewById(R.id.map_view); mapView.onCreate(savedInstanceState); configureMap(mapView.getMap()); return view; } private void configureMap(GoogleMap map, double lat, double lon) { if (map == null) return; // Google Maps not available try { MapsInitializer.initialize(getActivity()); } catch (GooglePlayServicesNotAvailableException e) { Log.e(LOG_TAG, "Have GoogleMap but then error", e); return; } map.setMyLocationEnabled(true); LatLng latLng = new LatLng(lat, lon); CameraUpdate camera = CameraUpdateFactory.newLatLng(latLng); map.animateCamera(camera); } 

Antes de agregar la llamada a MapsInitializer, obtendría una excepción de CameraUpdateFactory. Después de agregar la llamada, CameraUpdateFactory siempre tiene éxito.

Solo usa MapsInitializer.initialize sin try-catch, porque no arroja GooglePlayServicesNotAvailableException en la última versión de los servicios de Google Play, que se verificó con la versión de paquete 5084032.

Puede ser que usted debe hacer un Class.forName() ? Para CameraUpdateFactory ? En try - catch

Algo de mi MapUtil , que maneja este caso:

 public static void animateCamera(final MapView mapView, final GoogleMap map, final LatLng location) { try{ CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(location, getBetterZoom(map)); map.animateCamera(cameraUpdate); }catch(Exception e) { MapsInitializer.initialize(mapView.getContext()); if (mapView.getViewTreeObserver().isAlive()) { mapView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @SuppressLint("NewApi") @Override public void onGlobalLayout() { GlobalyLayoutListenerUtil.removeGlobalLayoutListener(mapView, this); animateCamera(mapView, mapView.getMap(), location); } }); } else { if(map != null){ map.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() { @Override public void onMapLoaded() { if(location != null){ animateCamera(mapView, mapView.getMap(), location); } } }); } } } } 

En algún momento puede ser causada por la versión antigua del servicio de Google Play. Actualice el servicio de Google Play.

  • Cómo dibujar Polyline interactivo en la ruta google maps v2 android
  • ¿Cómo abrir la aplicación estándar de Google Map desde mi aplicación?
  • Uso de la biblioteca de Google Places en la aplicación nativa de Android
  • Mostrar la ubicación actual y los lugares cercanos y la ruta entre dos lugares con la API de Google Maps en Android
  • ¿Cómo puedo obtener la ubicación del centro en los mapas v2 en Android?
  • Android animateCamera GoogleMap.CancelableCallback Uso
  • Contexto nulo Puntero
  • Android Maps API v2 - ¿acercamientos a la rotación del marcador?
  • Utilidad de mapas de Android: imágenes de la URL
  • Buscar ruta con Androids API de Google Maps
  • Android google maps v2 problemas de rendimiento
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.