Пустой экран вместо карты api v2 android

Я потратил 3 дня, но не могу найти решение... Когда я запускаю карту на устройстве с Android 2.2, у меня пустой экран с кнопками масштабирования. Logcat показывает сообщение об ошибке «E/copybit: ошибка при открытии буфера кадра errno=13 (отказано в доступе)».

Были добавлены google-play-services_lib и android-support-v4.

Мой манифест Android:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.testmap"
      android:versionCode="1"
      android:versionName="1.0">

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

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

<permission
        android:name="com.testmap.permission.MAPS_RECEIVE"
        android:protectionLevel="signature"/>
<uses-permission android:name="com.testmap.permission.MAPS_RECEIVE"/>

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

<application android:label="@string/app_name"
             android:allowBackup="true"
             android:icon="@drawable/icon_iphone">

    <activity android:name=".MainActivity.MainActivity"
              android:label="@string/app_name"
              android:screenOrientation="portrait"
              android:theme="@android:style/Theme.NoTitleBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>
    </activity>


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

</application>

Fragment:

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/mapViewMain"
              android:layout_marginTop="7dp"
              android:name="com.google.android.gms.maps.SupportMapFragment"
              android:layout_width="match_parent"
              android:layout_height="match_parent"/>

person Anton Kashpor    schedule 19.06.2013    source источник
comment
любой намек Logcat? Возможно, ошибка в аутентификации Google?   -  person Cob013    schedule 19.06.2013
comment
@ Rob013 нет, только это: E/copybit: ошибка при открытии буфера кадра errno=13 (отказано в доступе).   -  person Anton Kashpor    schedule 19.06.2013
comment
@whisperofblood ты нашел причину? Я думаю, что имею дело с той же проблемой. Приложение отлично работает в 2.3, но не в 2.2 (пробовал только на одном устройстве 2.2)   -  person The Nail    schedule 25.06.2013
comment
@whisperofblood FYI проверяет ответ на этот stackoverflow.com/questions/13768681/   -  person The Nail    schedule 25.06.2013


Ответы (2)


Я думаю, что это связано с версией SDK. Попробуйте с верхней SDK 13. Я использую то же самое на Android 4.0 (SDK 14). Итак, если вы измените свой

<uses-sdk android:minSdkVersion="8">

to

<uses-sdk android:minSdkVersion="14"/>

Я думаю, это сработает.
EDIT:
Вы пытаетесь использовать фрагменты на устройстве API уровня 8. Поэтому переключитесь на FragmentActivity и SupportMapFragment.

import android.support.v4.app.FragmentActivity;
import com.google.android.gms.maps.SupportMapFragment;

public class MainActivity extends FragmentActivity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
 }

}

Чтобы получить карту, используйте ..

   FragmentManager myFragmentManager = getSupportFragmentManager();
   SupportMapFragment mySupportMapFragment 
    = (SupportMapFragment)myFragmentManager.findFragmentById(R.id.map);
   myMap = mySupportMapFragment.getMap(); 
person ridoy    schedule 19.06.2013
comment
Спасибо, но если изменить версию sdk, я не смогу запустить его на Android API 8 (2.2). @ридой - person Anton Kashpor; 19.06.2013
comment
Если вы хотите запустить его на Android 2.2, я предлагаю вам использовать API карты Google v1 вместо v2. Потому что v2 требует minsdkVersion как 14. - person ridoy; 19.06.2013
comment
нет, V2 работает с 2.2 и выше. Просто нужно добавить android-support-v4 в свой проект. - person Anton Kashpor; 19.06.2013
comment
@ Yume117, а что тогда поддерживается? - person Axarydax; 11.11.2013

Чтобы использовать Google Maps API V2 в версии Android до API 12, вам потребуется использовать библиотеку android-support для обратной совместимости фрагментов. Кроме того, вам нужно будет использовать FragmentAcitivity, как уже было сказано, и SupportMapFragment, как вы уже делали.

Я предлагаю вам просмотреть этот пост в блоге, который я написал, который поможет вам интегрировать эти компоненты в ваше приложение и заставить вашу карту работать:

API Карт Google версии 2

Кроме того, я думаю, что ваша проблема может быть вызвана неправильным созданием ключа API, взгляните также на этот пост в блоге и убедитесь, что вы сделали все шаги правильно:

Ключ Google Maps API V2

person Emil Adz    schedule 20.06.2013