Карты API v2 Android Мое местоположение не работает на 2.3.3

Я использую maps api v2 в приложении для Android, которое поддерживает 2.3.3, и я установил setMyLocationEnabled (true), конечно, у меня есть кнопка, которая отлично работает на желейных бобах, но не работает на 2.3.3.

вот как я назвал карту:

    private void setUpMapIfNeeded() {
    // Do a null check to confirm that we have not already instantiated the map.
    if (mMap == null) {
        // Try to obtain the map from the SupportMapFragment.
        mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

        // Check if we were successful in obtaining the map.
        if (mMap != null) {
            setUpMap();
        }
    }
}

private void setUpMap(){
    mMap.setMyLocationEnabled(true);
    if(ttdBranch!=null){
        mMap.addMarker(new MarkerOptions()
        .position(new LatLng(ttdBranch.getLatitude(), ttdBranch.getLongitude()))
        .snippet(getResources().getString(R.string.branch) + "\n" + ttdBranch.getName()));
        LatLng pos = new LatLng(ttdBranch.getLatitude(),ttdBranch.getLongitude());
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(pos, 14));
    }
}

вот манифест:

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

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

<permission android:name="*******.permission.MAPS_RECEIVE" android:protectionLevel="signature"/>

<uses-permission android:name="*******.permission.MAPS_RECEIVE"/>
<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.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_ttd_petales"
    android:label="@string/app_name"
    android:theme="@style/Holo.Theme.Light" >
    <activity
        android:name="*******.MainActivity"
        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="*******.BranchesMapActivity" />
    <activity android:name="*******.BranchDetailActivity"/>


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

Я убедился, что на телефоне включен датчик местоположения, и он работает в приложении Google Map, но не в моем приложении.

Любая помощь ?

Спасибо.


person Houssem    schedule 03.01.2013    source источник
comment
Не могли бы вы показать свой manifest.xml   -  person Stephane    schedule 03.01.2013
comment
У меня такая же проблема, ты решил ее?   -  person KingofHeaven    schedule 17.01.2013
comment
привет, KingofHeaven, нет, на самом деле не решил, но это странно сработало, может быть, 2.3.3 требует больше времени, чтобы получить местоположение .. может быть.   -  person Houssem    schedule 17.01.2013
comment
привет Хуссем, Спасибо за ваш ответ. У меня тоже это заработало, но потребовалось некоторое время, чтобы найти местоположение. Спасибо еще раз :)   -  person KingofHeaven    schedule 17.01.2013
comment
Если setMyLocationEnabled() доступен в jelly bean, он ДОЛЖЕН работать и в Android 2.3.3. Насколько я знаю, проверьте, установлены ли API Google для Android 2.3.3 в Android SDK Manager.   -  person BBonDoo    schedule 19.01.2013
comment
да конечно он установлен.. @BBonDoo   -  person Houssem    schedule 21.01.2013
comment
Ваш файл манифеста был установлен на ‹uses-sdk android:minSdkVersion=8›. Если вы хотите работать на Android 2.3.3, вы должны изменить этот параметр на 10.   -  person BBonDoo    schedule 24.01.2013
comment
Я думаю, что это не имеет значения, так как maps-v2 покрывается последней версией suppot-library-v4.   -  person Houssem    schedule 25.01.2013


Ответы (1)


Пожалуйста, проверьте это ниже..

1. проверьте, существует ли в вашем проекте папка «libs», содержащая «android-support-v4.jar».

"android-support-v4.jar" is located in "/extras/android/compatibility/v4/android-support-v4.jar" under your "android-sdk" drectory.

"Google Maps Android API требует API уровня 12 или выше для поддержки объектов MapFragment. Если вы ориентируетесь на приложение более ранним, чем уровень API 12, вы можете получить доступ к тем же функциям через класс SupportMapFragment. Вы также необходимо будет включить библиотеку поддержки Android». описано в этом руководстве по разработке для Android (нажмите здесь).

2. Перед запуском проекта вы должны установить цель сборки проекта на «API Google», а не на Android x.x. версия:

Select your project and click Project > Properties > Project Build Target in Eclipse and select any "Google APIs ", and then run your project on your real phone(handset). If you use the emulator, you will get the failed result because the app with the Google Play Service library is not supported in the emulator.

"Сервисы Google Play не поддерживаются в эмуляторе Android — для разработки с использованием API необходимо предоставить устройство для разработки, например телефон или планшет Android". описан в этом руководстве по разработке для Android(нажмите здесь).

3. Еще раз: вам не нужно создавать новый ключ API Карт Google, чтобы протестировать свой проект. Просто используйте предоставленный по умолчанию ключ API, который отображается как «Ключ для приложений браузера (с реферерами)< /strong> "в консоли API Google.

4.Наконец, наиболее важным является добавление сервисов Google Play в качестве проекта библиотеки Android следующим образом:

Select File > Import > Android > Existing Android Code Into Workspace and click Next. Select Browse..., enter /extras/google/google_play_services/libproject/google-play-services_lib, and click Finish.

Надеюсь, мой комментарий будет вам полезен.

person BBonDoo    schedule 24.01.2013
comment
Спасибо, чувак, но, как я уже говорил, он начал работать после того, как устройство получило местоположение, для определения местоположения требуется много времени, может быть в этом причина. - person Houssem; 25.01.2013