0

新しいAPIを使用してアプリにマップを表示しようとしていますが、得られるのは次のとおりです。

「Google Play Services の既知の問題」

これは私のマニフェストです:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.monitoringsensors"
android:versionCode="1"
android:versionName="1.0" 
>

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="16"/>

<uses-permission android:name="android.permission.INTERNET"/> 

<permission
      android:name="com.example.monitoringsensors.MAPS_RECEIVE"
      android:protectionLevel="signature"/>


<uses-permission android:name="com.example.monitoringsensors.permission.MAPS_RECEIVE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

 <uses-feature android:glEsVersion="0x00020000"
               android:required="true"/>

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" 

    >


    <activity
        android:name="com.example.monitoringsensors.Title"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name="com.example.monitoringsensors.HttpExample"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.HTTPEXAMPLE" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

     <activity
        android:name="com.example.monitoringsensors.TakeSomeData"
        android:label="@string/app_name" 
        android:theme="@android:style/Theme.Dialog">
        <intent-filter>
            <action android:name="android.intent.action.TAKESOMEDATA" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>



     <meta-data android:name="com.google.android.maps.v2.API_KEY"
           android:value="AIzaSyCW3iv83siHrkWM6Q2qV4YcXk27CZWwmqc"></meta-data>

</application>

</manifest>

これが XML ファイルです。

    <?xml version="1.0" encoding="utf-8"?>
    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    class="com.google.android.gms.maps.SupportMapFragment"/>

そして、クラスは次のように呼び出されます。

  public class HttpExample  extends android.support.v4.app.FragmentActivity {...}

ありがとうございます!

4

2 に答える 2

1

マップの可用性を確認する必要があります GoogleMap オブジェクトを操作する前に、オブジェクトをインスタンス化できること、および Google Play サービス コンポーネントがターゲット デバイスに正しくインストールされていることを確認する必要があります。MapFragment.getMap() または MapView.getMap() メソッドを呼び出し、返されたオブジェクトが null でないことを確認することで、GoogleMap が使用可能であることを確認できます。 https://developers.google.com/maps/documentation/android/map#verify_map_availability

于 2012-12-17T20:49:25.973 に答える
0

私は個人的にこのコードを使用してGooglePlayサービスをチェックしています。2.3.3を実行している実際のデバイスとさまざまなバージョンのOSのエミュレーターの両方でテストしています。更新されたGooglePlayサービスが付属していないため、エミュレーターが破損するのを防ぎます。これにより、AndroidGoogleマップのv2が有効になります。
protected boolean readyToGo() {

String TAG_ERROR_DIALOG_FRAGMENT="errorDialog";

int status= GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
    if (status == ConnectionResult.SUCCESS) {
      return(true);
    }
    else if (GooglePlayServicesUtil.isUserRecoverableError(status)) {
      ErrorDialogFragment.newInstance(status)
                         .show(getSupportFragmentManager(),
                               TAG_ERROR_DIALOG_FRAGMENT);
    }
    else {
      Toast.makeText(this, "no maps", Toast.LENGTH_LONG).show();
      finish();
    }

    return(false);
  }

マップを表示できる場合はtrueを返します。つまり、デバイスに必要なGoogle Playサービスがある場合はfalseを返し、そうでない場合はfalseを返します。これは、現在のEclipseなどの標準エミュレーターの場合です。

于 2012-12-20T22:00:13.760 に答える