<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" gd:etag="W/&quot;D0MEQnc9eyp7ImA9WxNbEEg.&quot;"><id>tag:blogger.com,1999:blog-89878749563391212</id><updated>2009-11-12T11:50:03.963-08:00</updated><title>Android-er</title><subtitle type="html">Beginner to beginner</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://android-er.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://android-er.blogspot.com/" /><link rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Erik</name><uri>http://www.blogger.com/profile/09785614394075930658</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>111</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><link rel="self" href="http://feeds.feedburner.com/Android-er" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry gd:etag="W/&quot;CkMESHc5eCp7ImA9WxNbEEk.&quot;"><id>tag:blogger.com,1999:blog-89878749563391212.post-3194200347420744781</id><published>2009-11-12T07:37:00.000-08:00</published><updated>2009-11-12T07:40:09.920-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-12T07:40:09.920-08:00</app:edited><title>setBuiltInZoomControls on MapView</title><content type="html">If you read the article &lt;a href="http://developer.android.com/guide/tutorials/views/hello-mapview.html"&gt;Hello, MapView &lt;/a&gt;from Android, ZoomControls widget is suggested for zooming in and out of a View. MapView can automatically hook one for us by requesting it with the getZoomControls() method. But...actually it is now deprecated.&lt;br /&gt;&lt;br /&gt;Instead of ZoomControls, MapView.setBuiltInZoomControls(true) can be used to add zoom mechanism on MapView.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_C5a2qH8Y_jk/Svwr6pSaxaI/AAAAAAAAAQY/pRQ9We_r0oc/s1600-h/AndroidLocation_06.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 281px;" src="http://3.bp.blogspot.com/_C5a2qH8Y_jk/Svwr6pSaxaI/AAAAAAAAAQY/pRQ9We_r0oc/s400/AndroidLocation_06.png" alt="" id="BLOGGER_PHOTO_ID_5403241939453265314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Modify from previous article, &lt;a href="http://android-er.blogspot.com/2009/11/androidlocation-with-checkbox-to-toggle.html"&gt;AndroidLocation: with a CheckBox to toggle MapView.setSatellite()&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Modify main.xml to remove SeekBar from the previous layout, and change android:clickable of com.google.android.maps.MapView to "true".&lt;br /&gt;&lt;br /&gt;main.xml&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"&lt;br /&gt; android:orientation="vertical"&lt;br /&gt; android:layout_width="fill_parent"&lt;br /&gt; android:layout_height="fill_parent"&lt;br /&gt; &amp;gt; &lt;br /&gt; &amp;lt;LinearLayout&lt;br /&gt;  android:orientation="horizontal"&lt;br /&gt;  android:layout_width="fill_parent"&lt;br /&gt;  android:layout_height="wrap_content"&lt;br /&gt;  &amp;gt;&lt;br /&gt;  &amp;lt;LinearLayout&lt;br /&gt;  android:orientation="vertical"&lt;br /&gt;  android:layout_width="wrap_content"&lt;br /&gt;  android:layout_height="wrap_content"&lt;br /&gt;  &amp;gt;&lt;br /&gt;   &amp;lt;CheckBox&lt;br /&gt;    android:id="@+id/satellite"&lt;br /&gt;    android:layout_width="wrap_content"&lt;br /&gt;    android:layout_height="wrap_content"&lt;br /&gt;    android:text=" Satellite "&lt;br /&gt;   /&amp;gt;&lt;br /&gt;  &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;  &amp;lt;LinearLayout&lt;br /&gt;  android:orientation="vertical"&lt;br /&gt;  android:layout_width="fill_parent"&lt;br /&gt;  android:layout_height="wrap_content"&lt;br /&gt;  &amp;gt;&lt;br /&gt;   &amp;lt;TextView&lt;br /&gt;    android:id="@+id/longitude"&lt;br /&gt;    android:layout_width="fill_parent"&lt;br /&gt;    android:layout_height="wrap_content"&lt;br /&gt;    android:text="Longitude:"&lt;br /&gt;   /&amp;gt;&lt;br /&gt;   &amp;lt;TextView&lt;br /&gt;    android:id="@+id/latitude"&lt;br /&gt;    android:layout_width="fill_parent"&lt;br /&gt;    android:layout_height="wrap_content"&lt;br /&gt;    android:text="Latitude:"&lt;br /&gt;   /&amp;gt;&lt;br /&gt;  &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt; &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt; &amp;lt;com.google.android.maps.MapView&lt;br /&gt;  android:id="@+id/mapview"&lt;br /&gt;  android:layout_width="fill_parent"&lt;br /&gt;  android:layout_height="fill_parent"&lt;br /&gt;  android:clickable="true"&lt;br /&gt;  android:apiKey="-----Your Own API Key here-------------"&lt;br /&gt; /&amp;gt;&lt;br /&gt;&amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Modify AndroidLocation.java, remove all myZoomBar related code, and add the code&lt;br /&gt; myMapView.setBuiltInZoomControls(true);&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;package com.AndroidLocation;&lt;br /&gt;&lt;br /&gt;import com.google.android.maps.GeoPoint;&lt;br /&gt;import com.google.android.maps.MapActivity;&lt;br /&gt;import com.google.android.maps.MapController;&lt;br /&gt;import com.google.android.maps.MapView;&lt;br /&gt;&lt;br /&gt;import android.content.Context;&lt;br /&gt;import android.location.Location;&lt;br /&gt;import android.location.LocationListener;&lt;br /&gt;import android.location.LocationManager;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import android.view.View;&lt;br /&gt;import android.widget.CheckBox;&lt;br /&gt;import android.widget.TextView;&lt;br /&gt;import android.widget.Toast;&lt;br /&gt;&lt;br /&gt;public class AndroidLocation extends MapActivity {&lt;br /&gt;&lt;br /&gt; private LocationManager myLocationManager;&lt;br /&gt; private LocationListener myLocationListener;&lt;br /&gt; private TextView myLongitude, myLatitude;&lt;br /&gt; private CheckBox mySatellite;&lt;br /&gt; &lt;br /&gt; private MapView myMapView;&lt;br /&gt; &lt;br /&gt; private MapController myMapController;&lt;br /&gt;&lt;br /&gt; private void CenterLocation(GeoPoint centerGeoPoint)&lt;br /&gt; {&lt;br /&gt;  myMapController.animateTo(centerGeoPoint);&lt;br /&gt;  &lt;br /&gt; &lt;br /&gt;  myLongitude.setText("Longitude: "+&lt;br /&gt;    String.valueOf((float)centerGeoPoint.getLongitudeE6()/1000000)&lt;br /&gt;    );&lt;br /&gt;  myLatitude.setText("Latitude: "+&lt;br /&gt;    String.valueOf((float)centerGeoPoint.getLatitudeE6()/1000000)&lt;br /&gt;    );&lt;br /&gt; };&lt;br /&gt; &lt;br /&gt; private void SetSatellite()&lt;br /&gt; {&lt;br /&gt;  myMapView.setSatellite(mySatellite.isChecked());&lt;br /&gt; };&lt;br /&gt;&lt;br /&gt; /** Called when the activity is first created. */&lt;br /&gt; @Override&lt;br /&gt; public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;  super.onCreate(savedInstanceState);&lt;br /&gt;  setContentView(R.layout.main);&lt;br /&gt;  &lt;br /&gt;  myMapView = (MapView)findViewById(R.id.mapview);&lt;br /&gt;  &lt;br /&gt;  myMapView.setBuiltInZoomControls(true);&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;  myLongitude = (TextView)findViewById(R.id.longitude);&lt;br /&gt;  myLatitude = (TextView)findViewById(R.id.latitude);&lt;br /&gt;  mySatellite = (CheckBox)findViewById(R.id.satellite);&lt;br /&gt;  &lt;br /&gt;  SetSatellite();&lt;br /&gt;  myMapController = myMapView.getController();&lt;br /&gt;&lt;br /&gt;  myLocationManager = (LocationManager)getSystemService(&lt;br /&gt;    Context.LOCATION_SERVICE);&lt;br /&gt;&lt;br /&gt;  myLocationListener = new MyLocationListener();&lt;br /&gt;&lt;br /&gt;  myLocationManager.requestLocationUpdates(&lt;br /&gt;    LocationManager.GPS_PROVIDER,&lt;br /&gt;    0,&lt;br /&gt;    0,&lt;br /&gt;    myLocationListener);&lt;br /&gt;  &lt;br /&gt;  //Get the current location in start-up&lt;br /&gt;  //check LastKnownLocation, if not valid, skip it.&lt;br /&gt;  Location initLocation=myLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);&lt;br /&gt;  if(initLocation != null)&lt;br /&gt;  {&lt;br /&gt;   GeoPoint initGeoPoint = new GeoPoint(&lt;br /&gt;     (int)(initLocation.getLatitude()*1000000),&lt;br /&gt;     (int)(initLocation.getLongitude()*1000000));&lt;br /&gt;   CenterLocation(initGeoPoint);&lt;br /&gt;  }&lt;br /&gt;  mySatellite.setOnClickListener(mySatelliteOnClickListener);&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; private CheckBox.OnClickListener mySatelliteOnClickListener =&lt;br /&gt;  new CheckBox.OnClickListener(){&lt;br /&gt;&lt;br /&gt;   public void onClick(View v) {&lt;br /&gt;    // TODO Auto-generated method stub&lt;br /&gt;    SetSatellite();&lt;br /&gt;   }&lt;br /&gt;  &lt;br /&gt; };&lt;br /&gt; &lt;br /&gt;&lt;br /&gt; private class MyLocationListener implements LocationListener{&lt;br /&gt;&lt;br /&gt;  public void onLocationChanged(Location argLocation) {&lt;br /&gt;   // TODO Auto-generated method stub&lt;br /&gt;   GeoPoint myGeoPoint = new GeoPoint(&lt;br /&gt;     (int)(argLocation.getLatitude()*1000000),&lt;br /&gt;     (int)(argLocation.getLongitude()*1000000));&lt;br /&gt;   &lt;br /&gt;   CenterLocation(myGeoPoint);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void onProviderDisabled(String provider) {&lt;br /&gt;   // TODO Auto-generated method stub&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void onProviderEnabled(String provider) {&lt;br /&gt;   // TODO Auto-generated method stub&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void onStatusChanged(String provider,&lt;br /&gt;    int status, Bundle extras) {&lt;br /&gt;   // TODO Auto-generated method stub&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; protected boolean isRouteDisplayed() {&lt;br /&gt;  // TODO Auto-generated method stub&lt;br /&gt;  return false;&lt;br /&gt; };&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;  &lt;br /&gt;&lt;a href="http://www.ziddu.com/download/7336119/AndroidLocation_files_091112b.zip.html"&gt;&lt;img style="width: 18px; height: 21px;" src="http://2.bp.blogspot.com/_J90P-hyr9o8/SmR6wLejZpI/AAAAAAAAAbg/iSloE1vTVnE/s200/icons_download.gif" alt="" id="BLOGGER_PHOTO_ID_5360544424610981522" border="0" /&gt;Download the files&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/89878749563391212-3194200347420744781?l=android-er.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wpJuJExV04vXrgwOJdt0ko8Y3-4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wpJuJExV04vXrgwOJdt0ko8Y3-4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wpJuJExV04vXrgwOJdt0ko8Y3-4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wpJuJExV04vXrgwOJdt0ko8Y3-4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=b_kLPx0KUOE:3Buh-iUaNCU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=b_kLPx0KUOE:3Buh-iUaNCU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://android-er.blogspot.com/feeds/3194200347420744781/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=89878749563391212&amp;postID=3194200347420744781" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/3194200347420744781?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/3194200347420744781?v=2" /><link rel="alternate" type="text/html" href="http://android-er.blogspot.com/2009/11/setbuiltinzoomcontrols-on-mapview.html" title="setBuiltInZoomControls on MapView" /><author><name>Android Er</name><uri>http://www.blogger.com/profile/04983894331825656853</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14075371138179417242" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_C5a2qH8Y_jk/Svwr6pSaxaI/AAAAAAAAAQY/pRQ9We_r0oc/s72-c/AndroidLocation_06.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CEIEQX8zeip7ImA9WxNUGUs.&quot;"><id>tag:blogger.com,1999:blog-89878749563391212.post-1873163352352585389</id><published>2009-11-11T09:58:00.001-08:00</published><updated>2009-11-11T10:01:40.182-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-11T10:01:40.182-08:00</app:edited><title>AndroidLocation: with a CheckBox to toggle MapView.setSatellite()</title><content type="html">Modify previous exercise &lt;a href="http://android-er.blogspot.com/2009/11/androidlocation-with-zoom-level-control.html"&gt;AndroidLocation with Zoom Level Control, using SeekBar&lt;/a&gt;, to have a CheckBox used to toggle "satellite" mode.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_C5a2qH8Y_jk/Svr7UgSAB7I/AAAAAAAAAQQ/66BxGliKREY/s1600-h/AndroidLocation_05.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 281px;" src="http://3.bp.blogspot.com/_C5a2qH8Y_jk/Svr7UgSAB7I/AAAAAAAAAQQ/66BxGliKREY/s400/AndroidLocation_05.png" alt="" id="BLOGGER_PHOTO_ID_5402907032665720754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;main.xml&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"&lt;br /&gt;android:orientation="vertical"&lt;br /&gt;android:layout_width="fill_parent"&lt;br /&gt;android:layout_height="fill_parent"&lt;br /&gt;&amp;gt;&lt;br /&gt; &amp;lt;LinearLayout&lt;br /&gt;  android:orientation="horizontal"&lt;br /&gt;  android:layout_width="fill_parent"&lt;br /&gt;  android:layout_height="wrap_content"&lt;br /&gt;  &amp;gt;&lt;br /&gt;  &amp;lt;LinearLayout&lt;br /&gt;  android:orientation="vertical"&lt;br /&gt;  android:layout_width="wrap_content"&lt;br /&gt;  android:layout_height="wrap_content"&lt;br /&gt;  &amp;gt;&lt;br /&gt;   &amp;lt;CheckBox&lt;br /&gt;   android:id="@+id/satellite"&lt;br /&gt;   android:layout_width="wrap_content"&lt;br /&gt;   android:layout_height="wrap_content"&lt;br /&gt;   android:text=" Satellite "&lt;br /&gt;   /&amp;gt;&lt;br /&gt; &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt; &amp;lt;LinearLayout&lt;br /&gt;   android:orientation="vertical"&lt;br /&gt;   android:layout_width="fill_parent"&lt;br /&gt;   android:layout_height="wrap_content"&lt;br /&gt;   &amp;gt;&lt;br /&gt;   &amp;lt;TextView&lt;br /&gt;   android:id="@+id/longitude"&lt;br /&gt;   android:layout_width="fill_parent"&lt;br /&gt;   android:layout_height="wrap_content"&lt;br /&gt;   android:text="Longitude:"&lt;br /&gt;  /&amp;gt;&lt;br /&gt;  &amp;lt;TextView&lt;br /&gt;  android:id="@+id/latitude"&lt;br /&gt;  android:layout_width="fill_parent"&lt;br /&gt;   android:layout_height="wrap_content"&lt;br /&gt;   android:text="Latitude:"&lt;br /&gt;  /&amp;gt;&lt;br /&gt; &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt; &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;&amp;lt;SeekBar&lt;br /&gt; android:id="@+id/zoombar"&lt;br /&gt;  android:layout_width="fill_parent"&lt;br /&gt;  android:layout_height="wrap_content"&lt;br /&gt;  android:max="20"&lt;br /&gt;  android:progress="0"/&amp;gt;&lt;br /&gt;&amp;lt;com.google.android.maps.MapView&lt;br /&gt; android:id="@+id/mapview"&lt;br /&gt; android:layout_width="fill_parent"&lt;br /&gt;  android:layout_height="fill_parent"&lt;br /&gt;  android:clickable="false"&lt;br /&gt; android:apiKey="-----Your Own API Key here-------------"&lt;br /&gt; /&amp;gt;&lt;br /&gt;&amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;AndroidLocation.java&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;package com.AndroidLocation;&lt;br /&gt;&lt;br /&gt;import com.google.android.maps.GeoPoint;&lt;br /&gt;import com.google.android.maps.MapActivity;&lt;br /&gt;import com.google.android.maps.MapController;&lt;br /&gt;import com.google.android.maps.MapView;&lt;br /&gt;&lt;br /&gt;import android.content.Context;&lt;br /&gt;import android.location.Location;&lt;br /&gt;import android.location.LocationListener;&lt;br /&gt;import android.location.LocationManager;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import android.view.View;&lt;br /&gt;import android.widget.CheckBox;&lt;br /&gt;import android.widget.SeekBar;&lt;br /&gt;import android.widget.TextView;&lt;br /&gt;import android.widget.Toast;&lt;br /&gt;&lt;br /&gt;public class AndroidLocation extends MapActivity {&lt;br /&gt;&lt;br /&gt;private LocationManager myLocationManager;&lt;br /&gt;private LocationListener myLocationListener;&lt;br /&gt;private TextView myLongitude, myLatitude;&lt;br /&gt;private CheckBox mySatellite;&lt;br /&gt;&lt;br /&gt;private MapView myMapView;&lt;br /&gt;private SeekBar myZoomBar;&lt;br /&gt;&lt;br /&gt;private MapController myMapController;&lt;br /&gt;&lt;br /&gt;private void CenterLocation(GeoPoint centerGeoPoint)&lt;br /&gt;{&lt;br /&gt; myMapController.animateTo(centerGeoPoint);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; myLongitude.setText("Longitude: "+&lt;br /&gt;   String.valueOf((float)centerGeoPoint.getLongitudeE6()/1000000)&lt;br /&gt;   );&lt;br /&gt; myLatitude.setText("Latitude: "+&lt;br /&gt;   String.valueOf((float)centerGeoPoint.getLatitudeE6()/1000000)&lt;br /&gt;   );&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;private void SetZoomLevel()&lt;br /&gt;{&lt;br /&gt; int myZoomLevel = myZoomBar.getProgress()+1;&lt;br /&gt; myMapController.setZoom(myZoomLevel);&lt;br /&gt; Toast.makeText(this,&lt;br /&gt;   "Zoom Level : " + String.valueOf(myZoomLevel),&lt;br /&gt;   Toast.LENGTH_LONG).show();&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;private void SetSatellite()&lt;br /&gt;{&lt;br /&gt; myMapView.setSatellite(mySatellite.isChecked());&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;/** Called when the activity is first created. */&lt;br /&gt;@Override&lt;br /&gt;public void onCreate(Bundle savedInstanceState) {&lt;br /&gt; super.onCreate(savedInstanceState);&lt;br /&gt; setContentView(R.layout.main);&lt;br /&gt; myMapView = (MapView)findViewById(R.id.mapview);&lt;br /&gt; myLongitude = (TextView)findViewById(R.id.longitude);&lt;br /&gt; myLatitude = (TextView)findViewById(R.id.latitude);&lt;br /&gt; myZoomBar = (SeekBar)findViewById(R.id.zoombar);&lt;br /&gt; mySatellite = (CheckBox)findViewById(R.id.satellite);&lt;br /&gt;&lt;br /&gt; SetSatellite();&lt;br /&gt; myMapController = myMapView.getController();&lt;br /&gt; SetZoomLevel();&lt;br /&gt;&lt;br /&gt; myLocationManager = (LocationManager)getSystemService(&lt;br /&gt;   Context.LOCATION_SERVICE);&lt;br /&gt;&lt;br /&gt; myLocationListener = new MyLocationListener();&lt;br /&gt;&lt;br /&gt; myLocationManager.requestLocationUpdates(&lt;br /&gt;   LocationManager.GPS_PROVIDER,&lt;br /&gt;   0,&lt;br /&gt;   0,&lt;br /&gt;   myLocationListener);&lt;br /&gt;&lt;br /&gt; //Get the current location in start-up&lt;br /&gt; //check LastKnownLocation, if not valid, skip it.&lt;br /&gt; Location initLocation=myLocationManager.getLastKnownLocation(&lt;br /&gt;                 LocationManager.GPS_PROVIDER);&lt;br /&gt; if(initLocation != null)&lt;br /&gt; {&lt;br /&gt;  GeoPoint initGeoPoint = new GeoPoint(&lt;br /&gt;    (int)(initLocation.getLatitude()*1000000),&lt;br /&gt;    (int)(initLocation.getLongitude()*1000000));&lt;br /&gt;  CenterLocation(initGeoPoint);&lt;br /&gt; }&lt;br /&gt; myZoomBar.setOnSeekBarChangeListener(myZoomBarOnSeekBarChangeListener);&lt;br /&gt; mySatellite.setOnClickListener(mySatelliteOnClickListener);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private CheckBox.OnClickListener mySatelliteOnClickListener =&lt;br /&gt; new CheckBox.OnClickListener(){&lt;br /&gt;&lt;br /&gt;  public void onClick(View v) {&lt;br /&gt;   // TODO Auto-generated method stub&lt;br /&gt;   SetSatellite();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;private SeekBar.OnSeekBarChangeListener myZoomBarOnSeekBarChangeListener =&lt;br /&gt; new SeekBar.OnSeekBarChangeListener(){&lt;br /&gt;&lt;br /&gt;  public void onProgressChanged(SeekBar seekBar, int progress,&lt;br /&gt;    boolean fromUser) {&lt;br /&gt;   // TODO Auto-generated method stub&lt;br /&gt;   SetZoomLevel();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void onStartTrackingTouch(SeekBar seekBar) {&lt;br /&gt;   // TODO Auto-generated method stub&lt;br /&gt;  &lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void onStopTrackingTouch(SeekBar seekBar) {&lt;br /&gt;   // TODO Auto-generated method stub&lt;br /&gt;  &lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;private class MyLocationListener implements LocationListener{&lt;br /&gt;&lt;br /&gt; public void onLocationChanged(Location argLocation) {&lt;br /&gt;  // TODO Auto-generated method stub&lt;br /&gt;  GeoPoint myGeoPoint = new GeoPoint(&lt;br /&gt;    (int)(argLocation.getLatitude()*1000000),&lt;br /&gt;    (int)(argLocation.getLongitude()*1000000));&lt;br /&gt; &lt;br /&gt;  CenterLocation(myGeoPoint);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void onProviderDisabled(String provider) {&lt;br /&gt;  // TODO Auto-generated method stub&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void onProviderEnabled(String provider) {&lt;br /&gt;  // TODO Auto-generated method stub&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void onStatusChanged(String provider,&lt;br /&gt;   int status, Bundle extras) {&lt;br /&gt;  // TODO Auto-generated method stub&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;protected boolean isRouteDisplayed() {&lt;br /&gt; // TODO Auto-generated method stub&lt;br /&gt; return false;&lt;br /&gt;};&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ziddu.com/download/7324533/AndroidLocation_files_091112a.zip.html"&gt;&lt;img style="width: 18px; height: 21px;" src="http://2.bp.blogspot.com/_J90P-hyr9o8/SmR6wLejZpI/AAAAAAAAAbg/iSloE1vTVnE/s200/icons_download.gif" alt="" id="BLOGGER_PHOTO_ID_5360544424610981522" border="0" /&gt;Download the files&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/89878749563391212-1873163352352585389?l=android-er.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4CPuwPOCHDVHpMG5FSH2fE6_Hpc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4CPuwPOCHDVHpMG5FSH2fE6_Hpc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4CPuwPOCHDVHpMG5FSH2fE6_Hpc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4CPuwPOCHDVHpMG5FSH2fE6_Hpc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=Jlo7U8HkVpg:mxS8necDM3E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=Jlo7U8HkVpg:mxS8necDM3E:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://android-er.blogspot.com/feeds/1873163352352585389/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=89878749563391212&amp;postID=1873163352352585389" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/1873163352352585389?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/1873163352352585389?v=2" /><link rel="alternate" type="text/html" href="http://android-er.blogspot.com/2009/11/androidlocation-with-checkbox-to-toggle.html" title="AndroidLocation: with a CheckBox to toggle MapView.setSatellite()" /><author><name>Android Er</name><uri>http://www.blogger.com/profile/04983894331825656853</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14075371138179417242" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_C5a2qH8Y_jk/Svr7UgSAB7I/AAAAAAAAAQQ/66BxGliKREY/s72-c/AndroidLocation_05.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;D08DRH0yfyp7ImA9WxNUGEo.&quot;"><id>tag:blogger.com,1999:blog-89878749563391212.post-5240888053867697045</id><published>2009-11-10T09:56:00.000-08:00</published><updated>2009-11-10T09:57:55.397-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-10T09:57:55.397-08:00</app:edited><title>AndroidLocation with Zoom Level Control, using SeekBar</title><content type="html">Further works on last exercise, MapView to center on the current location from GPS. A SeekBar to change Zoom Level is implemented. Also add valid checking in Start-up Location, skip if invalid; to prevent from Unexpected Stop.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_C5a2qH8Y_jk/SvmpgRs-KsI/AAAAAAAAAQI/7bkrY7Zu6uU/s1600-h/AndroidLocation_04.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 281px;" src="http://3.bp.blogspot.com/_C5a2qH8Y_jk/SvmpgRs-KsI/AAAAAAAAAQI/7bkrY7Zu6uU/s400/AndroidLocation_04.png" alt="" id="BLOGGER_PHOTO_ID_5402535599980554946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Modify main.xml&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"&lt;br /&gt;  android:orientation="vertical"&lt;br /&gt;  android:layout_width="fill_parent"&lt;br /&gt;  android:layout_height="fill_parent"&lt;br /&gt;  &amp;gt; &lt;br /&gt; &amp;lt;LinearLayout&lt;br /&gt;  android:orientation="vertical"&lt;br /&gt;  android:layout_width="fill_parent"&lt;br /&gt;  android:layout_height="wrap_content"&lt;br /&gt;  &amp;gt;&lt;br /&gt;   &amp;lt;TextView&lt;br /&gt;    android:id="@+id/longitude"&lt;br /&gt;    android:layout_width="fill_parent"&lt;br /&gt;    android:layout_height="wrap_content"&lt;br /&gt;    android:text="Longitude:"&lt;br /&gt;  /&amp;gt;&lt;br /&gt;  &amp;lt;TextView&lt;br /&gt;   android:id="@+id/latitude"&lt;br /&gt;   android:layout_width="fill_parent"&lt;br /&gt;    android:layout_height="wrap_content"&lt;br /&gt;    android:text="Latitude:"&lt;br /&gt;  /&amp;gt;&lt;br /&gt;   &amp;lt;SeekBar&lt;br /&gt;   android:id="@+id/zoombar"&lt;br /&gt;    android:layout_width="fill_parent"&lt;br /&gt;    android:layout_height="wrap_content"&lt;br /&gt;    android:max="20"&lt;br /&gt;    android:progress="0"/&amp;gt;&lt;br /&gt; &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt; &amp;lt;com.google.android.maps.MapView&lt;br /&gt;  android:id="@+id/mapview"&lt;br /&gt;  android:layout_width="fill_parent"&lt;br /&gt;   android:layout_height="fill_parent"&lt;br /&gt;   android:clickable="false"&lt;br /&gt;  android:apiKey="-----Your Own API Key here-------------"&lt;br /&gt; /&amp;gt;&lt;br /&gt;&amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;AndroidLocation.java&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;package com.AndroidLocation;&lt;br /&gt;&lt;br /&gt;import com.google.android.maps.GeoPoint;&lt;br /&gt;import com.google.android.maps.MapActivity;&lt;br /&gt;import com.google.android.maps.MapController;&lt;br /&gt;import com.google.android.maps.MapView;&lt;br /&gt;&lt;br /&gt;import android.content.Context;&lt;br /&gt;import android.location.Location;&lt;br /&gt;import android.location.LocationListener;&lt;br /&gt;import android.location.LocationManager;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import android.widget.SeekBar;&lt;br /&gt;import android.widget.TextView;&lt;br /&gt;import android.widget.Toast;&lt;br /&gt;&lt;br /&gt;public class AndroidLocation extends MapActivity {&lt;br /&gt;&lt;br /&gt; private LocationManager myLocationManager;&lt;br /&gt; private LocationListener myLocationListener;&lt;br /&gt; private TextView myLongitude, myLatitude;&lt;br /&gt; &lt;br /&gt; private MapView myMapView;&lt;br /&gt; private SeekBar myZoomBar;&lt;br /&gt; &lt;br /&gt; private MapController myMapController;&lt;br /&gt;&lt;br /&gt; private void CenterLocation(GeoPoint centerGeoPoint)&lt;br /&gt; {&lt;br /&gt;  myMapController.animateTo(centerGeoPoint);&lt;br /&gt;  &lt;br /&gt; &lt;br /&gt;  myLongitude.setText("Longitude: "+&lt;br /&gt;   String.valueOf((float)centerGeoPoint.getLongitudeE6()/1000000)&lt;br /&gt;   );&lt;br /&gt;  myLatitude.setText("Latitude: "+&lt;br /&gt;   String.valueOf((float)centerGeoPoint.getLatitudeE6()/1000000)&lt;br /&gt;   );&lt;br /&gt; };&lt;br /&gt; &lt;br /&gt; private void SetZoomLevel()&lt;br /&gt; {&lt;br /&gt;  int myZoomLevel = myZoomBar.getProgress()+1;&lt;br /&gt;  myMapController.setZoom(myZoomLevel);&lt;br /&gt;  Toast.makeText(this,&lt;br /&gt;    "Zoom Level : " + String.valueOf(myZoomLevel),&lt;br /&gt;    Toast.LENGTH_LONG).show();&lt;br /&gt; };&lt;br /&gt;&lt;br /&gt; /** Called when the activity is first created. */&lt;br /&gt; @Override&lt;br /&gt; public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;  super.onCreate(savedInstanceState);&lt;br /&gt;  setContentView(R.layout.main);&lt;br /&gt;  myMapView = (MapView)findViewById(R.id.mapview);&lt;br /&gt;  myLongitude = (TextView)findViewById(R.id.longitude);&lt;br /&gt;  myLatitude = (TextView)findViewById(R.id.latitude);&lt;br /&gt;  myZoomBar = (SeekBar)findViewById(R.id.zoombar);&lt;br /&gt;  &lt;br /&gt;  myMapView.setSatellite(true); //Set satellite view&lt;br /&gt;  myMapController = myMapView.getController();&lt;br /&gt;  SetZoomLevel();&lt;br /&gt;&lt;br /&gt;  myLocationManager = (LocationManager)getSystemService(&lt;br /&gt;    Context.LOCATION_SERVICE);&lt;br /&gt;&lt;br /&gt;  myLocationListener = new MyLocationListener();&lt;br /&gt;&lt;br /&gt;  myLocationManager.requestLocationUpdates(&lt;br /&gt;    LocationManager.GPS_PROVIDER,&lt;br /&gt;    0,&lt;br /&gt;    0,&lt;br /&gt;    myLocationListener);&lt;br /&gt;  &lt;br /&gt;  //Get the current location in start-up&lt;br /&gt;  //check LastKnownLocation, if not valid, skip it.&lt;br /&gt;  Location initLocation=&lt;br /&gt;   myLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);&lt;br /&gt;  if(initLocation != null)&lt;br /&gt;  {&lt;br /&gt;   GeoPoint initGeoPoint = new GeoPoint(&lt;br /&gt;     (int)(initLocation.getLatitude()*1000000),&lt;br /&gt;     (int)(initLocation.getLongitude()*1000000));&lt;br /&gt;   CenterLocation(initGeoPoint);&lt;br /&gt;  }&lt;br /&gt;  myZoomBar.setOnSeekBarChangeListener(myZoomBarOnSeekBarChangeListener);&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; private SeekBar.OnSeekBarChangeListener myZoomBarOnSeekBarChangeListener =&lt;br /&gt;  new SeekBar.OnSeekBarChangeListener(){&lt;br /&gt;&lt;br /&gt;   public void onProgressChanged(SeekBar seekBar, int progress,&lt;br /&gt;     boolean fromUser) {&lt;br /&gt;    // TODO Auto-generated method stub&lt;br /&gt;    SetZoomLevel();&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public void onStartTrackingTouch(SeekBar seekBar) {&lt;br /&gt;    // TODO Auto-generated method stub&lt;br /&gt;    &lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public void onStopTrackingTouch(SeekBar seekBar) {&lt;br /&gt;    // TODO Auto-generated method stub&lt;br /&gt;    &lt;br /&gt;   }&lt;br /&gt;  &lt;br /&gt; };&lt;br /&gt;&lt;br /&gt; private class MyLocationListener implements LocationListener{&lt;br /&gt;&lt;br /&gt;  public void onLocationChanged(Location argLocation) {&lt;br /&gt;   // TODO Auto-generated method stub&lt;br /&gt;   GeoPoint myGeoPoint = new GeoPoint(&lt;br /&gt;    (int)(argLocation.getLatitude()*1000000),&lt;br /&gt;    (int)(argLocation.getLongitude()*1000000));&lt;br /&gt;   &lt;br /&gt;   CenterLocation(myGeoPoint);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void onProviderDisabled(String provider) {&lt;br /&gt;   // TODO Auto-generated method stub&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void onProviderEnabled(String provider) {&lt;br /&gt;   // TODO Auto-generated method stub&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void onStatusChanged(String provider,&lt;br /&gt;    int status, Bundle extras) {&lt;br /&gt;   // TODO Auto-generated method stub&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; protected boolean isRouteDisplayed() {&lt;br /&gt;  // TODO Auto-generated method stub&lt;br /&gt;  return false;&lt;br /&gt; };&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ziddu.com/download/7308820/AndroidLocation_files_091111a.zip.html"&gt;&lt;img style="width: 18px; height: 21px;" src="http://2.bp.blogspot.com/_J90P-hyr9o8/SmR6wLejZpI/AAAAAAAAAbg/iSloE1vTVnE/s200/icons_download.gif" alt="" id="BLOGGER_PHOTO_ID_5360544424610981522" border="0" /&gt;Download the files&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/89878749563391212-5240888053867697045?l=android-er.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5AYTeDVns4VAtF3Zsc738GLXcdI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5AYTeDVns4VAtF3Zsc738GLXcdI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5AYTeDVns4VAtF3Zsc738GLXcdI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5AYTeDVns4VAtF3Zsc738GLXcdI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=DgHuzhKeZ_Q:pZiDY82vyug:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=DgHuzhKeZ_Q:pZiDY82vyug:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://android-er.blogspot.com/feeds/5240888053867697045/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=89878749563391212&amp;postID=5240888053867697045" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/5240888053867697045?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/5240888053867697045?v=2" /><link rel="alternate" type="text/html" href="http://android-er.blogspot.com/2009/11/androidlocation-with-zoom-level-control.html" title="AndroidLocation with Zoom Level Control, using SeekBar" /><author><name>Android Er</name><uri>http://www.blogger.com/profile/04983894331825656853</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14075371138179417242" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_C5a2qH8Y_jk/SvmpgRs-KsI/AAAAAAAAAQI/7bkrY7Zu6uU/s72-c/AndroidLocation_04.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;C0YDSHY-fCp7ImA9WxNUGEo.&quot;"><id>tag:blogger.com,1999:blog-89878749563391212.post-2449487750850995780</id><published>2009-11-09T12:48:00.000-08:00</published><updated>2009-11-10T08:39:39.854-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-10T08:39:39.854-08:00</app:edited><title>MapView to center on the current location from GPS</title><content type="html">In the article &lt;a href="http://android-er.blogspot.com/2009/11/read-gps-location-locationmanager.html"&gt;Read GPS location, LocationManager&lt;/a&gt; described how to get current location from GPS.&lt;br /&gt;In the article &lt;a href="http://android-er.blogspot.com/2009/08/minimal-map-application-using.html"&gt;A minimal Map application using MapActivity&lt;/a&gt;, described how to implemented a MapView with MapActiity.&lt;br /&gt;&lt;br /&gt;In this article, both exercises are merged to have a MapView, which will center in the current location from GPS.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SviBFmyU1pI/AAAAAAAAAQA/VS_zcIyYP2s/s1600-h/AndroidLocation_03.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 281px;" src="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SviBFmyU1pI/AAAAAAAAAQA/VS_zcIyYP2s/s400/AndroidLocation_03.png" alt="" id="BLOGGER_PHOTO_ID_5402209686341867154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Please note that the application cannot be run directly, you have to have your own API Key to using the GPS API. Refer to the article &lt;a href="http://android-er.blogspot.com/2009/08/minimal-map-application-using.html"&gt;A minimal Map application using MapActivity&lt;/a&gt; to obtain API Key.&lt;br /&gt;&lt;br /&gt;Modify AndroidManifest.xml:&lt;br /&gt;Add &amp;lt;uses-library android:name="com.google.android.maps" /&amp;gt; as a child of the &amp;lt;application&amp;gt; element.&lt;br /&gt;Add &amp;lt;uses-permission android:name="android.permission.INTERNET" /&amp;gt;&lt;br /&gt;and &amp;lt;uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /&amp;gt; as children of the &amp;lt;manifest&amp;gt; element.&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"&lt;br /&gt;     package="com.AndroidLocation"&lt;br /&gt;     android:versionCode="1"&lt;br /&gt;     android:versionName="1.0"&amp;gt;&lt;br /&gt;   &amp;lt;application android:icon="@drawable/icon" android:label="@string/app_name"&amp;gt;&lt;br /&gt;       &amp;lt;activity android:name=".AndroidLocation"&lt;br /&gt;                 android:label="@string/app_name"&amp;gt;&lt;br /&gt;           &amp;lt;intent-filter&amp;gt;&lt;br /&gt;               &amp;lt;action android:name="android.intent.action.MAIN" /&amp;gt;&lt;br /&gt;               &amp;lt;category android:name="android.intent.category.LAUNCHER" /&amp;gt;&lt;br /&gt;           &amp;lt;/intent-filter&amp;gt;&lt;br /&gt;       &amp;lt;/activity&amp;gt;&lt;br /&gt;  &amp;lt;uses-library android:name="com.google.android.maps" /&amp;gt;&lt;br /&gt;   &amp;lt;/application&amp;gt;&lt;br /&gt;   &amp;lt;uses-permission android:name="android.permission.INTERNET" /&amp;gt;&lt;br /&gt;   &amp;lt;uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /&amp;gt;&lt;br /&gt;   &amp;lt;uses-sdk android:minSdkVersion="5" /&amp;gt;&lt;br /&gt;&amp;lt;/manifest&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Modify main.xml to have a MapView&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"&lt;br /&gt;   android:orientation="vertical"&lt;br /&gt;   android:layout_width="fill_parent"&lt;br /&gt;   android:layout_height="fill_parent"&lt;br /&gt;   &amp;gt; &lt;br /&gt; &amp;lt;LinearLayout&lt;br /&gt;   android:orientation="vertical"&lt;br /&gt;   android:layout_width="fill_parent"&lt;br /&gt;   android:layout_height="wrap_content"&lt;br /&gt;   &amp;gt;&lt;br /&gt;    &amp;lt;TextView&lt;br /&gt;     android:id="@+id/longitude"&lt;br /&gt;     android:layout_width="fill_parent"&lt;br /&gt;     android:layout_height="fill_parent"&lt;br /&gt;     android:text="Longitude:"&lt;br /&gt;  /&amp;gt;&lt;br /&gt;  &amp;lt;TextView&lt;br /&gt;   android:id="@+id/latitude"&lt;br /&gt;   android:layout_width="fill_parent"&lt;br /&gt;     android:layout_height="fill_parent"&lt;br /&gt;     android:text="Latitude:"&lt;br /&gt;  /&amp;gt;&lt;br /&gt; &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt; &amp;lt;com.google.android.maps.MapView&lt;br /&gt;  android:id="@+id/mapview"&lt;br /&gt;  android:layout_width="fill_parent"&lt;br /&gt;    android:layout_height="fill_parent"&lt;br /&gt;    android:clickable="false"&lt;br /&gt;  android:apiKey="-----Your Own API Key here-------------"&lt;br /&gt; /&amp;gt;&lt;br /&gt;&amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Finally, modify AndroidLocation.java&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;package com.AndroidLocation;&lt;br /&gt;&lt;br /&gt;import com.google.android.maps.GeoPoint;&lt;br /&gt;import com.google.android.maps.MapActivity;&lt;br /&gt;import com.google.android.maps.MapController;&lt;br /&gt;import com.google.android.maps.MapView;&lt;br /&gt;&lt;br /&gt;import android.content.Context;&lt;br /&gt;import android.location.Location;&lt;br /&gt;import android.location.LocationListener;&lt;br /&gt;import android.location.LocationManager;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import android.widget.TextView;&lt;br /&gt;&lt;br /&gt;public class AndroidLocation extends MapActivity {&lt;br /&gt;&lt;br /&gt; private LocationManager myLocationManager;&lt;br /&gt; private LocationListener myLocationListener;&lt;br /&gt; private TextView myLongitude, myLatitude;&lt;br /&gt; &lt;br /&gt; private MapView myMapView;&lt;br /&gt; &lt;br /&gt; private MapController myMapController;&lt;br /&gt;&lt;br /&gt; private void CenterLocatio(GeoPoint centerGeoPoint)&lt;br /&gt; {&lt;br /&gt;  myMapController.animateTo(centerGeoPoint);&lt;br /&gt;  &lt;br /&gt; &lt;br /&gt;  myLongitude.setText("Longitude: "+&lt;br /&gt;   String.valueOf((float)centerGeoPoint.getLongitudeE6()/1000000)&lt;br /&gt;   );&lt;br /&gt;  myLatitude.setText("Latitude: "+&lt;br /&gt;   String.valueOf((float)centerGeoPoint.getLatitudeE6()/1000000)&lt;br /&gt;   );&lt;br /&gt; };&lt;br /&gt;&lt;br /&gt; /** Called when the activity is first created. */&lt;br /&gt; @Override&lt;br /&gt; public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;  super.onCreate(savedInstanceState);&lt;br /&gt;  setContentView(R.layout.main);&lt;br /&gt;  myMapView = (MapView)findViewById(R.id.mapview);&lt;br /&gt;  myLongitude = (TextView)findViewById(R.id.longitude);&lt;br /&gt;  myLatitude = (TextView)findViewById(R.id.latitude);&lt;br /&gt;  myMapView.setSatellite(true); //Set satellite view&lt;br /&gt;  myMapController = myMapView.getController();&lt;br /&gt;  myMapController.setZoom(20); //Fixed Zoom Level&lt;br /&gt;&lt;br /&gt;  myLocationManager = (LocationManager)getSystemService(&lt;br /&gt;    Context.LOCATION_SERVICE);&lt;br /&gt;&lt;br /&gt;  myLocationListener = new MyLocationListener();&lt;br /&gt;&lt;br /&gt;  myLocationManager.requestLocationUpdates(&lt;br /&gt;    LocationManager.GPS_PROVIDER,&lt;br /&gt;    0,&lt;br /&gt;    0,&lt;br /&gt;    myLocationListener);&lt;br /&gt;  &lt;br /&gt;  //Get the current location in start-up&lt;br /&gt;  GeoPoint initGeoPoint = new GeoPoint(&lt;br /&gt;   (int)(myLocationManager.getLastKnownLocation(&lt;br /&gt;    LocationManager.GPS_PROVIDER)&lt;br /&gt;    .getLatitude()*1000000),&lt;br /&gt;   (int)(myLocationManager.getLastKnownLocation(&lt;br /&gt;    LocationManager.GPS_PROVIDER)&lt;br /&gt;    .getLongitude()*1000000));&lt;br /&gt;   CenterLocatio(initGeoPoint);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private class MyLocationListener implements LocationListener{&lt;br /&gt;&lt;br /&gt;  public void onLocationChanged(Location argLocation) {&lt;br /&gt;   // TODO Auto-generated method stub&lt;br /&gt;   GeoPoint myGeoPoint = new GeoPoint(&lt;br /&gt;    (int)(argLocation.getLatitude()*1000000),&lt;br /&gt;    (int)(argLocation.getLongitude()*1000000));&lt;br /&gt;   &lt;br /&gt;   CenterLocatio(myGeoPoint);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void onProviderDisabled(String provider) {&lt;br /&gt;   // TODO Auto-generated method stub&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void onProviderEnabled(String provider) {&lt;br /&gt;   // TODO Auto-generated method stub&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void onStatusChanged(String provider,&lt;br /&gt;    int status, Bundle extras) {&lt;br /&gt;   // TODO Auto-generated method stub&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; protected boolean isRouteDisplayed() {&lt;br /&gt;  // TODO Auto-generated method stub&lt;br /&gt;  return false;&lt;br /&gt; };&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ziddu.com/download/7293851/AndroidLocation_files_091110a.zip.html"&gt;&lt;img style="width: 18px; height: 21px;" src="http://2.bp.blogspot.com/_J90P-hyr9o8/SmR6wLejZpI/AAAAAAAAAbg/iSloE1vTVnE/s200/icons_download.gif" alt="" id="BLOGGER_PHOTO_ID_5360544424610981522" border="0" /&gt;Download the files&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Also refer &lt;a href="http://android-er.blogspot.com/2009/11/enable-use-wireless-networks-and-use.html"&gt;Enable "Use wireless networks" and "Use GPS satellites" in Android Emulator&lt;/a&gt; and &lt;a href="http://android-er.blogspot.com/2009/11/change-gps-location-of-android-emulator.html"&gt;Change GPS location of Android Emulator&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Because te application read location in start-up, &lt;br /&gt;so you have to &lt;a href="http://android-er.blogspot.com/2009/11/change-gps-location-of-android-emulator.html"&gt;send GPS Location to Android Emulator&lt;/a&gt; &lt;br /&gt;at least once before the application start.&lt;br /&gt;&lt;br /&gt;Edited@11-11-2009&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/89878749563391212-2449487750850995780?l=android-er.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/B4xgt1vreYocm4GK775klSvY8Bg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/B4xgt1vreYocm4GK775klSvY8Bg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/B4xgt1vreYocm4GK775klSvY8Bg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/B4xgt1vreYocm4GK775klSvY8Bg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=GQ1vlDZx0Ps:LI6vCqF-2vw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=GQ1vlDZx0Ps:LI6vCqF-2vw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://android-er.blogspot.com/feeds/2449487750850995780/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=89878749563391212&amp;postID=2449487750850995780" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/2449487750850995780?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/2449487750850995780?v=2" /><link rel="alternate" type="text/html" href="http://android-er.blogspot.com/2009/11/mapview-to-center-on-current-location.html" title="MapView to center on the current location from GPS" /><author><name>Android Er</name><uri>http://www.blogger.com/profile/04983894331825656853</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14075371138179417242" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SviBFmyU1pI/AAAAAAAAAQA/VS_zcIyYP2s/s72-c/AndroidLocation_03.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CU8GQng-fSp7ImA9WxNUFkQ.&quot;"><id>tag:blogger.com,1999:blog-89878749563391212.post-5626653652023812748</id><published>2009-11-08T07:09:00.000-08:00</published><updated>2009-11-08T07:23:43.655-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-08T07:23:43.655-08:00</app:edited><title>Enable "Use wireless networks" and "Use GPS satellites" in Android Emulator</title><content type="html">To let your application to access networks and GPS, you have to enable it in Android Emulator.&lt;br /&gt;&lt;br /&gt;Start Android Emulator, press &lt;span style="font-weight: bold;"&gt;MENU&lt;/span&gt; key in Home Screen, and Click &lt;span style="font-weight: bold;"&gt;Settings&lt;/span&gt;.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SvbiJ0LNAPI/AAAAAAAAAP4/7bXMx8fP380/s1600-h/EnableService_01.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 282px;" src="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SvbiJ0LNAPI/AAAAAAAAAP4/7bXMx8fP380/s400/EnableService_01.png" alt="" id="BLOGGER_PHOTO_ID_5401753461329821938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Select &lt;span style="font-weight: bold;"&gt;Location &amp;amp; security&lt;/span&gt;.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SvbiBFEcpWI/AAAAAAAAAPw/01CLBiLTYBM/s1600-h/EnableService_02.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 282px;" src="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SvbiBFEcpWI/AAAAAAAAAPw/01CLBiLTYBM/s400/EnableService_02.png" alt="" id="BLOGGER_PHOTO_ID_5401753311246067042" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enable &lt;span style="font-weight: bold;"&gt;Use wireless networks&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;Use GPS satellites&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_C5a2qH8Y_jk/SvbhzaQls-I/AAAAAAAAAPo/EoCNBiKOHw0/s1600-h/EnableService_03.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 283px;" src="http://3.bp.blogspot.com/_C5a2qH8Y_jk/SvbhzaQls-I/AAAAAAAAAPo/EoCNBiKOHw0/s400/EnableService_03.png" alt="" id="BLOGGER_PHOTO_ID_5401753076415968226" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/89878749563391212-5626653652023812748?l=android-er.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-MAvKrTVYbm0qvAJTo7p3s1jiS0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-MAvKrTVYbm0qvAJTo7p3s1jiS0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-MAvKrTVYbm0qvAJTo7p3s1jiS0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-MAvKrTVYbm0qvAJTo7p3s1jiS0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=YCPOP8fKpns:vQWQCWLLHKg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=YCPOP8fKpns:vQWQCWLLHKg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://android-er.blogspot.com/feeds/5626653652023812748/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=89878749563391212&amp;postID=5626653652023812748" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/5626653652023812748?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/5626653652023812748?v=2" /><link rel="alternate" type="text/html" href="http://android-er.blogspot.com/2009/11/enable-use-wireless-networks-and-use.html" title="Enable &quot;Use wireless networks&quot; and &quot;Use GPS satellites&quot; in Android Emulator" /><author><name>Android Er</name><uri>http://www.blogger.com/profile/04983894331825656853</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14075371138179417242" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SvbiJ0LNAPI/AAAAAAAAAP4/7bXMx8fP380/s72-c/EnableService_01.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;A0UGRXg-eCp7ImA9WxNUFU4.&quot;"><id>tag:blogger.com,1999:blog-89878749563391212.post-1441026616153605377</id><published>2009-11-06T12:25:00.000-08:00</published><updated>2009-11-06T12:27:04.650-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-06T12:27:04.650-08:00</app:edited><title>Change GPS location of Android Emulator</title><content type="html">In order to test GPS function of a Android Application, DDMS of Android SDK can help to change GPS location of Android Emuator.&lt;br /&gt;&lt;br /&gt;Change to DDMS in Eclipse:&lt;br /&gt;Click Window-&gt;Open Perspective-&gt;DDMS&lt;br /&gt;&lt;br /&gt;Scroll down in Emulator Control on the left, till Location Controls&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SvSGd5enWFI/AAAAAAAAAPg/Cu7bpEHuTK8/s1600-h/LocationControl_01.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 249px;" src="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SvSGd5enWFI/AAAAAAAAAPg/Cu7bpEHuTK8/s400/LocationControl_01.png" alt="" id="BLOGGER_PHOTO_ID_5401089701327624274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;type in Longitude and Latitude, and click Send.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/89878749563391212-1441026616153605377?l=android-er.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QXkRIhIn4gjwWC-s_lUT-ImdfTo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QXkRIhIn4gjwWC-s_lUT-ImdfTo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QXkRIhIn4gjwWC-s_lUT-ImdfTo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QXkRIhIn4gjwWC-s_lUT-ImdfTo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=iB7922Vf6MA:sQiYMvmI9_g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=iB7922Vf6MA:sQiYMvmI9_g:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://android-er.blogspot.com/feeds/1441026616153605377/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=89878749563391212&amp;postID=1441026616153605377" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/1441026616153605377?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/1441026616153605377?v=2" /><link rel="alternate" type="text/html" href="http://android-er.blogspot.com/2009/11/change-gps-location-of-android-emulator.html" title="Change GPS location of Android Emulator" /><author><name>Android Er</name><uri>http://www.blogger.com/profile/04983894331825656853</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14075371138179417242" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SvSGd5enWFI/AAAAAAAAAPg/Cu7bpEHuTK8/s72-c/LocationControl_01.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;C0cNSHg_cCp7ImA9WxNUGEo.&quot;"><id>tag:blogger.com,1999:blog-89878749563391212.post-477406981977844084</id><published>2009-11-06T12:08:00.000-08:00</published><updated>2009-11-10T08:38:19.648-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-10T08:38:19.648-08:00</app:edited><title>Read GPS location, LocationManager</title><content type="html">It's a activity implement LocationListener. When location changed, the method onLocationChanged() will be called-back.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_C5a2qH8Y_jk/SvSChsZKLeI/AAAAAAAAAPY/VkfsapaN_z4/s1600-h/AndroidLocation_02.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 281px;" src="http://3.bp.blogspot.com/_C5a2qH8Y_jk/SvSChsZKLeI/AAAAAAAAAPY/VkfsapaN_z4/s400/AndroidLocation_02.png" alt="" id="BLOGGER_PHOTO_ID_5401085368488046050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Create a activity AndroidLocation&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SvSCbOnCUUI/AAAAAAAAAPQ/nBzb4RzQ4KM/s1600-h/AndroidLocation_01.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 290px; height: 400px;" src="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SvSCbOnCUUI/AAAAAAAAAPQ/nBzb4RzQ4KM/s400/AndroidLocation_01.png" alt="" id="BLOGGER_PHOTO_ID_5401085257413972290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To let your application to access GPS function, ACCESS_FINE_LOCATION permission is needed. Add the code&lt;br /&gt;&amp;lt;uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /&amp;gt;&lt;br /&gt;to AndroidManifest.xml.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"&lt;br /&gt;package="com.AndroidLocation"&lt;br /&gt;android:versionCode="1"&lt;br /&gt;android:versionName="1.0"&amp;gt;&lt;br /&gt;&amp;lt;application android:icon="@drawable/icon" android:label="@string/app_name"&amp;gt;&lt;br /&gt;&amp;lt;activity android:name=".AndroidLocation"&lt;br /&gt;          android:label="@string/app_name"&amp;gt;&lt;br /&gt;    &amp;lt;intent-filter&amp;gt;&lt;br /&gt;        &amp;lt;action android:name="android.intent.action.MAIN" /&amp;gt;&lt;br /&gt;        &amp;lt;category android:name="android.intent.category.LAUNCHER" /&amp;gt;&lt;br /&gt;    &amp;lt;/intent-filter&amp;gt;&lt;br /&gt;&amp;lt;/activity&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/application&amp;gt;&lt;br /&gt;&lt;b&gt;&amp;lt;uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /&amp;gt;&lt;/b&gt;&lt;br /&gt;&amp;lt;uses-sdk android:minSdkVersion="5" /&amp;gt;&lt;br /&gt;&amp;lt;/manifest&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Modify main.xml to have 2 TextView to show location from GPS.&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"&lt;br /&gt;android:orientation="vertical"&lt;br /&gt;android:layout_width="fill_parent"&lt;br /&gt;android:layout_height="fill_parent"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;TextView&lt;br /&gt;android:layout_width="fill_parent"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;android:text="@string/hello"&lt;br /&gt;/&amp;gt;&lt;br /&gt;&amp;lt;TextView&lt;br /&gt;android:layout_width="fill_parent"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;android:text="Latitude:"&lt;br /&gt;/&amp;gt;&lt;br /&gt;&amp;lt;TextView&lt;br /&gt;android:id="@+id/Latitude"&lt;br /&gt;android:layout_width="fill_parent"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;/&amp;gt;&lt;br /&gt;&amp;lt;TextView&lt;br /&gt;android:layout_width="fill_parent"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;android:text="Longitude:"&lt;br /&gt;/&amp;gt;&lt;br /&gt;&amp;lt;TextView&lt;br /&gt;android:id="@+id/Longitude"&lt;br /&gt;android:layout_width="fill_parent"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;/&amp;gt;&lt;br /&gt;&amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Modify the source Code, AndroidLocation.java:&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;package com.AndroidLocation;&lt;br /&gt;&lt;br /&gt;import android.app.Activity;&lt;br /&gt;import android.content.Context;&lt;br /&gt;import android.location.Location;&lt;br /&gt;import android.location.LocationListener;&lt;br /&gt;import android.location.LocationManager;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import android.widget.TextView;&lt;br /&gt;&lt;br /&gt;public class AndroidLocation extends Activity {&lt;br /&gt;&lt;br /&gt;private LocationManager myLocationManager;&lt;br /&gt;private LocationListener myLocationListener;&lt;br /&gt;private TextView myLatitude, myLongitude;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/** Called when the activity is first created. */&lt;br /&gt;@Override&lt;br /&gt;public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;super.onCreate(savedInstanceState);&lt;br /&gt;setContentView(R.layout.main);&lt;br /&gt;myLatitude = (TextView)findViewById(R.id.Latitude);&lt;br /&gt;myLongitude = (TextView)findViewById(R.id.Longitude);&lt;br /&gt;&lt;br /&gt;myLocationManager = (LocationManager)getSystemService(&lt;br /&gt;  Context.LOCATION_SERVICE);&lt;br /&gt;&lt;br /&gt;myLocationListener = new MyLocationListener();&lt;br /&gt;&lt;br /&gt;myLocationManager.requestLocationUpdates(&lt;br /&gt;        LocationManager.GPS_PROVIDER,&lt;br /&gt;        0,&lt;br /&gt;        0,&lt;br /&gt;        myLocationListener);&lt;br /&gt;&lt;br /&gt;//Get the current location in start-up&lt;br /&gt;myLatitude.setText(String.valueOf(&lt;br /&gt;  myLocationManager.getLastKnownLocation(&lt;br /&gt;    LocationManager.GPS_PROVIDER).getLatitude()));&lt;br /&gt;&lt;br /&gt;myLongitude.setText(String.valueOf(&lt;br /&gt; myLocationManager.getLastKnownLocation(&lt;br /&gt;   LocationManager.GPS_PROVIDER).getLongitude()));&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private class MyLocationListener implements LocationListener{&lt;br /&gt;&lt;br /&gt;public void onLocationChanged(Location argLocation) {&lt;br /&gt;// TODO Auto-generated method stub&lt;br /&gt;myLatitude.setText(String.valueOf(&lt;br /&gt;  argLocation.getLatitude()));&lt;br /&gt;myLongitude.setText(String.valueOf(&lt;br /&gt;  argLocation.getLongitude()));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void onProviderDisabled(String provider) {&lt;br /&gt;// TODO Auto-generated method stub&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void onProviderEnabled(String provider) {&lt;br /&gt;// TODO Auto-generated method stub&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void onStatusChanged(String provider,&lt;br /&gt; int status, Bundle extras) {&lt;br /&gt;// TODO Auto-generated method stub&lt;br /&gt;}&lt;br /&gt;};&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ziddu.com/download/7250505/AndroidLocation_files_091107a.zip.html"&gt;&lt;img style="width: 18px; height: 21px;" src="http://2.bp.blogspot.com/_J90P-hyr9o8/SmR6wLejZpI/AAAAAAAAAbg/iSloE1vTVnE/s200/icons_download.gif" alt="" id="BLOGGER_PHOTO_ID_5360544424610981522" border="0" /&gt;Download the files&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;May be you have to &lt;a href="http://android-er.blogspot.com/2009/11/enable-use-wireless-networks-and-use.html"&gt;Enable "Use wireless networks" and "Use GPS satellites" in Android Emulator&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;And also &lt;a href="http://android-er.blogspot.com/2009/11/change-gps-location-of-android-emulator.html"&gt;Change GPS location of Android Emulator&lt;/a&gt;, to test the function of the Application.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Because te application read location in start-up, &lt;br /&gt;so you have to &lt;a href="http://android-er.blogspot.com/2009/11/change-gps-location-of-android-emulator.html"&gt;send GPS Location to Android Emulator&lt;/a&gt; &lt;br /&gt;at least once before the application start.&lt;br /&gt;&lt;br /&gt;Edited@11-11-2009&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/89878749563391212-477406981977844084?l=android-er.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/APGvJdGUXNcUXAubAFxyjvZRffY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/APGvJdGUXNcUXAubAFxyjvZRffY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/APGvJdGUXNcUXAubAFxyjvZRffY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/APGvJdGUXNcUXAubAFxyjvZRffY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=bQnXozR0k3U:18bZv3GuNG8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=bQnXozR0k3U:18bZv3GuNG8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://android-er.blogspot.com/feeds/477406981977844084/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=89878749563391212&amp;postID=477406981977844084" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/477406981977844084?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/477406981977844084?v=2" /><link rel="alternate" type="text/html" href="http://android-er.blogspot.com/2009/11/read-gps-location-locationmanager.html" title="Read GPS location, LocationManager" /><author><name>Android Er</name><uri>http://www.blogger.com/profile/04983894331825656853</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14075371138179417242" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_C5a2qH8Y_jk/SvSChsZKLeI/AAAAAAAAAPY/VkfsapaN_z4/s72-c/AndroidLocation_02.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CkICQ305eyp7ImA9WxNUFEs.&quot;"><id>tag:blogger.com,1999:blog-89878749563391212.post-4835740821687881380</id><published>2009-11-05T14:25:00.000-08:00</published><updated>2009-11-05T14:36:02.323-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-05T14:36:02.323-08:00</app:edited><title>Install Android SDK release 3 on Eclipse 3.5 Galileo, in Ubuntu 9.10</title><content type="html">Both Adroid SDK and ubuntu have new release recently. There is a little bit variation in installation from the old version, so I re-write the installation procedure here. In this article, Eclipse 3.5 Galileo with Android SDK release 3 (for Android 2) will be installed on a fresh new ubuntu 9.10.&lt;br /&gt;&lt;br /&gt;Environment:&lt;br /&gt;OS: Linux ubuntu 9.10 for desktop or laptop (&lt;a href="http://www.ubuntu.com/"&gt;http://www.ubuntu.com/&lt;/a&gt;)&lt;br /&gt;Eclipse: Eclipse 3.5 Galileo (bundled with ubuntu 9.10)&lt;br /&gt;Android SDK: Android SDK release 3 (&lt;a href="http://developer.android.com/"&gt;http://developer.android.com/&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Install Java:&lt;br /&gt;&lt;br /&gt;Start a Terminal and type the command:&lt;br /&gt;$ sudo apt-get install sun-java6-jdk&lt;br /&gt;&lt;br /&gt;Download Android SDK:&lt;br /&gt;&lt;br /&gt;Download Android SDk release 3 from &lt;a href="http://developer.android.com/sdk/index.html"&gt;http://developer.android.com/sdk/index.html&lt;/a&gt;, extract to any folder you want. In my case, it is $home/android-sdk-linux/&lt;br /&gt;&lt;br /&gt;Install Eclipse:&lt;br /&gt;&lt;br /&gt;In ubuntu 9.10, Eclipse 3.5.1 is bundled currently. To install Eclipse on ubuntu, it can be downloaded from &lt;a href="http://www.eclipse.org/"&gt;http://www.eclipse.org/&lt;/a&gt;, installe using Ubuntu Software Center (Application-&gt;Ubuntu Software Center in ubuntu menu bar), or installed using Synaptic Package Manager (System-&gt;Administration-&gt;Synaptic Package Manager in ubuntu menu bar). I tried install using the download version and Ubuntu Software Center, both cannot be installed without error, so Synaptic Package Manager is suggested to install Eclipse.&lt;br /&gt;Involve Synaptic Package Manager from System-&gt;Administration of Ubuntu top menu.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_C5a2qH8Y_jk/SvNSkeJ9MGI/AAAAAAAAAPI/OUMb5hPeGfw/s1600-h/install_01.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 373px; height: 400px;" src="http://4.bp.blogspot.com/_C5a2qH8Y_jk/SvNSkeJ9MGI/AAAAAAAAAPI/OUMb5hPeGfw/s400/install_01.png" alt="" id="BLOGGER_PHOTO_ID_5400751164670947426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Type Eclipse in te Quick search box, select eclipse in the list and mark for installation.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_C5a2qH8Y_jk/SvNSd6fb5vI/AAAAAAAAAPA/w2DUIe60XC0/s1600-h/install_02.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 313px;" src="http://4.bp.blogspot.com/_C5a2qH8Y_jk/SvNSd6fb5vI/AAAAAAAAAPA/w2DUIe60XC0/s400/install_02.png" alt="" id="BLOGGER_PHOTO_ID_5400751052018149106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Additional required changes are listed, click Mark to accept.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_C5a2qH8Y_jk/SvNSXVqF5qI/AAAAAAAAAO4/RN8RDgs_hvk/s1600-h/install_03.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 330px;" src="http://4.bp.blogspot.com/_C5a2qH8Y_jk/SvNSXVqF5qI/AAAAAAAAAO4/RN8RDgs_hvk/s400/install_03.png" alt="" id="BLOGGER_PHOTO_ID_5400750939051517602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Click Apply to start installation&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_C5a2qH8Y_jk/SvNSQzh1lxI/AAAAAAAAAOw/QgsqNsZxQaE/s1600-h/install_04.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 313px;" src="http://2.bp.blogspot.com/_C5a2qH8Y_jk/SvNSQzh1lxI/AAAAAAAAAOw/QgsqNsZxQaE/s400/install_04.png" alt="" id="BLOGGER_PHOTO_ID_5400750826810873618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Installing the ADT Plugin&lt;br /&gt;&lt;br /&gt;Start Eclipse, Click Help-&gt;Install New Software... from the top menu.&lt;br /&gt;&lt;br /&gt;Click Available Software Sites to check if &lt;span style="font-weight: bold; font-style: italic;"&gt;http://download.eclipse.org/releases/galileo&lt;/span&gt; is available. If not, add it.&lt;br /&gt;&lt;br /&gt;Add a new site &lt;span style="font-weight: bold; font-style: italic;"&gt;https://dl-ssl.google.com/android/eclipse/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SvNSKcQidMI/AAAAAAAAAOo/ABHiWPZ6oOY/s1600-h/install_05.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 195px;" src="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SvNSKcQidMI/AAAAAAAAAOo/ABHiWPZ6oOY/s400/install_05.png" alt="" id="BLOGGER_PHOTO_ID_5400750717485085890" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Select &lt;span style="font-weight: bold; font-style: italic;"&gt;https://dl-ssl.google.com/android/eclipse/&lt;/span&gt;, and wait a moment. The available will be listed. click to select it and click Next.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_C5a2qH8Y_jk/SvNSDZeYtqI/AAAAAAAAAOg/k7lSrM0W2kk/s1600-h/install_06.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 318px;" src="http://3.bp.blogspot.com/_C5a2qH8Y_jk/SvNSDZeYtqI/AAAAAAAAAOg/k7lSrM0W2kk/s400/install_06.png" alt="" id="BLOGGER_PHOTO_ID_5400750596478776994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Click Next again&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SvNR8XS-lXI/AAAAAAAAAOY/P2aihhMoUUo/s1600-h/install_07.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 252px;" src="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SvNR8XS-lXI/AAAAAAAAAOY/P2aihhMoUUo/s400/install_07.png" alt="" id="BLOGGER_PHOTO_ID_5400750475634972018" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Accept the terms and click Finish.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SvNRxULqhDI/AAAAAAAAAOQ/RlqvIVVkHQQ/s1600-h/install_08.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 262px;" src="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SvNRxULqhDI/AAAAAAAAAOQ/RlqvIVVkHQQ/s400/install_08.png" alt="" id="BLOGGER_PHOTO_ID_5400750285820429362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Wait, you will be asked for security warning, click OK.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_C5a2qH8Y_jk/SvNRothsb9I/AAAAAAAAAOI/kYBSTZoxxCA/s1600-h/install_09+.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 110px;" src="http://4.bp.blogspot.com/_C5a2qH8Y_jk/SvNRothsb9I/AAAAAAAAAOI/kYBSTZoxxCA/s400/install_09+.png" alt="" id="BLOGGER_PHOTO_ID_5400750138004893650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Wait installation to finish, and accept re-start after finished.&lt;br /&gt;&lt;br /&gt;Setup Android SDT inside Eclipse:&lt;br /&gt;&lt;br /&gt;Click Window-&gt;Preference in Eclipse top menu.&lt;br /&gt;&lt;br /&gt;Select Android on the left, and browse to your Android SDK folder, it's $home/android-sdk-linux/ in my setup.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_C5a2qH8Y_jk/SvNRghdG5VI/AAAAAAAAAOA/_L1Nj6OefeU/s1600-h/install_10.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 259px;" src="http://2.bp.blogspot.com/_C5a2qH8Y_jk/SvNRghdG5VI/AAAAAAAAAOA/_L1Nj6OefeU/s400/install_10.png" alt="" id="BLOGGER_PHOTO_ID_5400749997325477202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Install Package:&lt;br /&gt;&lt;br /&gt;Click Window-&gt;Android SDK and AVD Manager&lt;br /&gt;&lt;br /&gt;Click Available Package from the left, expend and select your expected packages, and click Install Selected.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SvNRX5ZY3kI/AAAAAAAAAN4/6stAsLDPxBg/s1600-h/install_11.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 232px;" src="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SvNRX5ZY3kI/AAAAAAAAAN4/6stAsLDPxBg/s400/install_11.png" alt="" id="BLOGGER_PHOTO_ID_5400749849133506114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Accept All, and Install Accepted.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_C5a2qH8Y_jk/SvNROpgeubI/AAAAAAAAANw/0sjVqRUqmRc/s1600-h/install_12.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 267px;" src="http://2.bp.blogspot.com/_C5a2qH8Y_jk/SvNROpgeubI/AAAAAAAAANw/0sjVqRUqmRc/s400/install_12.png" alt="" id="BLOGGER_PHOTO_ID_5400749690249460146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Restart Again.&lt;br /&gt;&lt;br /&gt;Create AVD:&lt;br /&gt;Refer to the article &lt;a href="http://android-er.blogspot.com/2009/10/create-avd-for-android-2-sdk.html"&gt;http://android-er.blogspot.com/2009/10/create-avd-for-android-2-sdk.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now, the installation is finished.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/89878749563391212-4835740821687881380?l=android-er.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/clE_uPGX6M3ar_De-YlN9XurBI0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/clE_uPGX6M3ar_De-YlN9XurBI0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/clE_uPGX6M3ar_De-YlN9XurBI0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/clE_uPGX6M3ar_De-YlN9XurBI0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=ci4W9L1pkq4:foHraw03P-8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=ci4W9L1pkq4:foHraw03P-8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://android-er.blogspot.com/feeds/4835740821687881380/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=89878749563391212&amp;postID=4835740821687881380" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/4835740821687881380?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/4835740821687881380?v=2" /><link rel="alternate" type="text/html" href="http://android-er.blogspot.com/2009/11/install-android-sdk-release-3-on.html" title="Install Android SDK release 3 on Eclipse 3.5 Galileo, in Ubuntu 9.10" /><author><name>Android Er</name><uri>http://www.blogger.com/profile/04983894331825656853</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14075371138179417242" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_C5a2qH8Y_jk/SvNSkeJ9MGI/AAAAAAAAAPI/OUMb5hPeGfw/s72-c/install_01.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;C0ECRnw7cCp7ImA9WxNUE04.&quot;"><id>tag:blogger.com,1999:blog-89878749563391212.post-3016616379708650628</id><published>2009-11-04T02:36:00.000-08:00</published><updated>2009-11-04T02:47:47.208-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-04T02:47:47.208-08:00</app:edited><title>android.view.animation</title><content type="html">android.view.animation provides classes that handle tweened animations.&lt;br /&gt;&lt;br /&gt;In this exercise, animation is applied on a single view (AnalogClock) and on a whole layout (LinearLayout).&lt;br /&gt;&lt;br /&gt;&lt;object width="500" height="405"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Ll5YRpakGfo&amp;hl=en&amp;fs=1&amp;border=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Ll5YRpakGfo&amp;hl=en&amp;fs=1&amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="405"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;The main part is the class ViewAnimation extends Animation; initialize() initialize some setting, applyTransformation() will be called repeatly with difference value of interpolatedTime, between 0 to 1.&lt;br /&gt;&lt;br /&gt;main.xml&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"&lt;br /&gt; android:id="@+id/mylayout"&lt;br /&gt; android:orientation="vertical"&lt;br /&gt; android:layout_width="fill_parent"&lt;br /&gt; android:layout_height="fill_parent"&lt;br /&gt; &amp;gt;&lt;br /&gt; &amp;lt;Button&lt;br /&gt;  android:id="@+id/start1"&lt;br /&gt;  android:layout_width="fill_parent"&lt;br /&gt;  android:layout_height="wrap_content"&lt;br /&gt;  android:text="Start Animation on LinearLayout"&lt;br /&gt;  /&amp;gt;&lt;br /&gt; &amp;lt;Button&lt;br /&gt;  android:id="@+id/start2"&lt;br /&gt;  android:layout_width="fill_parent"&lt;br /&gt;  android:layout_height="wrap_content"&lt;br /&gt;  android:text="Start Animation on AnalogClock"&lt;br /&gt;  /&amp;gt;&lt;br /&gt; &amp;lt;AnalogClock&lt;br /&gt;  android:id="@+id/myClock"&lt;br /&gt;  android:layout_width="wrap_content"&lt;br /&gt;  android:layout_height="wrap_content"&lt;br /&gt;  /&amp;gt;&lt;br /&gt;&amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;AndroidViewAnimation.java&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;package com.exercise.AndroidViewAnimation;&lt;br /&gt;&lt;br /&gt;import android.app.Activity;&lt;br /&gt;import android.graphics.Matrix;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import android.view.View;&lt;br /&gt;import android.view.animation.Animation;&lt;br /&gt;import android.view.animation.LinearInterpolator;&lt;br /&gt;import android.view.animation.Transformation;&lt;br /&gt;import android.widget.AnalogClock;&lt;br /&gt;import android.widget.Button;&lt;br /&gt;import android.widget.LinearLayout;&lt;br /&gt;&lt;br /&gt;public class AndroidViewAnimation extends Activity {&lt;br /&gt;    /** Called when the activity is first created. */&lt;br /&gt;    @Override&lt;br /&gt;    public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;     super.onCreate(savedInstanceState);&lt;br /&gt;     setContentView(R.layout.main);&lt;br /&gt;     Button myStartButton1 = (Button)this.findViewById(R.id.start1);&lt;br /&gt;     myStartButton1.setOnClickListener(myStartButton1OnClickListener);&lt;br /&gt;     Button myStartButton2 = (Button)this.findViewById(R.id.start2);&lt;br /&gt;     myStartButton2.setOnClickListener(myStartButton2OnClickListener);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private Button.OnClickListener myStartButton1OnClickListener =&lt;br /&gt;     new Button.OnClickListener(){&lt;br /&gt;&lt;br /&gt;   @Override&lt;br /&gt;   public void onClick(View v) {&lt;br /&gt;    // TODO Auto-generated method stub&lt;br /&gt;    LinearLayout myAnimation = (LinearLayout)findViewById(R.id.mylayout);&lt;br /&gt;       myAnimation.startAnimation(new ViewAnimation());&lt;br /&gt;   }&lt;br /&gt;    };&lt;br /&gt;    &lt;br /&gt;    private Button.OnClickListener myStartButton2OnClickListener =&lt;br /&gt;     new Button.OnClickListener(){&lt;br /&gt;&lt;br /&gt;   @Override&lt;br /&gt;   public void onClick(View v) {&lt;br /&gt;    // TODO Auto-generated method stub&lt;br /&gt;    AnalogClock myAnimation = (AnalogClock)findViewById(R.id.myClock);&lt;br /&gt;       myAnimation.startAnimation(new ViewAnimation());&lt;br /&gt;   }&lt;br /&gt;    };&lt;br /&gt;    &lt;br /&gt;    public class ViewAnimation extends Animation&lt;br /&gt;    {&lt;br /&gt;     int centerX, centerY;&lt;br /&gt;     @Override&lt;br /&gt;     public void initialize(int width, int height, int parentWidth,&lt;br /&gt;       int parentHeight)&lt;br /&gt;     {&lt;br /&gt;      super.initialize(width, height, parentWidth, parentHeight);&lt;br /&gt;      setDuration(5000);&lt;br /&gt;      setFillAfter(true);&lt;br /&gt;      setInterpolator(new LinearInterpolator());&lt;br /&gt;      centerX = width/2;&lt;br /&gt;      centerY = height/2;&lt;br /&gt;     }&lt;br /&gt;     &lt;br /&gt;     @Override&lt;br /&gt;  protected void applyTransformation(float interpolatedTime,&lt;br /&gt;    Transformation t) {&lt;br /&gt;   // TODO Auto-generated method stub&lt;br /&gt;      final Matrix matrix = t.getMatrix();&lt;br /&gt;      matrix.setScale(interpolatedTime, interpolatedTime);&lt;br /&gt;  }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ziddu.com/download/7216609/ViewAnimation_files_091104a.zip.html"&gt;&lt;img style="width: 18px; height: 21px;" src="http://2.bp.blogspot.com/_J90P-hyr9o8/SmR6wLejZpI/AAAAAAAAAbg/iSloE1vTVnE/s200/icons_download.gif" alt="" id="BLOGGER_PHOTO_ID_5360544424610981522" border="0" /&gt;Download the files&lt;/a&gt;.&lt;br /&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/89878749563391212-3016616379708650628?l=android-er.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ePbkzD91PUb_PqiHDgunSHFhEu4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ePbkzD91PUb_PqiHDgunSHFhEu4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ePbkzD91PUb_PqiHDgunSHFhEu4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ePbkzD91PUb_PqiHDgunSHFhEu4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=3WDY60W7-_Y:3bDdVMWWdHA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=3WDY60W7-_Y:3bDdVMWWdHA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://android-er.blogspot.com/feeds/3016616379708650628/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=89878749563391212&amp;postID=3016616379708650628" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/3016616379708650628?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/3016616379708650628?v=2" /><link rel="alternate" type="text/html" href="http://android-er.blogspot.com/2009/11/androidviewanimation.html" title="android.view.animation" /><author><name>Android Er</name><uri>http://www.blogger.com/profile/04983894331825656853</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14075371138179417242" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_J90P-hyr9o8/SmR6wLejZpI/AAAAAAAAAbg/iSloE1vTVnE/s72-c/icons_download.gif" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CEUMR3g7fCp7ImA9WxNUEkU.&quot;"><id>tag:blogger.com,1999:blog-89878749563391212.post-6115893026779538351</id><published>2009-11-03T12:33:00.000-08:00</published><updated>2009-11-03T13:04:46.604-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-03T13:04:46.604-08:00</app:edited><title>Cannot complete the install because one or more required items could not be found</title><content type="html">I tried to install Android SDK and Eclipse Galileo on a fresh ubuntu 9.10 and found the error while installing ADT Plugin for Eclipse:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Cannot complete the install because one or more required items could not be found.&lt;br /&gt;  Software being installed: Android Development Tools 0.9.4.v200910220141-17704 (com.android.ide.eclipse.adt.feature.group 0.9.4.v200910220141-17704)&lt;br /&gt;  Missing requirement: Android Development Tools 0.9.4.v200910220141-17704 (com.android.ide.eclipse.adt.feature.group 0.9.4.v200910220141-17704) requires 'org.eclipse.wst.xml.core 0.0.0' but it could not be found&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It's because there are some components missed in the setup, and the Galileo update site is not in the list of Available Software Sites.&lt;br /&gt;&lt;br /&gt;To solve the problem:&lt;br /&gt;Add "&lt;span style="font-weight:bold;"&gt;http://download.eclipse.org/releases/galileo&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/span&gt;" in the Available Software Sites.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/89878749563391212-6115893026779538351?l=android-er.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VyJwfjxwPxbvS6FzklxsYsbFP6U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VyJwfjxwPxbvS6FzklxsYsbFP6U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VyJwfjxwPxbvS6FzklxsYsbFP6U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VyJwfjxwPxbvS6FzklxsYsbFP6U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=GbLnHUlJub0:lar72gLf8gY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=GbLnHUlJub0:lar72gLf8gY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://android-er.blogspot.com/feeds/6115893026779538351/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=89878749563391212&amp;postID=6115893026779538351" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/6115893026779538351?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/6115893026779538351?v=2" /><link rel="alternate" type="text/html" href="http://android-er.blogspot.com/2009/11/cannot-complete-install-because-one-or.html" title="Cannot complete the install because one or more required items could not be found" /><author><name>Android Er</name><uri>http://www.blogger.com/profile/04983894331825656853</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14075371138179417242" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry gd:etag="W/&quot;C0ANR347eCp7ImA9WxNVGUw.&quot;"><id>tag:blogger.com,1999:blog-89878749563391212.post-3809744035907602512</id><published>2009-10-30T07:07:00.000-07:00</published><updated>2009-10-30T07:09:56.000-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-30T07:09:56.000-07:00</app:edited><title>Loading Android Resource in GridView</title><content type="html">Refer to Android document &lt;a href="http://developer.android.com/reference/android/R.drawable.html"&gt;R.drawable&lt;/a&gt;, there are a number of System Resources from 17301504 to 17301655.&lt;br /&gt;&lt;br /&gt;This exercise modify the last &lt;a href="http://android-er.blogspot.com/2009/10/gridview.html"&gt;GridView exercise&lt;/a&gt; to load the System Resources, instead of loading from /res/drawable.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_C5a2qH8Y_jk/SurzXKajpgI/AAAAAAAAANo/WLBloNLQGsk/s1600-h/AndroidGridView2_03.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 257px;" src="http://4.bp.blogspot.com/_C5a2qH8Y_jk/SurzXKajpgI/AAAAAAAAANo/WLBloNLQGsk/s400/AndroidGridView2_03.png" alt="" id="BLOGGER_PHOTO_ID_5398394682615244290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;mThumbIds[] is used to hold the resources id, to be passed to ImageAdapter. It is initialized in initResourceID()in ImageAdapter's constructor.&lt;br /&gt;&lt;br /&gt;Each object is passed to to imageView using imageView.setImageResource(mThumbIds[position]) inside getView().&lt;br /&gt;&lt;br /&gt;The main.xml is same as that in &lt;a href="http://android-er.blogspot.com/2009/10/gridview.html"&gt;GridView exercise&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;AndroidGridView2.java&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;package com.exercise.AndroidGridView2;&lt;br /&gt;&lt;br /&gt;import android.app.Activity;&lt;br /&gt;import android.content.Context;&lt;br /&gt;import android.content.res.Resources;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import android.view.View;&lt;br /&gt;import android.view.ViewGroup;&lt;br /&gt;import android.widget.AdapterView;&lt;br /&gt;import android.widget.BaseAdapter;&lt;br /&gt;import android.widget.GridView;&lt;br /&gt;import android.widget.ImageView;&lt;br /&gt;import android.widget.Toast;&lt;br /&gt;&lt;br /&gt;public class AndroidGridView2 extends Activity {&lt;br /&gt; &lt;br /&gt;  final int resourceStart = 17301504;&lt;br /&gt;  final int resourceEnd = 17301655;&lt;br /&gt;  final int ResourceLength = resourceEnd - resourceStart + 1; &lt;br /&gt; &lt;br /&gt;  /** Called when the activity is first created. */&lt;br /&gt;  @Override&lt;br /&gt;  public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;      super.onCreate(savedInstanceState);&lt;br /&gt;      setContentView(R.layout.main);&lt;br /&gt;&lt;br /&gt;      GridView gridview = (GridView) findViewById(R.id.gridview);&lt;br /&gt;      gridview.setAdapter(new ImageAdapter(this));&lt;br /&gt;    &lt;br /&gt;      gridview.setOnItemClickListener(gridviewOnItemClickListener);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  private GridView.OnItemClickListener gridviewOnItemClickListener =&lt;br /&gt;   new GridView.OnItemClickListener(){&lt;br /&gt;&lt;br /&gt;   @Override&lt;br /&gt;   public void onItemClick(AdapterView&amp;lt;?&amp;gt; arg0, View arg1, int arg2,&lt;br /&gt;     long arg3) {&lt;br /&gt;    // TODO Auto-generated method stub&lt;br /&gt;    String strResource =&lt;br /&gt;     arg0.getAdapter().getItem(arg2).toString() +&lt;br /&gt;     " " +&lt;br /&gt;     Resources.getSystem().getResourceName(arg2+resourceStart);&lt;br /&gt;    Toast.makeText(AndroidGridView2.this,&lt;br /&gt;      strResource,&lt;br /&gt;      Toast.LENGTH_LONG).show();&lt;br /&gt;   }&lt;br /&gt;  };&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  public class ImageAdapter extends BaseAdapter {&lt;br /&gt;      private Context mContext;&lt;br /&gt;&lt;br /&gt;      public ImageAdapter(Context c) {&lt;br /&gt;          mContext = c;&lt;br /&gt;          initResourceID();&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      public int getCount() {&lt;br /&gt;          return mThumbIds.length;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      public Object getItem(int position) {&lt;br /&gt;          return mThumbIds[position];&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      public long getItemId(int position) {&lt;br /&gt;       return position;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      // create a new ImageView for each item referenced by the Adapter&lt;br /&gt;      public View getView(int position, View convertView, ViewGroup parent) {&lt;br /&gt;          ImageView imageView;&lt;br /&gt;          if (convertView == null) {&lt;br /&gt;           // if it's not recycled, initialize some attributes&lt;br /&gt;              imageView = new ImageView(mContext);&lt;br /&gt;              imageView.setLayoutParams(new GridView.LayoutParams(50, 50));&lt;br /&gt;              imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);&lt;br /&gt;              imageView.setPadding(8, 8, 8, 8);&lt;br /&gt;          } else {&lt;br /&gt;              imageView = (ImageView) convertView;&lt;br /&gt;          }&lt;br /&gt;&lt;br /&gt;          imageView.setImageResource(mThumbIds[position]);&lt;br /&gt;          return imageView;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      private int[] mThumbIds = new int[ResourceLength];&lt;br /&gt;      private void initResourceID(){&lt;br /&gt;       for ( int i = 0; i &amp;lt; ResourceLength; i++)&lt;br /&gt;       {&lt;br /&gt;        mThumbIds[i] = i + resourceStart;&lt;br /&gt;       }&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ziddu.com/download/7145637/AndroidGridView2_files_091030a.zip.html"&gt;&lt;img style="width: 18px; height: 21px;" src="http://2.bp.blogspot.com/_J90P-hyr9o8/SmR6wLejZpI/AAAAAAAAAbg/iSloE1vTVnE/s200/icons_download.gif" alt="" id="BLOGGER_PHOTO_ID_5360544424610981522" border="0" /&gt;Download the files&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/89878749563391212-3809744035907602512?l=android-er.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8DZX1v3rWBANz80HSAD1nN_UGeQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8DZX1v3rWBANz80HSAD1nN_UGeQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8DZX1v3rWBANz80HSAD1nN_UGeQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8DZX1v3rWBANz80HSAD1nN_UGeQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=uxmRfTX0Ix0:MpISDiiHj48:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=uxmRfTX0Ix0:MpISDiiHj48:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://android-er.blogspot.com/feeds/3809744035907602512/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=89878749563391212&amp;postID=3809744035907602512" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/3809744035907602512?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/3809744035907602512?v=2" /><link rel="alternate" type="text/html" href="http://android-er.blogspot.com/2009/10/loading-android-resource-in-gridview.html" title="Loading Android Resource in GridView" /><author><name>Android Er</name><uri>http://www.blogger.com/profile/04983894331825656853</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14075371138179417242" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_C5a2qH8Y_jk/SurzXKajpgI/AAAAAAAAANo/WLBloNLQGsk/s72-c/AndroidGridView2_03.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;Ck8EQXo5fip7ImA9WxNUFEs.&quot;"><id>tag:blogger.com,1999:blog-89878749563391212.post-5315518653374744174</id><published>2009-10-29T07:36:00.000-07:00</published><updated>2009-11-05T14:40:00.426-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-05T14:40:00.426-08:00</app:edited><title>New Ubuntu 9.10</title><content type="html">Ubuntu 9.10 is &lt;a href="http://www.ubuntu.com/"&gt;HERE&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;Ubuntu just released the new Ubuntu 9.10.&lt;br /&gt;&lt;br /&gt;Refer the article to &lt;a href="http://android-er.blogspot.com/2009/11/install-android-sdk-release-3-on.html"&gt;Install Android SDK release 3 on Eclipse 3.5 Galileo, in Ubuntu 9.10&lt;/a&gt;&lt;br /&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/89878749563391212-5315518653374744174?l=android-er.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JXRXsaZ4Npm0ibL9d0Z6i55_vKE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JXRXsaZ4Npm0ibL9d0Z6i55_vKE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JXRXsaZ4Npm0ibL9d0Z6i55_vKE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JXRXsaZ4Npm0ibL9d0Z6i55_vKE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=7UPBijSPyto:tTiNRTGT2jY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=7UPBijSPyto:tTiNRTGT2jY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://android-er.blogspot.com/feeds/5315518653374744174/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=89878749563391212&amp;postID=5315518653374744174" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/5315518653374744174?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/5315518653374744174?v=2" /><link rel="alternate" type="text/html" href="http://android-er.blogspot.com/2009/10/new-ubuntu-910.html" title="New Ubuntu 9.10" /><author><name>Android Er</name><uri>http://www.blogger.com/profile/04983894331825656853</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14075371138179417242" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CkIBQHo7eSp7ImA9WxNVF0o.&quot;"><id>tag:blogger.com,1999:blog-89878749563391212.post-4937876867435872890</id><published>2009-10-28T15:54:00.000-07:00</published><updated>2009-10-28T15:55:51.401-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-28T15:55:51.401-07:00</app:edited><title>Android 2.0 Official Video</title><content type="html">&lt;object width="500" height="315"&gt;&lt;param name="movie" value="http://www.youtube.com/v/opZ69P-0Jbc&amp;hl=en&amp;fs=1&amp;border=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/opZ69P-0Jbc&amp;hl=en&amp;fs=1&amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="315"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;Highlights from the latest Android platform release &lt;br /&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/89878749563391212-4937876867435872890?l=android-er.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/t_TYL_e0LUV7SlBcfjl47ROkG1I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/t_TYL_e0LUV7SlBcfjl47ROkG1I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/t_TYL_e0LUV7SlBcfjl47ROkG1I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/t_TYL_e0LUV7SlBcfjl47ROkG1I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=PROGdSryllE:zw58afCi9qY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=PROGdSryllE:zw58afCi9qY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://android-er.blogspot.com/feeds/4937876867435872890/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=89878749563391212&amp;postID=4937876867435872890" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/4937876867435872890?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/4937876867435872890?v=2" /><link rel="alternate" type="text/html" href="http://android-er.blogspot.com/2009/10/android-20-official-video.html" title="Android 2.0 Official Video" /><author><name>Android Er</name><uri>http://www.blogger.com/profile/04983894331825656853</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14075371138179417242" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;Dk8MR38yfyp7ImA9WxNVF0g.&quot;"><id>tag:blogger.com,1999:blog-89878749563391212.post-2956066023711019735</id><published>2009-10-28T11:30:00.001-07:00</published><updated>2009-10-28T11:34:46.197-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-28T11:34:46.197-07:00</app:edited><title>Hierarchy Viewer</title><content type="html">The Hierarchy Viewer application allows you to debug and optimize your user interface. It provides a visual representation of the layout's View hierarchy (the Layout View) and a magnified inspector of the display (the Pixel Perfect View).&lt;br /&gt;&lt;br /&gt;To get the Hierarchy Viewer started:&lt;br /&gt;&lt;br /&gt;1. Connect your device or launch an emulator.&lt;br /&gt;2. From a terminal, launch hierarchyviewer from your SDK /tools directory.&lt;br /&gt;3. In the window that opens, you'll see a list of Devices. When a device is selected, a list of currently active Windows is displayed on the right. The "focused window" is the window currently in the foreground, and also the default window loaded if you do not select another.&lt;br /&gt;4. Select the window that you'd like to inspect and click Load View Hierarchy. The Layout View will be loaded. You can then load the Pixel Perfect View by clicking the second icon at the bottom-left of the window.&lt;br /&gt;&lt;br /&gt;If you've navigated to a different window on the device, press Refresh Windows to refresh the list of available windows on the right.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_C5a2qH8Y_jk/SuiOU04ld4I/AAAAAAAAANg/uSQy7KeU0Ms/s1600-h/HierarchyViewer_01.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 280px;" src="http://3.bp.blogspot.com/_C5a2qH8Y_jk/SuiOU04ld4I/AAAAAAAAANg/uSQy7KeU0Ms/s400/HierarchyViewer_01.png" alt="" id="BLOGGER_PHOTO_ID_5397720641848047490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SuiN7vtQadI/AAAAAAAAANY/Az8SxiKmlhM/s1600-h/HierarchyViewer_02.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 280px;" src="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SuiN7vtQadI/AAAAAAAAANY/Az8SxiKmlhM/s400/HierarchyViewer_02.png" alt="" id="BLOGGER_PHOTO_ID_5397720210961623506" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/89878749563391212-2956066023711019735?l=android-er.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/e3GXF1CYijS0rN8WKd0g1Pm5lEo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/e3GXF1CYijS0rN8WKd0g1Pm5lEo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/e3GXF1CYijS0rN8WKd0g1Pm5lEo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/e3GXF1CYijS0rN8WKd0g1Pm5lEo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=G4c9mFFJilk:xdDlkwXBBtA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=G4c9mFFJilk:xdDlkwXBBtA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://android-er.blogspot.com/feeds/2956066023711019735/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=89878749563391212&amp;postID=2956066023711019735" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/2956066023711019735?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/2956066023711019735?v=2" /><link rel="alternate" type="text/html" href="http://android-er.blogspot.com/2009/10/hierarchy-viewer.html" title="Hierarchy Viewer" /><author><name>Android Er</name><uri>http://www.blogger.com/profile/04983894331825656853</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14075371138179417242" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_C5a2qH8Y_jk/SuiOU04ld4I/AAAAAAAAANg/uSQy7KeU0Ms/s72-c/HierarchyViewer_01.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;C08DQ3g8fCp7ImA9WxNVGUw.&quot;"><id>tag:blogger.com,1999:blog-89878749563391212.post-2844223733131592005</id><published>2009-10-28T11:22:00.001-07:00</published><updated>2009-10-30T07:11:12.674-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-30T07:11:12.674-07:00</app:edited><title>GridView</title><content type="html">GridView shows items in two-dimensional scrolling grid. The items in the grid come from the ListAdapter associated with this view.&lt;br /&gt;&lt;br /&gt;This exercise show how to implement a GridView to display drawable in /res.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_C5a2qH8Y_jk/SuiMOGEZleI/AAAAAAAAANQ/DKPvbrSPUxI/s1600-h/AndroidGridView2_01.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 257px;" src="http://4.bp.blogspot.com/_C5a2qH8Y_jk/SuiMOGEZleI/AAAAAAAAANQ/DKPvbrSPUxI/s400/AndroidGridView2_01.png" alt="" id="BLOGGER_PHOTO_ID_5397718327178663394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Create a Android Application, AndroidGridView2 (It's my first time to use Android SDK r3 for Android 2.0). Target Android 2.0 (not necessary).&lt;br /&gt;&lt;br /&gt;- Copy some picture files (or download from the file on the end of this text) into the folder /res/drawable-ldpi/ (for Android 2.0) or /res/drawable/ for former version, named drawing_01~14.png&lt;br /&gt;&lt;br /&gt;- Modify main.xml to have a GridView.&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;GridView xmlns:android="http://schemas.android.com/apk/res/android"&lt;br /&gt;android:id="@+id/gridview"&lt;br /&gt;android:layout_width="fill_parent"&lt;br /&gt;android:layout_height="fill_parent"&lt;br /&gt;android:numColumns="auto_fit"&lt;br /&gt;android:verticalSpacing="10dp"&lt;br /&gt;android:horizontalSpacing="10dp"&lt;br /&gt;android:columnWidth="90dp"&lt;br /&gt;android:stretchMode="columnWidth"&lt;br /&gt;android:gravity="center"&lt;br /&gt;/&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;- Modify AndroidGridView2.java&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;package com.exercise.AndroidGridView2;&lt;br /&gt;&lt;br /&gt;import android.app.Activity;&lt;br /&gt;import android.content.Context;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import android.view.View;&lt;br /&gt;import android.view.ViewGroup;&lt;br /&gt;import android.widget.AdapterView;&lt;br /&gt;import android.widget.BaseAdapter;&lt;br /&gt;import android.widget.GridView;&lt;br /&gt;import android.widget.ImageView;&lt;br /&gt;import android.widget.Toast;&lt;br /&gt;&lt;br /&gt;public class AndroidGridView2 extends Activity {&lt;br /&gt;/** Called when the activity is first created. */&lt;br /&gt;@Override&lt;br /&gt;public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;   super.onCreate(savedInstanceState);&lt;br /&gt;   setContentView(R.layout.main);&lt;br /&gt;&lt;br /&gt;   GridView gridview = (GridView) findViewById(R.id.gridview);&lt;br /&gt;   gridview.setAdapter(new ImageAdapter(this));&lt;br /&gt;&lt;br /&gt;   gridview.setOnItemClickListener(gridviewOnItemClickListener);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private GridView.OnItemClickListener gridviewOnItemClickListener =&lt;br /&gt; new GridView.OnItemClickListener(){&lt;br /&gt;&lt;br /&gt;   @Override&lt;br /&gt;   public void onItemClick(AdapterView&amp;lt;?&amp;gt; arg0, View arg1, int arg2,&lt;br /&gt;     long arg3) {&lt;br /&gt;    // TODO Auto-generated method stub&lt;br /&gt;    Toast.makeText(AndroidGridView2.this,&lt;br /&gt;      arg0.getAdapter().getItem(arg2).toString(),&lt;br /&gt;      Toast.LENGTH_LONG).show();&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class ImageAdapter extends BaseAdapter {&lt;br /&gt;   private Context mContext;&lt;br /&gt;&lt;br /&gt;   public ImageAdapter(Context c) {&lt;br /&gt;       mContext = c;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public int getCount() {&lt;br /&gt;       return mThumbIds.length;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public Object getItem(int position) {&lt;br /&gt;       return mThumbIds[position];&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public long getItemId(int position) {&lt;br /&gt;    return position;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   // create a new ImageView for each item referenced by the Adapter&lt;br /&gt;   public View getView(int position, View convertView, ViewGroup parent) {&lt;br /&gt;       ImageView imageView;&lt;br /&gt;       if (convertView == null) {&lt;br /&gt;        // if it's not recycled, initialize some attributes&lt;br /&gt;           imageView = new ImageView(mContext);&lt;br /&gt;           imageView.setLayoutParams(new GridView.LayoutParams(85, 85));&lt;br /&gt;           imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);&lt;br /&gt;           imageView.setPadding(8, 8, 8, 8);&lt;br /&gt;       } else {&lt;br /&gt;           imageView = (ImageView) convertView;&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       imageView.setImageResource(mThumbIds[position]);&lt;br /&gt;       return imageView;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;  // references to our images&lt;br /&gt;   private Integer[] mThumbIds = {&lt;br /&gt;           R.drawable.drawing_01,&lt;br /&gt;           R.drawable.drawing_02,&lt;br /&gt;           R.drawable.drawing_03,&lt;br /&gt;           R.drawable.drawing_04,&lt;br /&gt;           R.drawable.drawing_05,&lt;br /&gt;           R.drawable.drawing_06,&lt;br /&gt;           R.drawable.drawing_07,&lt;br /&gt;           R.drawable.drawing_08,&lt;br /&gt;           R.drawable.drawing_09,&lt;br /&gt;           R.drawable.drawing_10,&lt;br /&gt;           R.drawable.drawing_11,&lt;br /&gt;           R.drawable.drawing_12,&lt;br /&gt;           R.drawable.drawing_13,&lt;br /&gt;           R.drawable.drawing_14&lt;br /&gt;   };&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;--------------------------------------------------------------------&lt;br /&gt;Little bit advice:&lt;br /&gt;- Set a break point inside getView(), you can know more on the operation of getView, such as when it will be called, and when go to initialize attributes, or load the previous convertView.&lt;br /&gt;&lt;br /&gt;- Modify onItemClick() to check the value of arg0, arg1, arg2 &amp;amp; arg3.&lt;br /&gt;&lt;br /&gt;In my code, the object ID of the clicked item of the GridView will be displayed on the Toast, in decimal. It's match  with the ID of the item in the file R.java, in hexdecimal.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_C5a2qH8Y_jk/SuiL_73tHQI/AAAAAAAAANI/OM4c8K41meg/s1600-h/AndroidGridView2_02.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 220px;" src="http://3.bp.blogspot.com/_C5a2qH8Y_jk/SuiL_73tHQI/AAAAAAAAANI/OM4c8K41meg/s400/AndroidGridView2_02.png" alt="" id="BLOGGER_PHOTO_ID_5397718083922894082" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Try the Tool, &lt;a href="http://android-er.blogspot.com/2009/10/hierarchy-viewer.html"&gt;hierarchyviewer&lt;/a&gt;, it can give you a hierarchy viewer of the current view.&lt;br /&gt;--------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ziddu.com/download/7117325/AndroidGridView2_files_091029a.zip.html"&gt;&lt;img style="width: 18px; height: 21px;" src="http://2.bp.blogspot.com/_J90P-hyr9o8/SmR6wLejZpI/AAAAAAAAAbg/iSloE1vTVnE/s200/icons_download.gif" alt="" id="BLOGGER_PHOTO_ID_5360544424610981522" border="0" /&gt;Download the files&lt;/a&gt;.&lt;br /&gt;--------------------------------------------------------------------&lt;br /&gt;Another exercise &lt;a href="http://android-er.blogspot.com/2009/10/loading-android-resource-in-gridview.html"&gt;Loading Android Resource in GridView&lt;/a&gt;.&lt;br /&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/89878749563391212-2844223733131592005?l=android-er.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/x5C6OBVBjbwLN-efqq89y_mGcLs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/x5C6OBVBjbwLN-efqq89y_mGcLs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/x5C6OBVBjbwLN-efqq89y_mGcLs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/x5C6OBVBjbwLN-efqq89y_mGcLs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=N2S7JNhJQ-A:H2ANCyFxIVw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=N2S7JNhJQ-A:H2ANCyFxIVw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://android-er.blogspot.com/feeds/2844223733131592005/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=89878749563391212&amp;postID=2844223733131592005" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/2844223733131592005?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/2844223733131592005?v=2" /><link rel="alternate" type="text/html" href="http://android-er.blogspot.com/2009/10/gridview.html" title="GridView" /><author><name>Android Er</name><uri>http://www.blogger.com/profile/04983894331825656853</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14075371138179417242" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_C5a2qH8Y_jk/SuiMOGEZleI/AAAAAAAAANQ/DKPvbrSPUxI/s72-c/AndroidGridView2_01.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;Dk4NRH87fyp7ImA9WxNVFkU.&quot;"><id>tag:blogger.com,1999:blog-89878749563391212.post-8245778986819658805</id><published>2009-10-27T12:16:00.000-07:00</published><updated>2009-10-27T16:09:55.107-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-27T16:09:55.107-07:00</app:edited><title>Create AVD for Android 2</title><content type="html">The first step to use new Android SDK Rev.3 is to create a new AVD for Android 2.0&lt;br /&gt;&lt;br /&gt;Click Window of Eclipse top menu, select Android SDK and AVD Manager.&lt;br /&gt;&lt;br /&gt;Select Virtual Device on the left and click New.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_C5a2qH8Y_jk/SudHVH8ts2I/AAAAAAAAAM4/jFIyBPYlq_I/s1600-h/AVD2_01.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 232px;" src="http://3.bp.blogspot.com/_C5a2qH8Y_jk/SudHVH8ts2I/AAAAAAAAAM4/jFIyBPYlq_I/s400/AVD2_01.png" alt="" id="BLOGGER_PHOTO_ID_5397361106663355234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can see a new and improved Create new AVD dialog. Configure your new AVD, and Create AVD.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_C5a2qH8Y_jk/SudLfbKTVdI/AAAAAAAAANA/TDd6nxUyYss/s1600-h/AVD2_02.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 279px; height: 400px;" src="http://2.bp.blogspot.com/_C5a2qH8Y_jk/SudLfbKTVdI/AAAAAAAAANA/TDd6nxUyYss/s400/AVD2_02.png" alt="" id="BLOGGER_PHOTO_ID_5397365681665824210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/89878749563391212-8245778986819658805?l=android-er.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CAAMn_mn2cmhLmjEn6Zty7x9oBw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CAAMn_mn2cmhLmjEn6Zty7x9oBw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CAAMn_mn2cmhLmjEn6Zty7x9oBw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CAAMn_mn2cmhLmjEn6Zty7x9oBw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=h2yuwS3Kcn4:lL0MlxUwfO4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=h2yuwS3Kcn4:lL0MlxUwfO4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://android-er.blogspot.com/feeds/8245778986819658805/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=89878749563391212&amp;postID=8245778986819658805" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/8245778986819658805?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/8245778986819658805?v=2" /><link rel="alternate" type="text/html" href="http://android-er.blogspot.com/2009/10/create-avd-for-android-2-sdk.html" title="Create AVD for Android 2" /><author><name>Android Er</name><uri>http://www.blogger.com/profile/04983894331825656853</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14075371138179417242" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_C5a2qH8Y_jk/SudHVH8ts2I/AAAAAAAAAM4/jFIyBPYlq_I/s72-c/AVD2_01.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DkEAQn09fyp7ImA9WxNVFkU.&quot;"><id>tag:blogger.com,1999:blog-89878749563391212.post-6009573393784778281</id><published>2009-10-27T11:39:00.000-07:00</published><updated>2009-10-27T16:04:03.367-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-27T16:04:03.367-07:00</app:edited><title>upgrade to Android SDK Tools, Revision 3</title><content type="html">If you have already installed Android 1.6 SDK and Eclipse, it's very easy to upgrade to Android SDK Tools, Revision 3. The Android SDK and AVD Manager tool is included in Android 1.6 and later SDK packages.&lt;br /&gt;&lt;br /&gt;If NOT yet, follow the procedure in &lt;a href="http://android-er.blogspot.com/2009/07/install-android-sdk-on-eclipse-35.html"&gt;Install Android SDK on Eclipse 3.5 Galileo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Click Window on top menu of Eclipse, click Android SDK and AVD Manager.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_C5a2qH8Y_jk/Suc_TgDtG_I/AAAAAAAAAMo/h2uX1uPXEiE/s1600-h/AndroidSDK2_01.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 280px;" src="http://1.bp.blogspot.com/_C5a2qH8Y_jk/Suc_TgDtG_I/AAAAAAAAAMo/h2uX1uPXEiE/s400/AndroidSDK2_01.png" alt="" id="BLOGGER_PHOTO_ID_5397352282682366962" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Select Avaolable Package, wait a moments, the available Sources, Packages and Archieves will be shown on the right. Select the components you want.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_C5a2qH8Y_jk/Suc_OolFpuI/AAAAAAAAAMg/6vo0yrjlelQ/s1600-h/AndroidSDK2_02.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 232px;" src="http://1.bp.blogspot.com/_C5a2qH8Y_jk/Suc_OolFpuI/AAAAAAAAAMg/6vo0yrjlelQ/s400/AndroidSDK2_02.png" alt="" id="BLOGGER_PHOTO_ID_5397352199070525154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Accept All&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_C5a2qH8Y_jk/Suc_JSpfQEI/AAAAAAAAAMY/2XKkwkAvgNk/s1600-h/AndroidSDK2_03.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 267px;" src="http://2.bp.blogspot.com/_C5a2qH8Y_jk/Suc_JSpfQEI/AAAAAAAAAMY/2XKkwkAvgNk/s400/AndroidSDK2_03.png" alt="" id="BLOGGER_PHOTO_ID_5397352107284054082" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Wait download and install.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_C5a2qH8Y_jk/Suc_EFT0i2I/AAAAAAAAAMQ/-gFYgQGn2eQ/s1600-h/AndroidSDK2_04.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 267px;" src="http://2.bp.blogspot.com/_C5a2qH8Y_jk/Suc_EFT0i2I/AAAAAAAAAMQ/-gFYgQGn2eQ/s400/AndroidSDK2_04.png" alt="" id="BLOGGER_PHOTO_ID_5397352017804168034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After downloaded and installed, you will be asked to restart Eclipse.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_C5a2qH8Y_jk/Suc--TRTD6I/AAAAAAAAAMI/Eq66XGL_QlE/s1600-h/AndroidSDK2_05.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 110px;" src="http://2.bp.blogspot.com/_C5a2qH8Y_jk/Suc--TRTD6I/AAAAAAAAAMI/Eq66XGL_QlE/s400/AndroidSDK2_05.png" alt="" id="BLOGGER_PHOTO_ID_5397351918472466338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After Eclipse restart, you will ne asked to update ADT.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_C5a2qH8Y_jk/Suc-4JhJyhI/AAAAAAAAAMA/-tZ_65jwg6s/s1600-h/AndroidSDK2_06.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 134px;" src="http://3.bp.blogspot.com/_C5a2qH8Y_jk/Suc-4JhJyhI/AAAAAAAAAMA/-tZ_65jwg6s/s400/AndroidSDK2_06.png" alt="" id="BLOGGER_PHOTO_ID_5397351812775397906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Click Help on top of Eclipse, click Install New Software...&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_C5a2qH8Y_jk/Suc-yXoBsDI/AAAAAAAAAL4/ycrCwTWydTQ/s1600-h/AndroidSDK2_07.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 280px;" src="http://4.bp.blogspot.com/_C5a2qH8Y_jk/Suc-yXoBsDI/AAAAAAAAAL4/ycrCwTWydTQ/s400/AndroidSDK2_07.png" alt="" id="BLOGGER_PHOTO_ID_5397351713483108402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Select the site&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;https://dl-ssl.google.com/android/eclipse/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It should be already in your list if you have installed Android SDK before. Wait a moment the available ADT will be appear.&lt;br /&gt;Select available ADT and click Next&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_C5a2qH8Y_jk/Suc-rwzIWPI/AAAAAAAAALw/6HlBffASkh4/s1600-h/AndroidSDK2_08.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 312px;" src="http://1.bp.blogspot.com/_C5a2qH8Y_jk/Suc-rwzIWPI/AAAAAAAAALw/6HlBffASkh4/s400/AndroidSDK2_08.png" alt="" id="BLOGGER_PHOTO_ID_5397351599981484274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Next and Accept the terms, and click Finish. And wait installation of the the new ADT.&lt;br /&gt;&lt;br /&gt;Restart Eclipse again.&lt;br /&gt;&lt;br /&gt;That ALL.&lt;br /&gt;&lt;br /&gt;Remember to &lt;a href="http://android-er.blogspot.com/2009/10/create-avd-for-android-2-sdk.html"&gt;create a new AVD for Android 2.0&lt;/a&gt;&lt;br /&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/89878749563391212-6009573393784778281?l=android-er.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IHHcn50ohfT1zWBMJlu6u2auh_o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IHHcn50ohfT1zWBMJlu6u2auh_o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IHHcn50ohfT1zWBMJlu6u2auh_o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IHHcn50ohfT1zWBMJlu6u2auh_o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=tLnCcRK9eNA:1CGuv4Shwj4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=tLnCcRK9eNA:1CGuv4Shwj4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://android-er.blogspot.com/feeds/6009573393784778281/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=89878749563391212&amp;postID=6009573393784778281" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/6009573393784778281?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/6009573393784778281?v=2" /><link rel="alternate" type="text/html" href="http://android-er.blogspot.com/2009/10/upgrade-to-android-20-sdk.html" title="upgrade to Android SDK Tools, Revision 3" /><author><name>Android Er</name><uri>http://www.blogger.com/profile/04983894331825656853</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14075371138179417242" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_C5a2qH8Y_jk/Suc_TgDtG_I/AAAAAAAAAMo/h2uX1uPXEiE/s72-c/AndroidSDK2_01.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DEAFRXs5fyp7ImA9WxNVFks.&quot;"><id>tag:blogger.com,1999:blog-89878749563391212.post-6176018977993565504</id><published>2009-10-27T11:03:00.000-07:00</published><updated>2009-10-27T11:05:14.527-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-27T11:05:14.527-07:00</app:edited><title>Android 2.0, Release 1</title><content type="html">Android 2.0 is a major platform release deployable to Android-powered handsets starting in November 2009. The release includes new features for users and developers, as well as changes in the Android framework API. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://developer.android.com/sdk/android-2.0.html"&gt;details&gt;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For a list of new user features and platform highlights, see the Android 2.0 Platform Highlights document.&lt;br /&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/89878749563391212-6176018977993565504?l=android-er.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fc_ez88NEdeMUW1cdTjN-_1TjzU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fc_ez88NEdeMUW1cdTjN-_1TjzU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fc_ez88NEdeMUW1cdTjN-_1TjzU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fc_ez88NEdeMUW1cdTjN-_1TjzU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=ShTPjPjfDLE:xOCmdRLio0w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=ShTPjPjfDLE:xOCmdRLio0w:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://android-er.blogspot.com/feeds/6176018977993565504/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=89878749563391212&amp;postID=6176018977993565504" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/6176018977993565504?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/6176018977993565504?v=2" /><link rel="alternate" type="text/html" href="http://android-er.blogspot.com/2009/10/android-20-release-1.html" title="Android 2.0, Release 1" /><author><name>Android Er</name><uri>http://www.blogger.com/profile/04983894331825656853</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14075371138179417242" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CkIGSH0zeip7ImA9WxNVFEo.&quot;"><id>tag:blogger.com,1999:blog-89878749563391212.post-8787930357739528972</id><published>2009-10-25T04:21:00.001-07:00</published><updated>2009-10-25T04:35:29.382-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-25T04:35:29.382-07:00</app:edited><title>Create SD Card in Android Emulator and copy files into, in Eclipse, Emulator and DDMS.</title><content type="html">In my previous articles, I described how to &lt;a href="http://android-er.blogspot.com/2009/08/create-sd-card-to-existing-avd.html"&gt;Create an SD Card to existing AVD&lt;/a&gt;, and &lt;a href="http://android-er.blogspot.com/2009/08/copying-files-to-disk-image.html"&gt;Copying Files to a Disk Image&lt;/a&gt; in ubuntu host system using text commands in Terminal.&lt;br /&gt;&lt;br /&gt;Now, I have another approach using in Eclipse, Emulator and DDMS. May be it's more easy, at least no need to remember the text commands.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Create a new AVD in Eclipse:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- Start Eclipse, click Window on the top menu, and click Android SDK and AVD Manager.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_C5a2qH8Y_jk/SuQ1_CCFi8I/AAAAAAAAALo/zhOcUimk6h8/s1600-h/AVD_01.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 280px;" src="http://4.bp.blogspot.com/_C5a2qH8Y_jk/SuQ1_CCFi8I/AAAAAAAAALo/zhOcUimk6h8/s400/AVD_01.png" alt="" id="BLOGGER_PHOTO_ID_5396497610490350530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;- New a AVD&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_C5a2qH8Y_jk/SuQ15JKk2WI/AAAAAAAAALg/2mnv_SxtzpI/s1600-h/AVD_02.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 232px;" src="http://3.bp.blogspot.com/_C5a2qH8Y_jk/SuQ15JKk2WI/AAAAAAAAALg/2mnv_SxtzpI/s400/AVD_02.png" alt="" id="BLOGGER_PHOTO_ID_5396497509325789538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Name your new AVD, select Target, type 1000M in SD Card and select skin. Click Create.&lt;br /&gt;note: SD Card must be either a file path or a size such as 128K 0r 64M. type 1000M now to create a SD Card of 1G.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_C5a2qH8Y_jk/SuQ1zSu6EoI/AAAAAAAAALY/Yuw1sP1wdvc/s1600-h/AVD_03.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 296px;" src="http://2.bp.blogspot.com/_C5a2qH8Y_jk/SuQ1zSu6EoI/AAAAAAAAALY/Yuw1sP1wdvc/s400/AVD_03.png" alt="" id="BLOGGER_PHOTO_ID_5396497408814879362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;- Select and Start the new AVD.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_C5a2qH8Y_jk/SuQ1sk3z35I/AAAAAAAAALQ/IDaIYyjGNZY/s1600-h/AVD_04.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 232px;" src="http://4.bp.blogspot.com/_C5a2qH8Y_jk/SuQ1sk3z35I/AAAAAAAAALQ/IDaIYyjGNZY/s400/AVD_04.png" alt="" id="BLOGGER_PHOTO_ID_5396497293424975762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After the Emulator started, you can close the AVD Manager.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Create folder in SDCard&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I can't find any File Manager in Android Emulator. Fortunately, Android Emulator provide a DevTools with Terminal, so you can create a folder using Linux command inside Android Emulator.&lt;br /&gt;&lt;br /&gt;- Click the ARROW on the screen to display the available application.&lt;br /&gt;&lt;br /&gt;- Click DevTools.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_C5a2qH8Y_jk/SuQ1l9Gx0KI/AAAAAAAAALI/oBfF28T0q4o/s1600-h/AVD_05.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 319px;" src="http://3.bp.blogspot.com/_C5a2qH8Y_jk/SuQ1l9Gx0KI/AAAAAAAAALI/oBfF28T0q4o/s400/AVD_05.png" alt="" id="BLOGGER_PHOTO_ID_5396497179671122082" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Scroll down to start Terminal Emulator&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SuQ1fldEGEI/AAAAAAAAALA/lfpC7nutjgg/s1600-h/AVD_06.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 319px;" src="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SuQ1fldEGEI/AAAAAAAAALA/lfpC7nutjgg/s400/AVD_06.png" alt="" id="BLOGGER_PHOTO_ID_5396497070242928706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- It's the same a terminal in Linux, you can &lt;span style="font-style: italic;"&gt;ls&lt;/span&gt; to view the current files and folders in your $home.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- Now change into sdcard and create a folder, say pictures.&lt;br /&gt;$&lt;span style="font-weight: bold; font-style: italic;"&gt;cd sdcard&lt;/span&gt;&lt;br /&gt;$&lt;span style="font-weight: bold; font-style: italic;"&gt;mkdir pictures&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It's the only two line of command in this approach.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SuQ1XO9mmOI/AAAAAAAAAK4/7NDsP3BsgcI/s1600-h/AVD_07.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 319px;" src="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SuQ1XO9mmOI/AAAAAAAAAK4/7NDsP3BsgcI/s400/AVD_07.png" alt="" id="BLOGGER_PHOTO_ID_5396496926766438626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Copy files from your host system into Android SDCard&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- With the Emulator is running. Now go back to Eclipse, switch to DDMS Perspective&lt;br /&gt;&lt;br /&gt;Click the arrow on the menu bar and select DDMS&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;Click Window &gt; Open Perspective &gt; others &gt; to select DDMS&lt;br /&gt;&lt;br /&gt;- Select the device in the window on the left, eg. emulator-5554.&lt;br /&gt;  (Without select the device, you will fail in copying files into.)&lt;br /&gt;&lt;br /&gt;- In DDMS, select File Explorer tag in the window on the right. Expend sdcard folder. Now, you can see the pictures folder in the tree. And also, you can see the Permissions of the folder.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_C5a2qH8Y_jk/SuQ1OlTXqPI/AAAAAAAAAKw/9Z_nksrG6Aw/s1600-h/AVD_08.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_C5a2qH8Y_jk/SuQ1OlTXqPI/AAAAAAAAAKw/9Z_nksrG6Aw/s400/AVD_08.png" alt="" id="BLOGGER_PHOTO_ID_5396496778144491762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Select the pictures folder, and click &lt;span style="font-weight: bold;"&gt;Push a file onto the device&lt;/span&gt; &lt;img style="width: 17px; height: 20px;" src="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SuQ051J7XeI/AAAAAAAAAKg/QmxN9n8NlyY/s200/AVD_09.png" alt="" id="BLOGGER_PHOTO_ID_5396496421622603234" border="0" /&gt;.&lt;br /&gt;&lt;br /&gt;- Browse to and select the files from your host, to push onto the Android Emulator.&lt;br /&gt;&lt;br /&gt;- Further expend the folder pictures, you can see the new file here.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SuQ1HIlqidI/AAAAAAAAAKo/NxI3xGXM0ic/s1600-h/AVD_10.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 280px;" src="http://1.bp.blogspot.com/_C5a2qH8Y_jk/SuQ1HIlqidI/AAAAAAAAAKo/NxI3xGXM0ic/s400/AVD_10.png" alt="" id="BLOGGER_PHOTO_ID_5396496650177513938" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/89878749563391212-8787930357739528972?l=android-er.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Iwv-2gjqwsbtuQwPqMA8Z-y-aEI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Iwv-2gjqwsbtuQwPqMA8Z-y-aEI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Iwv-2gjqwsbtuQwPqMA8Z-y-aEI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Iwv-2gjqwsbtuQwPqMA8Z-y-aEI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=gSDj6zMzDiU:GgVtVY2x_zw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=gSDj6zMzDiU:GgVtVY2x_zw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://android-er.blogspot.com/feeds/8787930357739528972/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=89878749563391212&amp;postID=8787930357739528972" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/8787930357739528972?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/8787930357739528972?v=2" /><link rel="alternate" type="text/html" href="http://android-er.blogspot.com/2009/10/create-sd-card-in-android-emulator-and.html" title="Create SD Card in Android Emulator and copy files into, in Eclipse, Emulator and DDMS." /><author><name>Android Er</name><uri>http://www.blogger.com/profile/04983894331825656853</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14075371138179417242" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_C5a2qH8Y_jk/SuQ1_CCFi8I/AAAAAAAAALo/zhOcUimk6h8/s72-c/AVD_01.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CEIGSHg6fyp7ImA9WxNVFE0.&quot;"><id>tag:blogger.com,1999:blog-89878749563391212.post-6761425383149701319</id><published>2009-10-24T09:30:00.000-07:00</published><updated>2009-10-24T09:42:09.617-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-24T09:42:09.617-07:00</app:edited><title>Use mp3 as Notification sound</title><content type="html">In the perviouse article, &lt;a href="http://android-er.blogspot.com/2009/10/status-bar-notifications.html"&gt;Status Bar Notifications&lt;/a&gt;, Notification is displayed on Status Bar.&lt;br /&gt;&lt;br /&gt;To use the user's default sound, add "DEFAULT_SOUND" to the defaults field:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;notification.defaults |= Notification.DEFAULT_SOUND;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;But...actually, I can't make my Emulator to have any sound using this method. May be there are some setting missed in my Emulator.&lt;br /&gt;(If you know why, please leave me a comment to let me know, thx.)&lt;br /&gt;&lt;br /&gt;Alternatively, I use a mp3 file in sdcard as Notification sound.&lt;br /&gt;&lt;br /&gt;- Follow my previous articles to &lt;a href="http://android-er.blogspot.com/2009/08/create-sd-card-to-existing-avd.html"&gt;Create an SD Card to existing AVD&lt;/a&gt;, and &lt;a href="http://android-er.blogspot.com/2009/08/copying-files-to-disk-image.html"&gt;Copying Files to a Disk Image&lt;/a&gt;, to copy a mp3 file to the root of the sdcard, named sound.card.&lt;br /&gt;&lt;br /&gt;- Add the code in the Activity.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;notification.sound = Uri.parse("file:///sdcard/sound.mp3");&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/89878749563391212-6761425383149701319?l=android-er.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/sguKVjuB59EWAN_QlUHweWtcAjQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sguKVjuB59EWAN_QlUHweWtcAjQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/sguKVjuB59EWAN_QlUHweWtcAjQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sguKVjuB59EWAN_QlUHweWtcAjQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=FhSSzHVzneA:y68SH2GT8oI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=FhSSzHVzneA:y68SH2GT8oI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://android-er.blogspot.com/feeds/6761425383149701319/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=89878749563391212&amp;postID=6761425383149701319" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/6761425383149701319?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/6761425383149701319?v=2" /><link rel="alternate" type="text/html" href="http://android-er.blogspot.com/2009/10/use-mp3-as-notification-sound.html" title="Use mp3 as Notification sound" /><author><name>Android Er</name><uri>http://www.blogger.com/profile/04983894331825656853</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14075371138179417242" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DUUCQXo8fSp7ImA9WxNVE00.&quot;"><id>tag:blogger.com,1999:blog-89878749563391212.post-529083326442347229</id><published>2009-10-23T07:06:00.000-07:00</published><updated>2009-10-23T07:14:20.475-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-23T07:14:20.475-07:00</app:edited><title>Status Bar Notifications</title><content type="html">A status bar notification adds an icon to the system's status bar (with an optional ticker-text message) and an expanded message in the "Notifications" window.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_C5a2qH8Y_jk/SuG6C8nvOGI/AAAAAAAAAKY/SvQc8VdNI-U/s1600-h/AndroidNotification_01.png"&gt;&lt;img style="cursor: pointer; width: 207px; height: 320px;" src="http://2.bp.blogspot.com/_C5a2qH8Y_jk/SuG6C8nvOGI/AAAAAAAAAKY/SvQc8VdNI-U/s320/AndroidNotification_01.png" alt="" id="BLOGGER_PHOTO_ID_5395798388361869410" border="0" /&gt;&lt;/a&gt;  &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_C5a2qH8Y_jk/SuG5_Vcl0VI/AAAAAAAAAKQ/R0cfPJs5J4g/s1600-h/AndroidNotification_02.png"&gt;&lt;img style="cursor: pointer; width: 205px; height: 320px;" src="http://2.bp.blogspot.com/_C5a2qH8Y_jk/SuG5_Vcl0VI/AAAAAAAAAKQ/R0cfPJs5J4g/s320/AndroidNotification_02.png" alt="" id="BLOGGER_PHOTO_ID_5395798326306525522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After Notification generated, a selected notification icon and Ticket will be displayed on the status bar.&lt;br /&gt;&lt;br /&gt;User can reveal the Notifications window by pulling down the status bar (or selecting Notifications from the Home options menu), to view the Title and Content.&lt;br /&gt;&lt;br /&gt;Notification can be generated inside Service or Activity. This exercise show the basic steps to generate a Notification in Activity.&lt;br /&gt;&lt;br /&gt;The most important class is NotificationManager and Notification.&lt;br /&gt;&lt;br /&gt;In the exercise:&lt;br /&gt;android.R.drawable.btn_star_big_on is a drawable icon in Android system resource, you can assign any drawable icon.&lt;br /&gt;when is when the notification should be generated, System.currentTimeMillis() = NOW.&lt;br /&gt;NOTIFICATION_ID is a number which is unique in your application.&lt;br /&gt;contentIntent is the expected intent to handle the notification. It's the own activity in this exercise.&lt;br /&gt;&lt;br /&gt;The generated Notification can be cleared by:&lt;br /&gt; NotificationManager.cancel(NOTIFICATION_ID);&lt;br /&gt;&lt;br /&gt;Modify main.xml to have two Buttons to generate and clear the Notification&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"&lt;br /&gt;android:orientation="vertical"&lt;br /&gt;android:layout_width="fill_parent"&lt;br /&gt;android:layout_height="fill_parent"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;TextView&lt;br /&gt;android:layout_width="fill_parent"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;android:text="@string/hello"&lt;br /&gt;/&amp;gt;&lt;br /&gt;&amp;lt;Button&lt;br /&gt; android:id="@+id/gen"&lt;br /&gt;android:layout_width="wrap_content"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;android:layout_gravity="center"&lt;br /&gt;android:text="Generate Notification"&lt;br /&gt;/&amp;gt;&lt;br /&gt;&amp;lt;Button&lt;br /&gt; android:id="@+id/clear"&lt;br /&gt;android:layout_width="wrap_content"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;android:layout_gravity="center"&lt;br /&gt;android:text="Clear Notification"&lt;br /&gt;/&amp;gt;&lt;br /&gt;&amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;AndroidNotification.java&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;package com.exercise.AndroidNotification;&lt;br /&gt;&lt;br /&gt;import android.app.Activity;&lt;br /&gt;import android.app.Notification;&lt;br /&gt;import android.app.NotificationManager;&lt;br /&gt;import android.app.PendingIntent;&lt;br /&gt;import android.content.Context;&lt;br /&gt;import android.content.Intent;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import android.view.View;&lt;br /&gt;import android.widget.Button;&lt;br /&gt;&lt;br /&gt;public class AndroidNotification extends Activity {&lt;br /&gt;&lt;br /&gt; NotificationManager myNotificationManager;&lt;br /&gt; private static final int NOTIFICATION_ID = 1;&lt;br /&gt; &lt;br /&gt; /** Called when the activity is first created. */&lt;br /&gt;@Override&lt;br /&gt;public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;    super.onCreate(savedInstanceState);&lt;br /&gt;    setContentView(R.layout.main);&lt;br /&gt;&lt;br /&gt;    Button myGen = (Button)findViewById(R.id.gen);&lt;br /&gt;    myGen.setOnClickListener(myGenOnClickListener);&lt;br /&gt;    Button myClear = (Button)findViewById(R.id.clear);&lt;br /&gt;    myClear.setOnClickListener(myClearOnClickListener);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void GeneratNotification(){&lt;br /&gt;  &lt;br /&gt;  myNotificationManager =&lt;br /&gt;   (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);&lt;br /&gt;  &lt;br /&gt;  CharSequence NotificationTicket = "*** Notification";&lt;br /&gt;  CharSequence NotificationTitle = "Attention Please!";&lt;br /&gt;  CharSequence NotificationContent = "- Notification is coming -";&lt;br /&gt;  long when = System.currentTimeMillis();&lt;br /&gt;  &lt;br /&gt;  Notification notification =&lt;br /&gt;   new Notification(android.R.drawable.btn_star_big_on,&lt;br /&gt;     NotificationTicket, when);&lt;br /&gt;    &lt;br /&gt;  Context context = getApplicationContext();&lt;br /&gt;&lt;br /&gt;  Intent notificationIntent = new Intent(this,&lt;br /&gt;   AndroidNotification.class);&lt;br /&gt;  PendingIntent contentIntent =&lt;br /&gt;   PendingIntent.getActivity(this, 0, notificationIntent, 0);&lt;br /&gt;&lt;br /&gt;  notification.setLatestEventInfo(context, NotificationTitle,&lt;br /&gt;    NotificationContent, contentIntent);&lt;br /&gt;  &lt;br /&gt;  myNotificationManager.notify(NOTIFICATION_ID, notification);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Button.OnClickListener myGenOnClickListener =&lt;br /&gt; new Button.OnClickListener(){&lt;br /&gt;&lt;br /&gt;  @Override&lt;br /&gt;  public void onClick(View v) {&lt;br /&gt;   // TODO Auto-generated method stub&lt;br /&gt;   GeneratNotification();&lt;br /&gt;  }&lt;br /&gt; &lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;Button.OnClickListener myClearOnClickListener =&lt;br /&gt; new Button.OnClickListener(){&lt;br /&gt;&lt;br /&gt;  @Override&lt;br /&gt;  public void onClick(View v) {&lt;br /&gt;   // TODO Auto-generated method stub&lt;br /&gt;   myNotificationManager.cancel(NOTIFICATION_ID);&lt;br /&gt;  }&lt;br /&gt; &lt;br /&gt;};&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ziddu.com/download/7039439/AndroidNotification_files_091023a.zip.html"&gt;&lt;img style="width: 18px; height: 21px;" src="http://2.bp.blogspot.com/_J90P-hyr9o8/SmR6wLejZpI/AAAAAAAAAbg/iSloE1vTVnE/s200/icons_download.gif" alt="" id="BLOGGER_PHOTO_ID_5360544424610981522" border="0" /&gt;Download the files&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/89878749563391212-529083326442347229?l=android-er.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/t9O4a_nni10o-ognkMaF_PPajUA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/t9O4a_nni10o-ognkMaF_PPajUA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/t9O4a_nni10o-ognkMaF_PPajUA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/t9O4a_nni10o-ognkMaF_PPajUA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=mEbRYfxooe8:Dd4y7oAsAKE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=mEbRYfxooe8:Dd4y7oAsAKE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://android-er.blogspot.com/feeds/529083326442347229/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=89878749563391212&amp;postID=529083326442347229" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/529083326442347229?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/529083326442347229?v=2" /><link rel="alternate" type="text/html" href="http://android-er.blogspot.com/2009/10/status-bar-notifications.html" title="Status Bar Notifications" /><author><name>Android Er</name><uri>http://www.blogger.com/profile/04983894331825656853</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14075371138179417242" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_C5a2qH8Y_jk/SuG6C8nvOGI/AAAAAAAAAKY/SvQc8VdNI-U/s72-c/AndroidNotification_01.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DEYNQng-eip7ImA9WxNVEk8.&quot;"><id>tag:blogger.com,1999:blog-89878749563391212.post-5534284934595499511</id><published>2009-10-22T08:41:00.000-07:00</published><updated>2009-10-22T08:43:13.652-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-22T08:43:13.652-07:00</app:edited><title>CheckBox</title><content type="html">A checkbox is a specific type of two-states button that can be either checked or unchecked.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_C5a2qH8Y_jk/SuB9cojF_-I/AAAAAAAAAKI/djntxXjUEvw/s1600-h/AndroidCheckBox_01.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 262px;" src="http://2.bp.blogspot.com/_C5a2qH8Y_jk/SuB9cojF_-I/AAAAAAAAAKI/djntxXjUEvw/s320/AndroidCheckBox_01.png" alt="" id="BLOGGER_PHOTO_ID_5395450284464275426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Modify the main.xml with two CheckBox and a Button.&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"&lt;br /&gt; android:orientation="vertical"&lt;br /&gt; android:layout_width="fill_parent"&lt;br /&gt; android:layout_height="fill_parent"&lt;br /&gt; &amp;gt;&lt;br /&gt;&amp;lt;TextView&lt;br /&gt; android:layout_width="fill_parent"&lt;br /&gt; android:layout_height="wrap_content"&lt;br /&gt; android:text="@string/hello"&lt;br /&gt; /&amp;gt;&lt;br /&gt;&amp;lt;CheckBox&lt;br /&gt; android:id="@+id/option1"&lt;br /&gt; android:layout_width="fill_parent"&lt;br /&gt; android:layout_height="wrap_content"&lt;br /&gt; android:text="Option 1"&lt;br /&gt; /&amp;gt;&lt;br /&gt;&amp;lt;CheckBox&lt;br /&gt; android:id="@+id/option2"&lt;br /&gt; android:layout_width="fill_parent"&lt;br /&gt; android:layout_height="wrap_content"&lt;br /&gt; android:text="Option 2"&lt;br /&gt; /&amp;gt;&lt;br /&gt;&amp;lt;Button&lt;br /&gt; android:id="@+id/OK"&lt;br /&gt; android:layout_width="wrap_content"&lt;br /&gt; android:layout_height="wrap_content"&lt;br /&gt; android:layout_gravity="center"&lt;br /&gt; android:text="OK"&lt;br /&gt; /&amp;gt;&lt;br /&gt;&amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Modify the code to read and show the CheckBox's status.&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;package com.exercise.AndroidCheckBox;&lt;br /&gt;&lt;br /&gt;import android.app.Activity;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import android.view.View;&lt;br /&gt;import android.widget.Button;&lt;br /&gt;import android.widget.CheckBox;&lt;br /&gt;import android.widget.Toast;&lt;br /&gt;&lt;br /&gt;public class AndroidCheckBox extends Activity {&lt;br /&gt; &lt;br /&gt; CheckBox myOption1, myOption2;&lt;br /&gt; &lt;br /&gt; /** Called when the activity is first created. */&lt;br /&gt; @Override&lt;br /&gt; public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;     super.onCreate(savedInstanceState);&lt;br /&gt;     setContentView(R.layout.main);&lt;br /&gt;  &lt;br /&gt;     myOption1 = (CheckBox)findViewById(R.id.option1);&lt;br /&gt;     myOption2 = (CheckBox)findViewById(R.id.option2);&lt;br /&gt;     Button myOK = (Button)findViewById(R.id.OK);&lt;br /&gt;     myOK.setOnClickListener(new Button.OnClickListener(){&lt;br /&gt;&lt;br /&gt;   @Override&lt;br /&gt;   public void onClick(View v) {&lt;br /&gt;    // TODO Auto-generated method stub&lt;br /&gt;    Toast.makeText(AndroidCheckBox.this,&lt;br /&gt;      (CharSequence)(&lt;br /&gt;      "Option1 = " + myOption1.isChecked() +&lt;br /&gt;      " " +&lt;br /&gt;      "Option2 = " + myOption2.isChecked()),&lt;br /&gt;      Toast.LENGTH_LONG).show();&lt;br /&gt;   }&lt;br /&gt;      &lt;br /&gt;     });&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ziddu.com/download/7026900/AndroidCheckBox_files_091022a.zip.html"&gt;&lt;img style="width: 18px; height: 21px;" src="http://2.bp.blogspot.com/_J90P-hyr9o8/SmR6wLejZpI/AAAAAAAAAbg/iSloE1vTVnE/s200/icons_download.gif" alt="" id="BLOGGER_PHOTO_ID_5360544424610981522" border="0" /&gt;Download the files&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/89878749563391212-5534284934595499511?l=android-er.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dVVvOty4SyPBykV4Zaal0FBchA4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dVVvOty4SyPBykV4Zaal0FBchA4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dVVvOty4SyPBykV4Zaal0FBchA4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dVVvOty4SyPBykV4Zaal0FBchA4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=9xFH0xVwz68:lFknX3KGYco:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=9xFH0xVwz68:lFknX3KGYco:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://android-er.blogspot.com/feeds/5534284934595499511/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=89878749563391212&amp;postID=5534284934595499511" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/5534284934595499511?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/5534284934595499511?v=2" /><link rel="alternate" type="text/html" href="http://android-er.blogspot.com/2009/10/checkbox.html" title="CheckBox" /><author><name>Android Er</name><uri>http://www.blogger.com/profile/04983894331825656853</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14075371138179417242" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_C5a2qH8Y_jk/SuB9cojF_-I/AAAAAAAAAKI/djntxXjUEvw/s72-c/AndroidCheckBox_01.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;C0YFRXk5fCp7ImA9WxNVEE4.&quot;"><id>tag:blogger.com,1999:blog-89878749563391212.post-3615273397371029381</id><published>2009-10-20T02:26:00.001-07:00</published><updated>2009-10-20T02:31:54.724-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-20T02:31:54.724-07:00</app:edited><title>ListActivity with @android:id/list and empty</title><content type="html">Normally, ListActivity has a default layout that consists of a single, full-screen list in the center of the screen. However, if you desire, you can customize the screen layout by setting your own view layout with setContentView() in onCreate(). To do this, your own view MUST contain a ListView object with the id "@android:id/list".&lt;br /&gt;&lt;br /&gt;In some case if the list is empty, the screen will become nothing. If you want to prompt the user if the list is empty, @android:id/list and @android:id/empty can be used.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_C5a2qH8Y_jk/St2CZwY--9I/AAAAAAAAAJ4/6pbGMYf3CMg/s1600-h/AndroidEmptyListActivity_01.png"&gt;&lt;img style="cursor: pointer; width: 223px; height: 320px;" src="http://1.bp.blogspot.com/_C5a2qH8Y_jk/St2CZwY--9I/AAAAAAAAAJ4/6pbGMYf3CMg/s320/AndroidEmptyListActivity_01.png" alt="" id="BLOGGER_PHOTO_ID_5394611307657755602" border="0" /&gt;&lt;/a&gt;   &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_C5a2qH8Y_jk/St2C9QsooxI/AAAAAAAAAKA/orxY6i4GRss/s1600-h/AndroidEmptyListActivity_02.png"&gt;&lt;img style="cursor: pointer; width: 225px; height: 320px;" src="http://1.bp.blogspot.com/_C5a2qH8Y_jk/St2C9QsooxI/AAAAAAAAAKA/orxY6i4GRss/s320/AndroidEmptyListActivity_02.png" alt="" id="BLOGGER_PHOTO_ID_5394611917625533202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Create a new AndroidEmptyListActivity extends ListActivity.&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;package com.exercise.AndroidEmptyListActivity;&lt;br /&gt;&lt;br /&gt;import android.app.ListActivity;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import android.widget.ArrayAdapter;&lt;br /&gt;import android.widget.ListView;&lt;br /&gt;&lt;br /&gt;public class AndroidEmptyListActivity extends ListActivity {&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;protected void onCreate(Bundle savedInstanceState) {&lt;br /&gt; // TODO Auto-generated method stub&lt;br /&gt; super.onCreate(savedInstanceState);&lt;br /&gt;&lt;br /&gt; setContentView(R.layout.main);&lt;br /&gt; SetupListView();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;  private void SetupListView()&lt;br /&gt;  {&lt;br /&gt;&lt;br /&gt;   String[] listItems = new String[] {&lt;br /&gt;     "Hello!",&lt;br /&gt;     "It's a Demo to use ListActivity,",&lt;br /&gt;     "with list/empty...",&lt;br /&gt;     "Is it Great?",&lt;br /&gt;     "android-er.blogspot.com"&lt;br /&gt;   };&lt;br /&gt; &lt;br /&gt;   /*&lt;br /&gt;   String[] listItems = new String[] {&lt;br /&gt;   };&lt;br /&gt;   */&lt;br /&gt;&lt;br /&gt;   ArrayAdapter&amp;lt;String&amp;gt; listItemAdapter&lt;br /&gt;     = new ArrayAdapter&amp;lt;String&amp;gt;(&lt;br /&gt;       this,&lt;br /&gt;       android.R.layout.simple_list_item_1,&lt;br /&gt;       listItems);&lt;br /&gt;   &lt;br /&gt;   ListView lv = (ListView)this.findViewById(android.R.id.list);&lt;br /&gt;   lv.setAdapter(listItemAdapter);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Modify the main.xml to have a ListView with android:id="@android:id/list", and a TextView android:id="@android:id/empty".&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"&lt;br /&gt;  android:orientation="vertical"&lt;br /&gt;  android:layout_width="fill_parent"&lt;br /&gt;  android:layout_height="fill_parent"&lt;br /&gt;  &amp;gt;&lt;br /&gt;&amp;lt;ListView android:id="@android:id/list"&lt;br /&gt;      android:layout_width="wrap_content"&lt;br /&gt;      android:layout_height="wrap_content"/&amp;gt;&lt;br /&gt;&amp;lt;TextView android:id="@android:id/empty"&lt;br /&gt;      android:layout_width="wrap_content"&lt;br /&gt;      android:layout_height="wrap_content"&lt;br /&gt;      android:text="List is Empty"/&amp;gt;&lt;br /&gt;&amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;If the List is not empty, the ListView will be shown, otherwise TextView will be shown.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ziddu.com/download/6992017/AndroidEmptyListActivity_files_091020a.zip.html"&gt;&lt;img style="width: 18px; height: 21px;" src="http://2.bp.blogspot.com/_J90P-hyr9o8/SmR6wLejZpI/AAAAAAAAAbg/iSloE1vTVnE/s200/icons_download.gif" alt="" id="BLOGGER_PHOTO_ID_5360544424610981522" border="0" /&gt;Download the files&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/89878749563391212-3615273397371029381?l=android-er.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NptNdaj7xqBNtY8imwxiUHmKh0s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NptNdaj7xqBNtY8imwxiUHmKh0s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/NptNdaj7xqBNtY8imwxiUHmKh0s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NptNdaj7xqBNtY8imwxiUHmKh0s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=hidp_GQL1SE:XHiy-1mSbms:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=hidp_GQL1SE:XHiy-1mSbms:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://android-er.blogspot.com/feeds/3615273397371029381/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=89878749563391212&amp;postID=3615273397371029381" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/3615273397371029381?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/3615273397371029381?v=2" /><link rel="alternate" type="text/html" href="http://android-er.blogspot.com/2009/10/listactivity-with-androididlist-and.html" title="ListActivity with @android:id/list and empty" /><author><name>Android Er</name><uri>http://www.blogger.com/profile/04983894331825656853</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14075371138179417242" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_C5a2qH8Y_jk/St2CZwY--9I/AAAAAAAAAJ4/6pbGMYf3CMg/s72-c/AndroidEmptyListActivity_01.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;Dk8ASXY5eSp7ImA9WxNWGUU.&quot;"><id>tag:blogger.com,1999:blog-89878749563391212.post-1496429789802324381</id><published>2009-10-19T13:37:00.000-07:00</published><updated>2009-10-19T13:40:48.821-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-19T13:40:48.821-07:00</app:edited><title>ListView with more items on each entry, using SimpleAdapter</title><content type="html">In the previous articles of ListView, ArrayAdapter are used. Only one item can be display on each entry.&lt;br /&gt;&lt;br /&gt;In this article, SimpleAdapter is used. Such that we have more than one items on each entry.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_C5a2qH8Y_jk/StzOVKpcamI/AAAAAAAAAJg/vYlJpWfENKI/s1600-h/AndroidAscii_01.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 327px;" src="http://3.bp.blogspot.com/_C5a2qH8Y_jk/StzOVKpcamI/AAAAAAAAAJg/vYlJpWfENKI/s400/AndroidAscii_01.png" alt="" id="BLOGGER_PHOTO_ID_5394413316713769570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's a ListActivity list the ASCII symbols from 32 to 126, in which there are two items, the code and the symbol, will be display on each entry.&lt;br /&gt;&lt;br /&gt;The ASCII symbols are converted using EncodingUtils.getAsciiString().&lt;br /&gt;&lt;br /&gt;We have a List to hold the code:symbol pair for each entry, and use SimpleAdapter to adapte to the ListView.&lt;br /&gt;&lt;br /&gt;All we need is two files only&lt;br /&gt;/res/row.xml, which is the layout of each entry on the ListView&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;LinearLayout&lt;br /&gt;  xmlns:android="http://schemas.android.com/apk/res/android"&lt;br /&gt;  android:layout_width="fill_parent"&lt;br /&gt;  android:layout_height="wrap_content"&lt;br /&gt;  android:orientation="horizontal"&amp;gt;  &lt;br /&gt;&lt;br /&gt;  &amp;lt;TextView&lt;br /&gt;      android:layout_width="wrap_content"&lt;br /&gt;      android:layout_height="wrap_content"&lt;br /&gt;      android:text = " " /&amp;gt;&lt;br /&gt;  &amp;lt;TextView android:id="@+id/code"&lt;br /&gt;      android:layout_width="wrap_content"&lt;br /&gt;      android:layout_height="wrap_content"/&amp;gt;&lt;br /&gt;  &amp;lt;TextView&lt;br /&gt;      android:layout_width="wrap_content"&lt;br /&gt;      android:layout_height="wrap_content"&lt;br /&gt;      android:text = " : " /&amp;gt;&lt;br /&gt;  &amp;lt;TextView android:id="@+id/symbol"&lt;br /&gt;          android:layout_width="fill_parent"&lt;br /&gt;          android:layout_height="wrap_content"/&amp;gt;&lt;br /&gt;&amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;AndroidAscii.java&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;package com.exercise.AndroidAscii;&lt;br /&gt;&lt;br /&gt;import java.util.ArrayList;&lt;br /&gt;import java.util.HashMap;&lt;br /&gt;import java.util.List;&lt;br /&gt;import java.util.Map;&lt;br /&gt;&lt;br /&gt;import org.apache.http.util.EncodingUtils;&lt;br /&gt;&lt;br /&gt;import android.app.ListActivity;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import android.view.View;&lt;br /&gt;import android.widget.ListView;&lt;br /&gt;import android.widget.SimpleAdapter;&lt;br /&gt;import android.widget.Toast;&lt;br /&gt;&lt;br /&gt;public class AndroidAscii extends ListActivity&lt;br /&gt;{&lt;br /&gt;  public void onCreate(Bundle savedInstanceState)&lt;br /&gt;  {&lt;br /&gt;      super.onCreate(savedInstanceState);&lt;br /&gt;&lt;br /&gt;      List&amp;lt;Map&amp;lt;String, CharSequence&amp;gt;&amp;gt; asciiPair =&lt;br /&gt;          new ArrayList&amp;lt;Map&amp;lt;String, CharSequence&amp;gt;&amp;gt;();&lt;br /&gt;&lt;br /&gt;      Map&amp;lt;String, CharSequence&amp;gt; asciidata;&lt;br /&gt;&lt;br /&gt;      for ( int i = 32; i &amp;lt;= 126; i++ )&lt;br /&gt;      {&lt;br /&gt;          asciidata = new HashMap&amp;lt;String, CharSequence&amp;gt;();&lt;br /&gt;        &lt;br /&gt;          String strCode = String.valueOf(i);&lt;br /&gt;        &lt;br /&gt;          byte[] data = {(byte) i};&lt;br /&gt;          CharSequence strSymbol = EncodingUtils.getAsciiString(data);&lt;br /&gt;&lt;br /&gt;          asciidata.put("Code", strCode );&lt;br /&gt;          asciidata.put("Symbol", strSymbol );&lt;br /&gt;          asciiPair.add(asciidata);&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      SimpleAdapter AsciiAdapter = new SimpleAdapter(&lt;br /&gt;          this,&lt;br /&gt;          asciiPair,&lt;br /&gt;          R.layout.row,&lt;br /&gt;          new String[] { "Code", "Symbol" },&lt;br /&gt;          new int[] { R.id.code, R.id.symbol } );&lt;br /&gt;&lt;br /&gt;      setListAdapter(AsciiAdapter);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; protected void onListItemClick(ListView l, View v, int position, long id) {&lt;br /&gt;  // TODO Auto-generated method stub&lt;br /&gt;  super.onListItemClick(l, v, position, id);&lt;br /&gt;  &lt;br /&gt;  String myAscii = l.getItemAtPosition(position).toString();&lt;br /&gt;  Toast.makeText(this, myAscii, Toast.LENGTH_LONG).show();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ziddu.com/download/6984744/AndroidAscii_files_091020a.zip.html"&gt;&lt;img style="width: 18px; height: 21px;" src="http://2.bp.blogspot.com/_J90P-hyr9o8/SmR6wLejZpI/AAAAAAAAAbg/iSloE1vTVnE/s200/icons_download.gif" alt="" id="BLOGGER_PHOTO_ID_5360544424610981522" border="0" /&gt;Download the files&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/89878749563391212-1496429789802324381?l=android-er.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Zh5yMurYGLsvjNd0470ochx6CTw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Zh5yMurYGLsvjNd0470ochx6CTw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Zh5yMurYGLsvjNd0470ochx6CTw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Zh5yMurYGLsvjNd0470ochx6CTw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=bd7AsjR5xQ8:3f7n1NOmkfU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=bd7AsjR5xQ8:3f7n1NOmkfU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://android-er.blogspot.com/feeds/1496429789802324381/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=89878749563391212&amp;postID=1496429789802324381" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/1496429789802324381?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/1496429789802324381?v=2" /><link rel="alternate" type="text/html" href="http://android-er.blogspot.com/2009/10/listview-with-more-items-on-each-entry.html" title="ListView with more items on each entry, using SimpleAdapter" /><author><name>Android Er</name><uri>http://www.blogger.com/profile/04983894331825656853</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14075371138179417242" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_C5a2qH8Y_jk/StzOVKpcamI/AAAAAAAAAJg/vYlJpWfENKI/s72-c/AndroidAscii_01.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DUQGQ3oyeip7ImA9WxNWF00.&quot;"><id>tag:blogger.com,1999:blog-89878749563391212.post-8806395922365881662</id><published>2009-10-16T08:12:00.000-07:00</published><updated>2009-10-16T08:35:22.492-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-16T08:35:22.492-07:00</app:edited><title>ListView and ListActivity, with Layout Animation</title><content type="html">In the article &lt;a href="http://android-er.blogspot.com/2009/10/layout-animation.html"&gt;Layout Animation&lt;/a&gt;, list_layout_controller is included in layout, main.xml. In the last article &lt;a href="http://android-er.blogspot.com/2009/10/listview-and-listactivity.html"&gt;ListView and ListActivity&lt;/a&gt;, ListView is implemented as ListActivity, without XML file for layout. How can apply the LayoutAnimationController.&lt;br /&gt;&lt;br /&gt;In this article, the same visual effect of Layout Animation will be applied on ListView and ListActivity.&lt;br /&gt;&lt;br /&gt;&lt;object width="500" height="405"&gt;&lt;param name="movie" value="http://www.youtube.com/v/o_8thGirQT4&amp;hl=en&amp;fs=1&amp;border=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/o_8thGirQT4&amp;hl=en&amp;fs=1&amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="405"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;- Follow the last exercise, &lt;a href="http://android-er.blogspot.com/2009/10/listview-and-listactivity.html"&gt;ListView and ListActivity&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;- Same as &lt;a href="http://android-er.blogspot.com/2009/10/layout-animation.html"&gt;Layout Animation&lt;/a&gt;, create the folder /res/anim and add the files list_layout_controller.xml and scale.xml.&lt;br /&gt;&lt;br /&gt;list_layout_controller.xml&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"&lt;br /&gt; android:delay="50%"&lt;br /&gt; android:animation="@anim/scale" /&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;scale.xml&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;set xmlns:android="http://schemas.android.com/apk/res/android"&lt;br /&gt;android:interpolator="@android:anim/accelerate_interpolator"&amp;gt;&lt;br /&gt;&amp;lt;scale&lt;br /&gt; android:fromXScale="0.1"&lt;br /&gt; android:toXScale="1"&lt;br /&gt; android:fromYScale="0.1"&lt;br /&gt; android:toYScale="1.0"&lt;br /&gt; android:duration="2000"&lt;br /&gt; android:pivotX="10%"&lt;br /&gt; android:pivotY="10%"&lt;br /&gt; android:startOffset="100" /&amp;gt;&lt;br /&gt;&amp;lt;/set&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;- Modify AndroidListActivity.java to add two lines of code in onCreate()&lt;br /&gt;&lt;pre style="border: 1px solid black;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; @Override&lt;br /&gt; protected void onCreate(Bundle savedInstanceState) {&lt;br /&gt;  // TODO Auto-generated method stub&lt;br /&gt;  super.onCreate(savedInstanceState);&lt;br /&gt;  &lt;br /&gt;  setListAdapter(new ArrayAdapter&amp;lt;String&amp;gt;(this,&lt;br /&gt;            android.R.layout.simple_list_item_1, COUNTRIES));&lt;br /&gt;  getListView().setTextFilterEnabled(true);&lt;br /&gt;  &lt;br /&gt;  &lt;span style="font-weight: bold;"&gt;LayoutAnimationController controller &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;   = AnimationUtils.loadLayoutAnimation(&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;     this, R.anim.list_layout_controller);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;  getListView().setLayoutAnimation(controller);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;That's!&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/89878749563391212-8806395922365881662?l=android-er.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/bSE3dNxXf1DnRw8rxfEH9PVTtWM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bSE3dNxXf1DnRw8rxfEH9PVTtWM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/bSE3dNxXf1DnRw8rxfEH9PVTtWM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bSE3dNxXf1DnRw8rxfEH9PVTtWM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=LRYHqOjdyEE:UHYFqVx3YKY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Android-er?a=LRYHqOjdyEE:UHYFqVx3YKY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Android-er?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://android-er.blogspot.com/feeds/8806395922365881662/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=89878749563391212&amp;postID=8806395922365881662" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/8806395922365881662?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/89878749563391212/posts/default/8806395922365881662?v=2" /><link rel="alternate" type="text/html" href="http://android-er.blogspot.com/2009/10/listview-and-listactivity-layout.html" title="ListView and ListActivity, with Layout Animation" /><author><name>Android Er</name><uri>http://www.blogger.com/profile/04983894331825656853</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14075371138179417242" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry></feed>
