#P1 Using Google Map in your Application

Pre-requisites :
a. ADT is already installed (Reference : Installation of Android Development Tools (ADT))
b. Google map key (Reference : How to generate google map key.html)
c. Google API (Install Google API if not already installed)
    (Google API = map api + android api)
Use Eclipse to install Google API as shown below


----------------------------------------------------------------------------------
Project Structure :


----------------------------------------------------------------------------------
Setting Emulator for Google Map Application :
- Select Target : "Google API" as shown below 
(In the Target, Google API option is available after installing Google API using Android SDK Manager in Eclipse) 

Steps to create Map based application :

1) Create Activity which extends MapActivity
package com.namasteandroid.mapapp;
import android.os.Bundle;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
public class MyMapsActivity extends MapActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String mapKey = "0CJatumMJbC7I_ZPfoi5gQWZffw"; //Replace this key with yours 
        MapView mapView = new MapView(this, mapKey);
        mapView.setEnabled(true);
        mapView.setClickable(true);
        mapView.setBuiltInZoomControls(true);
        setContentView(mapView);
    }
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
----------------------------------------------------------------------------------
2) Modify Manifest (/res/AndrodManifest.xml) add below lines highlighted in orange
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.namasteandroid.mapapp"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk android:minSdkVersion="7" />
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".MyMapsActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <uses-library android:name="com.google.android.maps" />
    </application>
    <uses-permission android:name="android.permission.INTERNET" />
</manifest>

----------------------------------------------------------------------------------
3) Output

How to generate Google Map Key ?

1. Signup for Android Map API key (it allows to embed Google maps in Android App)

2. Use your Google account to finally generate Map Key

3. Generate your certificate's MD5 fingerprint
i)  Check for debug.keystore on your machine under [.android] directory
        Example on MacOS:
        /Users/santoshlg/.android/debug.keystore

ii) Check for the keytool location on your machine (JDK installation)  
        Example on Windows:
     C:\Program Files\Java\jdk1.6.0_21\bin\keytool
   
iii) Use below command to list contents of existing debug.keystore
            $keytool -list -keystore ~/.android/debug.keystore

     Enter keystore password: android
     Keystore type: JKS
     Keystore provider: SUN
     Your keystore contains 1 entry

     androiddebugkey, Jun 26, 2010, PrivateKeyEntry,
     Certificate fingerprint (MD5): 8A:B7:F5:D4:0F:F3:FA:31:E6:24:D6


iv) Access below URL and enter Certificate fingerprint (MD5) generated above 
           URL: http://code.google.com/android/maps-api-signup.html

v) Finally you will get page similar to below,
      

4. Use Map key (generated above) in your application code so that your application can use Google Map API (Important : Please go through the Google Policy for Using their API in your code)
i) Create Activity which extends MapActivity
import android.os.Bundle;

import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;

public class MyMapsActivity extends MapActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.main);
        String mapKey = "0CXT_1IuVXHJUxJatumMJbC7I_Zw"
        MapView mapView = new MapView(this, mapKey);
        mapView.setEnabled(true);
        mapView.setClickable(true);
        mapView.setBuiltInZoomControls(true);
        setContentView(mapView);
        
    }

@Override
protected boolean isRouteDisplayed() {
return false;
}
}

For detail map application please refer to below blog post,
http://namaste-android.blogspot.jp/2012/04/using-google-map-in-your-application.html

Creating UI using XML and Java

Below are the two ways to create UI (User Interface)
------------------------------------------------------------------
1) Using XML (use below 2 files)

i) XML code (/res/layout/main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="UI Created by using XML layout (res/layout/main.xml)" 
        android:textColor="#FF11AA33"
     />
</LinearLayout>

ii) Java (/src/MyXmlLayoutActivity.java)
import android.app.Activity;
import android.os.Bundle;

public class MyXmlLayoutActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

Output


2) Using Java (use below 1 file)
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MyJavaLayoutActivity extends Activity {

LinearLayout linear;
TextView text;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

linear = new LinearLayout(this);
linear.setOrientation(LinearLayout.VERTICAL);
text = new TextView(this);
text.setText("UI Created by Java Code without using /layout/main.xml");
text.setTextColor(Color.parseColor("#FF11AA33")); //#AARRGGBB format 
linear.addView(text);
setContentView(linear);
}
}

Output