2017-04-07 17 views
0

Google Maps APIを使用して簡単なマップを生成し、マーカーを配置するAndroidモバイルアプリを作成しました。Android GoogleマップOnMapReadyCallback()がデバイス上で動作しない(シミュレータで動作する)

すべてがAndroid Simulatorでうまく動作しますが、Androidデバイスを使用するとmapView.getMapAsyncはOnMapReadyCallback()をトリガーしません。

私が指摘したもう一つのことは、これらのメッセージが表示されていることです。問題に関連するかどうかはわかりません。 SDK内のすべてを更新しようとしましたが、これらのメッセージは表示されません。

04-07 20:36:30.990 10487-10487/it.bitrack.fabio.bitrack W/GooglePlayServicesUtil: Google Play services out of date. Requires 10298000 but found 9879448 
04-07 20:36:30.992 10487-10487/it.bitrack.fabio.bitrack W/GooglePlayServicesUtil: Google Play services out of date. Requires 10298000 but found 9879448 
04-07 20:36:30.993 10487-10487/it.bitrack.fabio.bitrack W/GooglePlayServicesUtil: Google Play services out of date. Requires 10298000 but found 9879448 
04-07 20:36:30.994 10487-10487/it.bitrack.fabio.bitrack W/GooglePlayServicesUtil: Google Play services out of date. Requires 10298000 but found 9879448 

理由は分かりますか?私のコードは...以下である

コード:私は、コードの一部を追加することで問題を解決でき

mapView.getMapAsync(new OnMapReadyCallback() { 
    @Override 
    public void onMapReady(GoogleMap googleMap) { 
     map = googleMap; 
     map.addMarker(new MarkerOptions() 
     .position(new LatLng(asset.latitude, asset.longitude)) 
     .title(asset.networkAssetCode)); 
     map.setMapType(GoogleMap.MAP_TYPE_HYBRID); 
     map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(asset.latitude, asset.longitude), 17)); 

     lastSeenTextView.setText("Last seen: " + asset.datetime); 

     try { 

      r.getLocationFromCoordinates(asset.latitude, asset.longitude, new Callback() { 
       @Override public void onFailure(Call call, IOException e) { 
        e.printStackTrace(); 
       } 

       @Override public void onResponse(Call call, Response response) throws IOException { 
        try (final ResponseBody responseBody = response.body()) { 
         if (!response.isSuccessful()) throw new IOException("Unexpected code " + response); 

         Headers responseHeaders = response.headers(); 
         for (int i = 0, size = responseHeaders.size(); i < size; i++) { 
          System.out.println(responseHeaders.name(i) + ": " + responseHeaders.value(i)); 
         } 

         final String result = responseBody.string(); 
         Log.i("BiTrack", "Google Reverse Geolocation\n" + result); 

         try { 

          getActivity().runOnUiThread(new Runnable() { 
           @Override 
           public void run() { 

            Json j = new Json(); 

            updateMapView(j.getAddressFromGeolocationCoordinates(result)); 

           } 
          }); 

          } catch (Exception e) { 

          e.printStackTrace(); 

         } 
        } 
       } 
      }); 

      } catch (Exception e) { 

      e.printStackTrace(); 

     } 

    } 
}); 
+0

がしましたあなたはデバッグ証明書を使ってアプリを実行しますか?またはリリース証明書を使用しましたか? –

+0

私はAndroidが初めてで、実際のデバイスで初めて動作します。私はこれらのことが何であるか分かりません。説明できますか?たぶんそれは私の問題です...ありがとう! – user1060551

+0

実際にクラスに 'OnMapReadyCallback'を実装する必要があります。 –

答えて

1

私はここに別の質問で見つかった:

GooglePlayServicesUtil: Google Play services out of date. Requires 5089000 but found 5077534

private boolean checkPlayServices() { 
     GoogleApiAvailability googleAPI = GoogleApiAvailability.getInstance(); 
     int result = googleAPI.isGooglePlayServicesAvailable(getContext()); 
     if(result != ConnectionResult.SUCCESS) { 
      if(googleAPI.isUserResolvableError(result)) { 
       googleAPI.getErrorDialog(getActivity(), result, 
         PLAY_SERVICES_RESOLUTION_REQUEST).show(); 
      } 

      return false; 
     } 

     return true; 
    } 
関連する問題