0

I am building a tabbed app and one of the tabs has a map in it. I keep getting the error that I need to update "google play services". I have already downloaded the entire API 22 along with the all the google related "Extras"on my SDK.
I read something saying that it is impossible to get maps running on an emulator, but the example maps program android studio gives you works fine. I am not sure if it a problem with something like my manifest or not.

My AndroidManifest:

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

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

    <uses-permission android:name="com.example.lastgmap.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_NETWORK_STATE" />


    <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="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <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>

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

My Gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.myapp"
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile 'com.google.android.gms:play-services:7.5.0'
    //compile 'com.google.android.gms:play-services:4.2.+'

}

Here is my class for the fragment I am trying to display in my tabbed Activity:

public class MapFragment extends Fragment implements OnMapReadyCallback {

        MapView mMapView;
        private GoogleMap googleMap;

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // inflate and return the layout
            View v = inflater.inflate(R.layout.fragment_location_info, container,
                    false);

            mMapView = (MapView) v.findViewById(R.id.mapView);
            mMapView.onCreate(savedInstanceState);

            //mMapView.onResume(); // should not be needed

            mMapView.getMapAsync(this);

            //MapsInitializer.initialize(getApplicationContext());

            // Perform any camera updates here
            return v;
        }

        @Override
        public void onMapReady(GoogleMap gMap) {

            googleMap = gMap;

            mMapView.onResume(); //call this here if you really need to

            //MapsInitializer.initialize(getApplicationContext());
            // latitude and longitude
            double latitude = 17.385044;
            double longitude = 78.486671;

            // create marker
            MarkerOptions marker = new MarkerOptions().position(new LatLng(latitude, longitude)).title("Hello Maps");

            // Changing marker icon
            marker.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ROSE));

            // adding marker
            googleMap.addMarker(marker);

            CameraPosition cameraPosition = new CameraPosition.Builder().target(new LatLng(17.385044, 78.486671)).zoom(12).build();

            googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

        }

        @Override
        public void onResume() {
            super.onResume();
            mMapView.onResume();
        }

        @Override
        public void onPause() {
            super.onPause();
            mMapView.onPause();
        }

        @Override
        public void onDestroy() {
            super.onDestroy();
            mMapView.onDestroy();
        }

        @Override
        public void onLowMemory() {
            super.onLowMemory();
            mMapView.onLowMemory();
        }
    }

XML:

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

A stack overflow page said I should add the line compile 'com.google.android.gms:play-services:4.2.+' to my dependencies, but doing that then gives be an error when I try and import OnMapReadyCallback in my main activity.

What else can I do to get this working?

JohnF
  • 23
  • 8
  • in order for the map to work on emulator you have to download google play services apk into your emulator it is the only work around I know you can search for it – Ahmed Basyouny Jul 07 '15 at 15:25
  • i didn't test but sems like it is still f* up http://stackoverflow.com/questions/30165458/can-not-run-google-play-service-on-emulator-need-to-update-google-play-service#comment-48439896 – Selvin Jul 07 '15 at 15:58
  • 1
    Try adding the code from this answer and see if you get prompted to upgrade: http://stackoverflow.com/questions/30851068/android-place-picker-builder-buildcontext/30852869#30852869 – Daniel Nugent Jul 07 '15 at 16:11
  • Did you try to run this code on a real device? – bjiang Jul 07 '15 at 17:39
  • just ran the code on a real device and it is working perfectly – JohnF Jul 07 '15 at 18:10
  • You can try [Genymotion](https://www.genymotion.com/#!/) and add the google play service [here](https://gist.github.com/jbj88817/8f464a33269a48811d5d) on it, I will work. – bjiang Jul 07 '15 at 20:31

0 Answers0