Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android 2.3 and google maps API v2

Tags:

java

android

Today I tried to use google maps api v2 for Android 2.3.3 My steps:

  • got SHA1 code from debug.keystore
  • create a new project in google apis console
  • register a new id
  • enabled google maps android api v2
  • create an android key using as input SHA1;it.mappe (it.mappe is my package)
  • get API key
  • update AndroidManifest file:

    <permission android:name="it.mappe.permission.MAPS_RECEIVE" android:protectionLevel="signature" />
    
    <uses-permission android:name="it.mappe.permission.MAPS_RECEIVE" />
    <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="16" />
    
    <uses-permission android:name="android.permission.INTERNET" />
    <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" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
    
    <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" >
        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="MY_KEY" />
    
            <activity
                android:name="it.mappe.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>
    </application>
    
  • my main activity

    public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }   
    
  • my activity_main:

    <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"/>
    
  • copy directory ANDROID_SDK_DIR/extras/google/google_play_services/libproject/google-play-services_lib to root of your project

  • add /extras/android/compatibility/v4/android-support-v4.jar as external jar

  • add next line to the YOUR_PROJECT/project.properties android.library.reference.1=google-play-services_lib

When i run it on my samsung galaxy S (with google play services apk), it crashs and logcat shows this errors

E/AndroidRuntime(6435): FATAL EXCEPTION: main java.lang.RuntimeException: Unable to start activity ComponentInfo{it.mappe/it.mappe.MainActivity}: 

android.view.InflateException: Binary XML file line #2: Error inflating class fragment
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:123)
    at android.app.ActivityThread.main(ActivityThread.java:3687)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:507)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
    at dalvik.system.NativeStart.main(Native Method)
 Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class fragment
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:581)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:386)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:209)
    at android.app.Activity.setContentView(Activity.java:1657)
    at it.mappe.MainActivity.onCreate(MainActivity.java:12)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
    ... 11 more
 Caused by: java.lang.ClassNotFoundException: android.view.fragment in loader dalvik.system.PathClassLoader[/data/app/it.mappe-2.apk]
    at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
    at android.view.LayoutInflater.createView(LayoutInflater.java:471)
    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:549)
    at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568)
    ... 19 more

some suggestions?

EDIT

here my main.xml:

<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"/>
like image 853
antedesk Avatar asked Dec 05 '12 22:12

antedesk


People also ask

What is the latest version of Google Maps for Android?

The most recent version of Google Maps beta is 10.66. 1 (up from 10.64. 1 beta on March 31), while for those running the stable build, the latest update is Google Maps 10.65.

Is Google Maps API no longer free?

You won't be charged until your usage exceeds $200 in a month. Note that the Maps Embed API, Maps SDK for Android, and Maps SDK for iOS currently have no usage limits and are at no charge (usage of the API or SDKs is not applied against your $200 monthly credit).


2 Answers

<fragment> should be in all lowercase.

Also, you are using Activity (not FragmentActivity) with SupportMapFragment, and I doubt that combination will work.

like image 88
CommonsWare Avatar answered Nov 03 '22 00:11

CommonsWare


Check if the target Google SDK version in the project.properties and the support lib(Android.jar) versions are the same.

like image 35
Balaji Jayaraman Avatar answered Nov 03 '22 01:11

Balaji Jayaraman