GoogleMap vuoto su un vero dispositivo Android 2.3 con API Google (Lv 17)

Domanda Descrizione, Si prega di leggere questo prima

Sto cercando di get la mia semplice applicazione che visualizzerà la posizione dell'utente in esecuzione su dispositivi da Android 2.3 a dispositivi Android 4.0+. La mappa non viene visualizzata su un vero dispositivo Android 2.3.

L'applicazione attualmente può eseguire e mostrare le mappe come ho desiderato su dispositivo Android 4.0+ senza alcun problema.

  • Android - SharedPreferences con object serializzabile
  • Ricevitore Broadcast di Android MMS
  • Barra di ricerca di Android con un suggerimento specificato
  • Verifica della versione Android
  • Maschera ImageView con background angolo rotondo
  • Opzione per submit SMS utilizzando Sim1 o Sim2 in modo programmato
  • Perché può visualizzare le mappe senza alcun problema su Android 4.0+, quindi presumo che il problema non dovrebbe essere niente di sbagliato con le impostazioni o le autorizzazioni di Google Maps V2.

    Tuttavia, quando provo su dispositivi Android 2.3, l'area della mappa sarà vuota come la schermata mostrata di seguito:

    immettere qui la descrizione dell'immagine

    L'applicazione utilizza ActionBarSherlock, Google Maps API v2 e SupportMapFragment. Crea targeting SDK 17, min SDK 10.


    Snippet di codice

    Ho incollato e tagliato il codice per mostrare l'unica parte correlata, per favore lasciate un commento se avete bisogno di qualcos'altro.

    activity_layout.xml

    <fragment android:id="@+id/map" android:name="com.google.android.gms.maps.SupportMapFragment" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="@dimen/incident_padding_right" /> 

    Activity.java

     import com.actionbarsherlock.app.SherlockFragmentActivity; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.GoogleMap.OnMarkerDragListener; import com.google.android.gms.maps.SupportMapFragment; public class Activity extends SherlockFragmentActivity{ private static GoogleMap map; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.activity_layout); ............ //Set up map view map = ((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)).getMap(); ............ OnMarkerDragListener markerDragListener = new OnMarkerDragListener() { @Override public void onMarkerDragStart(Marker marker) { // Called when the marker drag is started } @Override public void onMarkerDragEnd(Marker marker) { // Called when the marker is dropped down. coords[0] = marker.getPosition().latitude; coords[1] = marker.getPosition().longitude; RestoreUIwithSavedLocation(coords); Log.d(TAG, "Pin Dropped at: " + coords[0] + ", " + coords[1]); } @Override public void onMarkerDrag(Marker marker) { } }; map.setOnMarkerDragListener(markerDragListener); } 

    Il Logcat quando viene eseguito su un vero dispositivo Android 2.3:

     01-04 21:16:52.020: D/dalvikvm(19074): VFY: dead code 0x0014-0018 in Lcom/google/android/gms/common/GooglePlayServicesUtil;.b (Landroid/content/res/Resources;)Z 01-04 21:16:52.150: W/dalvikvm(19074): Unable to resolve superclass of Lmaps/p/s; (427) 01-04 21:16:52.150: W/dalvikvm(19074): Link of class 'Lmaps/p/s;' failed 01-04 21:16:52.150: W/dalvikvm(19074): Unable to resolve superclass of Lmaps/y/bo; (3820) 01-04 21:16:52.150: W/dalvikvm(19074): Link of class 'Lmaps/y/bo;' failed 01-04 21:16:52.150: W/dalvikvm(19074): Unable to resolve superclass of Lmaps/i/k; (4208) 01-04 21:16:52.150: W/dalvikvm(19074): Link of class 'Lmaps/i/k;' failed 01-04 21:16:52.150: E/dalvikvm(19074): Could not find class 'maps.i.k', referenced from method maps.z.ag.a 01-04 21:16:52.150: W/dalvikvm(19074): VFY: unable to resolve new-instance 3540 (Lmaps/i/k;) in Lmaps/z/ag; 01-04 21:16:52.150: D/dalvikvm(19074): VFY: replacing opcode 0x22 at 0x006d 01-04 21:16:52.160: D/dalvikvm(19074): VFY: dead code 0x006f-007f in Lmaps/z/ag;.a (Landroid/view/LayoutInflater;Lcom/google/android/gms/maps/GoogleMapOptions;ZLjava/lang/String;)Lmaps/z/ag; 

    Il logcat quando viene eseguito su emulatore con API Google Lv.10

     03-25 13:00:47.974: W/GooglePlayServicesUtil(751): Google Play services is missing. 03-25 13:00:47.992: W/GooglePlayServicesUtil(751): Google Play services is missing. 03-25 13:00:47.992: W/GooglePlayServicesUtil(751): Google Play services is missing. 03-25 13:00:48.002: W/GooglePlayServicesUtil(751): Google Play services is missing. 03-25 13:00:48.002: W/GooglePlayServicesUtil(751): Google Play services is missing. 03-25 13:00:48.022: W/GooglePlayServicesUtil(751): Google Play services is missing. 03-25 13:00:48.072: D/AndroidRuntime(751): Shutting down VM 03-25 13:00:48.072: W/dalvikvm(751): threadid=1: thread exiting with uncaught exception (group=0x40015560) 03-25 13:00:48.133: E/AndroidRuntime(751): FATAL EXCEPTION: main 03-25 13:00:48.133: E/AndroidRuntime(751): java.lang.RuntimeException: Unable to start activity ComponentInfo{Activity}: java.lang.NullPointerException 03-25 13:00:48.133: E/AndroidRuntime(751): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 03-25 13:00:48.133: E/AndroidRuntime(751): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 03-25 13:00:48.133: E/AndroidRuntime(751): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 03-25 13:00:48.133: E/AndroidRuntime(751): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 03-25 13:00:48.133: E/AndroidRuntime(751): at android.os.Handler.dispatchMessage(Handler.java:99) 03-25 13:00:48.133: E/AndroidRuntime(751): at android.os.Looper.loop(Looper.java:130) 03-25 13:00:48.133: E/AndroidRuntime(751): at android.app.ActivityThread.main(ActivityThread.java:3683) 03-25 13:00:48.133: E/AndroidRuntime(751): at java.lang.reflect.Method.invokeNative(Native Method) 03-25 13:00:48.133: E/AndroidRuntime(751): at java.lang.reflect.Method.invoke(Method.java:507) 03-25 13:00:48.133: E/AndroidRuntime(751): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 03-25 13:00:48.133: E/AndroidRuntime(751): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 03-25 13:00:48.133: E/AndroidRuntime(751): at dalvik.system.NativeStart.main(Native Method) 03-25 13:00:48.133: E/AndroidRuntime(751): Caused by: java.lang.NullPointerException 03-25 13:00:48.133: E/AndroidRuntime(751): at Activity.onCreate(Activity.java:250) 03-25 13:00:48.133: E/AndroidRuntime(751): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 03-25 13:00:48.133: E/AndroidRuntime(751): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 03-25 13:00:48.133: E/AndroidRuntime(751): ... 11 more 

    Activity.onCreate(Activity.java:250) è indicata su questa linea:

    map.setOnMarkerDragListener (markerDragListener);

    Quello che ho provato

    E 'strano che se aggiungo questa linea

     <uses-library android:name="com.google.android.maps" /> 

    a AndroidManifest.xml , il logcat non mostrerà nulla (nessun errore nessun avviso) e la mappa è ancora vuota. Ma qualcuno ha un post che dice che questa linea ha risolto il problema della sua mappa vuota: https://stackoverflow.com/questions/15595357/android-supportmapfragment-google-play-services-issue

    Nella cartella Android Dependencies mio progetto, ho questi file *.jar :

     actionbar-sherlock-4.2-library.jar google-play-services_lib.jar android-support-v4.jar actionbarsherlock-plugin-maps-4.2.0.jar google-play-services.jar 

    Da una risposta di questo post , mi rendo conto che Google Maps potrebbe non funzionare bene nell'emulatore. Tutto quello che serve è quello di rendere la mappa visualizzata su un vero e proprio dispositivo Android 2.3 che non è riuscito.

    Inoltre, ho anche prestato molta attenzione a questi post e ho provato il loro metodo (se pertinente alle mie circostanze), ma non ho ancora gioia per il mio problema:

    Riferimento della mappa Android di Google Map V2

    Come utilizzare l'API v2 di Google Maps con il livello API 10?

    Google MapFragment è vuoto (bianco) con Imansible trovare la class 'maps.j.k'

    Utilizzo di ActionBarSherlock con il nuovo SupportMapFragment

    Se hai bisogno di ulteriori informazioni, ti preghiamo di lasciare un commento qui sotto e cercherò di aggiungerli.

  • ProgressBar in un AppWidget
  • Posti API di Autocomplete per get le coordinate GPS dall'indirizzo immesso
  • Aggiornamento di una visualizzazione di text all'interno di una window di dialogo personalizzata tramite un button
  • Come implementare il pacchetto per una class contenente l'elenco <List <String>?
  • Android AsyncTask non restituisce il risultato corretto
  • Crea notifica push in android
  • 5 Solutions collect form web for “GoogleMap vuoto su un vero dispositivo Android 2.3 con API Google (Lv 17)”

    OK, dopo ore di ore di pensiero e tentativo, penso di poter contrassegnare questo problema come fisso.

    Il problema è causato dalla data e ora errata nel dispositivo 2.3.

    L'ora e la data sul dispositivo 2.3 viene ripristinata al 2013/01/01 a causa della mancanza di alimentazione per lungo tempo (come si può vedere nell'output del registro, mostra 01/04 come data). E questo spiega anche perché l'esecuzione con lo stesso codice, la versione di Google Maps V2 non si è presentata sul dispositivo 2.3 ma verrà visualizzata sul dispositivo 4.0+ (perché il dispositivo 4.0+ che utilizzo ha il tempo corretto).

    Penso che a causa dell'enorme differenza di data e ora tra questo dispositivo e il server di Google Maps, la comunicazione tra loro è stata malfunzionata (non so esattamente perché, ma dovrebbe essere una roba di timestamp).

    Quando ho impostato manualmente la data e l'ora del dispositivo 2.3 all'ora corrente, il problema è stato risolto immediatamente.

    Questo problema è così strano e il logout mostra solo come:

    Imansible trovare la class 'maps.i.k', indicata dal metodo maps.z.ag.a

    è così ambiguo che mi rende molto difficile pensare che il problema sia causato da data e ora sbagliate sul dispositivo.

    Pertanto, la prossima volta, se hai incontrato qualcosa di sbagliato mentre giochi con API di Google Maps, segui questa procedura per verificare:

    • Verifica se le impostazioni di data e ora del tuo dispositivo corrispondono al tuo fuso orario corrente (purtroppo l'output del registro non restituirà informazioni molto costruttive per indurvi a pensare alla data e all'ora)
    • Verifica se hai abilitato il servizio corretto nella tua console API (abilita Google Maps API Android V2 non Google Maps API V2 , il registro restituirà Authentication Failed se fai qualcosa di sbagliato con questo passaggio)
    • Controllare se hai usato la chiave di accesso corretta per get il segreto API (il log ti darà un suggerimento che dice che l' Authentication Failed
    • Verifica se hai incluso i file di libreria corretti

    Grazie a tutti coloro che hanno cercato di aiutarmi e spero che questa domanda e soluzione possa aiutare gli altri.

    Questo è il problema comune nella google Map using Api v2 . La ragione principale nel google play service è se il google play service è aggiornato, verrà visualizzata solo la mappa visualizzata. Il problema può essere risolto se si esegue l'applicazione nel dispositivo. provare nel dispositivo functionrà per voi !!

    Scopri questa domanda correlata: Google Maps sullo spazio vuoto di Android

    Sembra che la modifica da v1 a v2 rende difficile get una nuova chiave API e in v2 le chiavi vengono memorizzate nel manifesto. Fammi sapere se funziona.

    OK. Penso che sotto il collegamento ti aiuterà in qualche modo perché anche mi ha salvato anche avere questo stesso problema. Anche se non sono sicuro che non si ottiene alcun problema all'interno della versione API 4.0+

    google-maps-V2-show-vuoto-schermo-on-android-2-2

    Il problema potrebbe essere dovuto a Debug.keystore

    Soluzione: Assicuratevi di eseguire il debug di un'applicazione con la stessa libreria di chiavi con cui hai creato il codice SHA-1 per get il codice API di yout.

    diciamo che stai usando Ubantu e apri la tua Eclipse come root, each volta che buildte l'eclipse dell'applicazione usa default.keystore all'interno per eseguire l'applicazione nel dispositivo situato in root/.android/debug.keystore quindi quando si crea il tuo tasto API è necessario assicurarsi che utilizzi la stessa Keystore con la quale creerai app.

    Spero che ti aiuterà.

    Aggiungi entrambi i permessi nel file AndroidManifest.xml:

     <permission android:name="YOUR_PACKAGE_NAME.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> <uses-permission android:name="YOUR_PACKAGE_NAME.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.