<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6281777251296059140</id><updated>2012-02-25T23:01:55.016+05:30</updated><category term='mobile'/><category term='Mr.Android 2011..'/><category term='users'/><category term='magazine'/><category term='erase call history of android phone.URI for CallLog in 2.2 and above'/><category term='Tips for Enjoying the Software Development Profession'/><category term='Best'/><category term='Revenue'/><category term='sprint ECHO'/><category term='softwaredevelopement'/><category term='male'/><category term='andorid'/><category term='Marquee TextView android'/><category term='Habits of Highly Effective Programmers'/><category term='Paypal Mobile Libraries'/><category term='male android users'/><category term='Paypal Android'/><category term='delete all contacts'/><category term='Ad Revenue'/><category term='Removes the specified Call row'/><category term='getContentResolver().delete'/><category term='work lifebalance'/><category term='BugSense'/><category term='applications'/><category term='iphone'/><category term='Audio'/><category term='2012 Best Places to Work – Employees’ Choice Awards'/><category term='tips'/><category term='specified Call row from the CallLog in ANDROID'/><category term='crash Reporting'/><category term='Monetize'/><category term='writing programs...'/><category term='android payments'/><category term='Money'/><category term='dual screen'/><category term='Passion for Software Development'/><category term='Video'/><category term='in app billing'/><category term='load applications'/><category term='Ios'/><category term='MANAGER SUMMARY'/><category term='Coding'/><category term='Android - How to set the wallpaper image'/><category term='xml'/><category term='packages'/><category term='crash'/><category term='delete  all call history by a particular number'/><category term='bluestacks'/><category term='MediaPlayer'/><category term='java'/><category term='SOAP request ANdroid'/><category term='Habits of Effective Programmers'/><category term='Create an auto-Scrolling Marquee TextView in android'/><category term='Software Development'/><category term='ACRA (Application Crash Report for Android)'/><category term='Glassdoor'/><category term='Habits'/><category term='Online Meetings'/><category term='Best Places to Work'/><category term='Smart MobilePhones'/><category term='wallpaper.'/><category term='ContactsContract.Contacts.CONTENT_URI'/><category term='SOAP Webservices'/><category term='auto-Scrolling Marquee TextView in android'/><category term='Best Habits of Highly Effective Programmers'/><category term='mobile Payments'/><category term='type of crash'/><category term='software manaagement'/><category term='set wallpaper from your program'/><category term='mikogo'/><category term='evloution'/><category term='android'/><category term='delete phonebook contacts'/><category term='delete all call history'/><category term='delete all contacts from android'/><category term='Marquee TextView'/><category term='software'/><category term='Productive'/><category term='Happy Software Developers'/><category term='delete  all contacts from phone book permenently'/><category term='auto-Scrolling Marquee TextView'/><category term='iPad'/><category term='android online meeting'/><category term='facts about smartphones....'/><category term='Android apps'/><category term='dual screen android mobile'/><category term='Removes the specified Call row from the CallLog in ANDROID'/><title type='text'>Just Share</title><subtitle type='html'>Share the information to developers</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>63</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-3667019480503077905</id><published>2012-02-25T22:21:00.000+05:30</published><updated>2012-02-25T22:21:08.509+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Audio'/><category scheme='http://www.blogger.com/atom/ns#' term='ACRA (Application Crash Report for Android)'/><category scheme='http://www.blogger.com/atom/ns#' term='Video'/><category scheme='http://www.blogger.com/atom/ns#' term='MediaPlayer'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>MediaPlayer: Playing Video and Audio files</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;With every activity, after onPause and onStop, if the activity is not  destroyed, it will continue to run in the background, until it is killed  so the system can free up the memory it is using. So until the activity  is destroyed, the mediaplayer will continue to occupy space in the  phones memory.&lt;br /&gt;&lt;br /&gt;When done with the MediaPlayer, you should call &lt;em&gt;&lt;strong&gt;release()&lt;/strong&gt;&lt;/em&gt;, to free the resources.&lt;em&gt; If not released, too many MediaPlayer instances will result in an exception."&lt;/em&gt;&amp;nbsp; &lt;br /&gt;&lt;div style="margin: 1em 0px;"&gt;&amp;nbsp;Depending on your needs, you can put the &lt;em&gt;&lt;strong&gt;mp.stop()&lt;/strong&gt;&lt;/em&gt;  in the onPause part, so if the activity goes to the background for  whatever reason, it will only pause the playback, and it can continue it  in &lt;span style="text-decoration: underline;"&gt;&lt;em&gt;onResume()&lt;/em&gt;&lt;/span&gt;. Just put &lt;em&gt;&lt;strong&gt;mp.play()&lt;/strong&gt;&lt;/em&gt; in &lt;em&gt;&lt;strong&gt;onResume()&lt;/strong&gt;&lt;/em&gt;.&lt;/div&gt;If you don't release the media player in the onDestroy part, it will  continue to be in the memory, after the activity is stopped. The OS will  handle this issue for you if it runs out of memory, but it's nicer, if  You do it, so the OS will run out of memory later (much later in case of  huge files).&lt;br /&gt;&lt;pre style="background: none; font-size: 12px; margin: 0; padding: 0px 4px; vertical-align: top;"&gt;&lt;span style="vertical-align: top;"&gt;&lt;span style="color: black; font-weight: bold;"&gt;private&lt;/span&gt; MediaPlayer mp&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="vertical-align: top;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="vertical-align: top;"&gt;&lt;span style="color: black; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #006600; font-weight: bold;"&gt;void&lt;/span&gt; onCreate&lt;span style="color: #009900;"&gt;(&lt;/span&gt;Bundle savedInstanceState&lt;span style="color: #009900;"&gt;)&lt;/span&gt; &lt;span style="color: #009900;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="vertical-align: top;"&gt;    &lt;span style="color: black; font-weight: bold;"&gt;super&lt;/span&gt;.&lt;span style="color: #006633;"&gt;onCreate&lt;/span&gt;&lt;span style="color: #009900;"&gt;(&lt;/span&gt;savedInstanceState&lt;span style="color: #009900;"&gt;)&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="vertical-align: top;"&gt;    mp=&lt;span style="color: black; font-weight: bold;"&gt;new&lt;/span&gt; MediaPlayer&lt;span style="color: #009900;"&gt;(&lt;/span&gt;&lt;span style="color: #009900;"&gt;)&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="vertical-align: top;"&gt;    startAudioPlayer&lt;span style="color: #009900;"&gt;(&lt;/span&gt;context,uri&lt;span style="color: #009900;"&gt;)&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style="margin: 1em 0px;"&gt;//you could set up an &lt;strong&gt;onCompletionListener&lt;/strong&gt;, so when the media playback is done, it will release the media player.&lt;/div&gt;&lt;pre style="background: none; font-size: 12px; margin: 0; padding: 0px 4px; vertical-align: top;"&gt;&lt;span style="vertical-align: top;"&gt;mp.&lt;span style="color: #006633;"&gt;setOnCompletionListener&lt;/span&gt;&lt;span style="color: #009900;"&gt;(&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;new&lt;/span&gt; OnCompletionListener&lt;span style="color: #009900;"&gt;(&lt;/span&gt;&lt;span style="color: #009900;"&gt;)&lt;/span&gt;&lt;span style="color: #009900;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="vertical-align: top;"&gt;    @&lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.html"&gt;&lt;span style="color: #003399; font-weight: bold;"&gt;Override&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="vertical-align: top;"&gt;    &lt;span style="color: black; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #006600; font-weight: bold;"&gt;void&lt;/span&gt; onCompletion&lt;span style="color: #009900;"&gt;(&lt;/span&gt;MediaPlayer mp&lt;span style="color: #009900;"&gt;)&lt;/span&gt; &lt;span style="color: #009900;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="vertical-align: top;"&gt;        mp.&lt;span style="color: #006633;"&gt;release&lt;/span&gt;&lt;span style="color: #009900;"&gt;(&lt;/span&gt;&lt;span style="color: #009900;"&gt;)&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="vertical-align: top;"&gt;    &lt;span style="color: #009900;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="vertical-align: top;"&gt; &lt;span style="color: #009900;"&gt;}&lt;/span&gt;&lt;span style="color: #009900;"&gt;)&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style="margin: 1em 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre style="background: none; font-size: 12px; margin: 0; padding: 0px 4px; vertical-align: top;"&gt;&lt;/pre&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font-size: 12px; margin: 0pt; padding: 0px 4px; vertical-align: top;"&gt;&lt;span style="vertical-align: top;"&gt;&lt;span style="color: #009900;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="vertical-align: top;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="vertical-align: top;"&gt;&lt;span style="color: black; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #006600; font-weight: bold;"&gt;void&lt;/span&gt; startAudioPlayer&lt;span style="color: #009900;"&gt;(&lt;/span&gt;&lt;a href="http://www.google.com/search?sitesearch=java.sun.com&amp;amp;q=allinurl%3Aj2se%2F1+5+0%2Fdocs%2Fapi+Context"&gt;&lt;span style="color: #003399; font-weight: bold;"&gt;Context&lt;/span&gt;&lt;/a&gt; context,Uri uri&lt;span style="color: #009900;"&gt;)&lt;/span&gt;&lt;span style="color: #009900;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="vertical-align: top;"&gt;    mp= MediaPlayer.&lt;span style="color: #006633;"&gt;create&lt;/span&gt;&lt;span style="color: #009900;"&gt;(&lt;/span&gt;context, uri&lt;span style="color: #009900;"&gt;)&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="vertical-align: top;"&gt;    mp.&lt;span style="color: #006633;"&gt;start&lt;/span&gt;&lt;span style="color: #009900;"&gt;(&lt;/span&gt;&lt;span style="color: #009900;"&gt;)&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="vertical-align: top;"&gt;&lt;span style="color: #009900;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font-size: 12px; margin: 0pt; padding: 0px 4px; vertical-align: top;"&gt;&lt;span style="vertical-align: top;"&gt;&lt;span style="color: #009900;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font-size: 12px; margin: 0pt; padding: 0px 4px; vertical-align: top;"&gt;&lt;span style="vertical-align: top;"&gt;@&lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.html"&gt;&lt;span style="color: #003399; font-weight: bold;"&gt;Override&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="vertical-align: top;"&gt;&lt;span style="color: black; font-weight: bold;"&gt;protected&lt;/span&gt; &lt;span style="color: #006600; font-weight: bold;"&gt;void&lt;/span&gt; onPause&lt;span style="color: #009900;"&gt;(&lt;/span&gt;&lt;span style="color: #009900;"&gt;)&lt;/span&gt; &lt;span style="color: #009900;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="vertical-align: top;"&gt;    &lt;span style="color: black; font-weight: bold;"&gt;super&lt;/span&gt;.&lt;span style="color: #006633;"&gt;onPause&lt;/span&gt;&lt;span style="color: #009900;"&gt;(&lt;/span&gt;&lt;span style="color: #009900;"&gt;)&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="vertical-align: top;"&gt;    &lt;span style="color: black; font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: #009900;"&gt;(&lt;/span&gt;mp.&lt;span style="color: #006633;"&gt;isPlaying&lt;/span&gt;&lt;span style="color: #009900;"&gt;(&lt;/span&gt;&lt;span style="color: #009900;"&gt;)&lt;/span&gt;&lt;span style="color: #009900;"&gt;)&lt;/span&gt;&lt;span style="color: #009900;"&gt;{&lt;/span&gt; &lt;span style="color: #666666; font-style: italic;"&gt;//you need to check if it is playing first, or you might get a null pointer exception!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="vertical-align: top;"&gt;        mp.&lt;span style="color: #006633;"&gt;stop&lt;/span&gt;&lt;span style="color: #009900;"&gt;(&lt;/span&gt;&lt;span style="color: #009900;"&gt;)&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="vertical-align: top;"&gt;    &lt;span style="color: #009900;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="vertical-align: top;"&gt;&lt;span style="color: #009900;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font-size: 12px; margin: 0pt; padding: 0px 4px; vertical-align: top;"&gt;&lt;span style="vertical-align: top;"&gt;@&lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.html"&gt;&lt;span style="color: #003399; font-weight: bold;"&gt;Override&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="vertical-align: top;"&gt; &lt;span style="color: black; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #006600; font-weight: bold;"&gt;void&lt;/span&gt; onDestroy&lt;span style="color: #009900;"&gt;(&lt;/span&gt;&lt;span style="color: #009900;"&gt;)&lt;/span&gt;&lt;span style="color: #009900;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="vertical-align: top;"&gt; &lt;span style="color: black; font-weight: bold;"&gt;super&lt;/span&gt;.&lt;span style="color: #006633;"&gt;onDestroy&lt;/span&gt;&lt;span style="color: #009900;"&gt;(&lt;/span&gt;&lt;span style="color: #009900;"&gt;)&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="vertical-align: top;"&gt;    mp.&lt;span style="color: #006633;"&gt;release&lt;/span&gt;&lt;span style="color: #009900;"&gt;(&lt;/span&gt;&lt;span style="color: #009900;"&gt;)&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="vertical-align: top;"&gt; &lt;span style="color: #009900;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font-size: 12px; margin: 0pt; padding: 0px 4px; vertical-align: top;"&gt;&lt;span style="vertical-align: top;"&gt;&lt;span style="color: #009900;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="vertical-align: top;"&gt;&lt;span style="color: #009900;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="vertical-align: top;"&gt;&lt;span style="color: #009900;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font-size: 12px; margin: 0pt; padding: 0px 4px; vertical-align: top;"&gt;&lt;span style="vertical-align: top;"&gt;&lt;span style="color: #009900;"&gt;Another way to play an audio file.&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font-size: 12px; margin: 0pt; padding: 0px 4px; vertical-align: top;"&gt;&lt;span style="vertical-align: top;"&gt;&lt;span style="color: #009900;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font-size: 12px; margin: 0pt; padding: 0px 4px; vertical-align: top;"&gt;public void audioPlayer(String path, String fileName){&lt;br /&gt;&lt;br /&gt;    //set up MediaPlayer    &lt;br /&gt;&lt;br /&gt;    MediaPlayer mp = new MediaPlayer();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    try {&lt;br /&gt;&lt;br /&gt;        mp.setDataSource(path+"/"+fileName);&lt;br /&gt;&lt;br /&gt;    } catch (IllegalArgumentException e) {&lt;br /&gt;&lt;br /&gt;        // TODO Auto-generated catch block&lt;br /&gt;&lt;br /&gt;        e.printStackTrace();&lt;br /&gt;&lt;br /&gt;    } catch (IllegalStateException e) {&lt;br /&gt;&lt;br /&gt;        // TODO Auto-generated catch block&lt;br /&gt;&lt;br /&gt;        e.printStackTrace();&lt;br /&gt;&lt;br /&gt;    } catch (IOException e) {&lt;br /&gt;&lt;br /&gt;        // TODO Auto-generated catch block&lt;br /&gt;&lt;br /&gt;        e.printStackTrace();&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    try {&lt;br /&gt;&lt;br /&gt;        mp.prepare();&lt;br /&gt;&lt;br /&gt;    } catch (IllegalStateException e) {&lt;br /&gt;&lt;br /&gt;        // TODO Auto-generated catch block&lt;br /&gt;&lt;br /&gt;        e.printStackTrace();&lt;br /&gt;&lt;br /&gt;    } catch (IOException e) {&lt;br /&gt;&lt;br /&gt;        // TODO Auto-generated catch block&lt;br /&gt;&lt;br /&gt;        e.printStackTrace();&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    mp.start();&lt;br /&gt;&lt;br /&gt;}&lt;span style="vertical-align: top;"&gt;&lt;span style="color: #009900;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Incase of Video File, use this method to play the video file&lt;br /&gt;&lt;br /&gt;&lt;pre style="padding-left: 30px;"&gt;public void videoPlayer(String path, String fileName, boolean autoplay){&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;//get current window information, &lt;br /&gt;    //and set format, set it up differently, &lt;br /&gt;    //if you need some special effects&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;getWindow().setFormat(PixelFormat.TRANSLUCENT);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;//the VideoView will hold the video&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;VideoView videoHolder = new VideoView(this);&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;//MediaController is the ui control howering above the video (just like in the default youtube player).&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;videoHolder.setMediaController(new MediaController(this));&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;//assing a video file to the video holder&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;videoHolder.setVideoURI(Uri.parse(path+"/"+fileName));&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;//get focus, before playing the video.&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;videoHolder.requestFocus();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;if(autoplay){&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;videoHolder.start();&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;&amp;nbsp;   }&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-3667019480503077905?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/3667019480503077905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2012/02/mediaplayer-playing-video-and-audio.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/3667019480503077905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/3667019480503077905'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2012/02/mediaplayer-playing-video-and-audio.html' title='MediaPlayer: Playing Video and Audio files'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-2846442616065075828</id><published>2012-02-23T13:03:00.002+05:30</published><updated>2012-02-23T13:03:44.157+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='bluestacks'/><category scheme='http://www.blogger.com/atom/ns#' term='users'/><category scheme='http://www.blogger.com/atom/ns#' term='male android users'/><category scheme='http://www.blogger.com/atom/ns#' term='male'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><category scheme='http://www.blogger.com/atom/ns#' term='Mr.Android 2011..'/><title type='text'>Infographics on Male Android Users</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;a href="http://bluestacks.com/" target="_blank"&gt;BlueStacks &lt;/a&gt;has released an infographics with some interesting facts on male Android users.&lt;br /&gt;BlueStacks is the development company that created the popular “Android on Windows” app. A couple of days back, it released a new infographics of the average male Android user in 2011 based on the data pulled out from Nielsen as well as poll responses from its 145,000 Facebook fans. This infographics states that 33 percent of Android users never purchased an app for their phone.&lt;br /&gt;&lt;span id="more-4336"&gt;&lt;/span&gt;&lt;br /&gt;Other interesting facts revealed by Mr. Android 2011 infographics&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-mx8SNHbMx84/T0XreyfgyuI/AAAAAAAABso/mBwvO9VqaSM/s1600/mr-android-02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-mx8SNHbMx84/T0XreyfgyuI/AAAAAAAABso/mBwvO9VqaSM/s1600/mr-android-02.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;9% of users own a tablet and not a  smartphone.&lt;/li&gt;&lt;li&gt;62% use Android for play.&lt;/li&gt;&lt;li&gt;582 MB is the average monthly data  usage.&lt;/li&gt;&lt;li&gt;13% has more than 50 apps in their  phone.&lt;/li&gt;&lt;li&gt;32% of users are Americans.&lt;/li&gt;&lt;li&gt;62% of users wear jeans, while 71%  wear t-shirts.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-2846442616065075828?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/2846442616065075828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2012/02/infographics-on-male-android-users.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/2846442616065075828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/2846442616065075828'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2012/02/infographics-on-male-android-users.html' title='Infographics on Male Android Users'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-mx8SNHbMx84/T0XreyfgyuI/AAAAAAAABso/mBwvO9VqaSM/s72-c/mr-android-02.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-4768631707276340647</id><published>2012-02-21T20:29:00.003+05:30</published><updated>2012-02-21T20:32:05.214+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ACRA (Application Crash Report for Android)'/><category scheme='http://www.blogger.com/atom/ns#' term='Android apps'/><category scheme='http://www.blogger.com/atom/ns#' term='crash Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='BugSense'/><category scheme='http://www.blogger.com/atom/ns#' term='Ios'/><category scheme='http://www.blogger.com/atom/ns#' term='crash'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><category scheme='http://www.blogger.com/atom/ns#' term='type of crash'/><title type='text'>Crash Reporting Feature to any ANDROID application</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;AIM: To enable crash Reporting feature to android app&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Solution:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;A &lt;b&gt;crash reporter&lt;/b&gt; is an feature whose function is to report crash data to a third party, usually to the party responsible for the crashed program. Crash reports often include data such as &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Stack_traces" title="Stack traces"&gt;stack traces&lt;/a&gt;, type of crash, and version of software. This information helps software developers to diagnose and fix the underlying problem causing the crash. &lt;br /&gt;&lt;h2&gt;&lt;span class="mw-headline" id="Mobile"&gt;&lt;/span&gt;&lt;/h2&gt;The Android and iOS operating systems also have built in crash reporting functionality.&lt;br /&gt;&lt;sup class="reference" id="cite_ref-7"&gt; &lt;/sup&gt;There are third party tools that also provide it, like&lt;br /&gt;&lt;br /&gt;&lt;a class="external text" href="http://www.bugsense.com/" rel="nofollow"&gt;BugSense&lt;/a&gt; : &lt;br /&gt;&lt;span class="feature-title-description"&gt;BugSense is made for mobile developers. Get the context of the errors,      track errors in specific app version or filter errors by device.      There was Internet connectivity at the time of the crash?      BugSense collects all the information the mobile developer needs.&amp;nbsp;    &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://acra.googlecode.com/"&gt;ACRA (Application Crash Report for Android).&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ACRA is a library enabling Android Application to automatically post their crash reports to a GoogleDoc form. It is targetted to android applications developers to help them get data from their applications when they crash or behave erroneously. &amp;nbsp; &lt;br /&gt;&lt;br /&gt;However you can add this feature with the following code block.&lt;br /&gt;&lt;br /&gt;---------------------------------------------------------------------------------&lt;br /&gt;/**&lt;br /&gt;&amp;nbsp;* Crash Error Reporter&lt;br /&gt;&amp;nbsp;* &lt;br /&gt;&amp;nbsp;* Captures any Uncaught exception to capture the conditions that caused the event.&lt;br /&gt;&amp;nbsp;* The event will be written to the Log file and can be retrieved through LogCat.&lt;br /&gt;&amp;nbsp;* In addition, the report will attempt to send an e-mail to &amp;lt;string name="CrashErrorReport_MailTo"&amp;gt;xyz@GMail.com&amp;lt;/string&amp;gt;&lt;br /&gt;&amp;nbsp;* through the default mail application &lt;br /&gt;&amp;nbsp;* &amp;nbsp;* &lt;br /&gt;&amp;nbsp;*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class CrashErrorReporter implements Thread.UncaughtExceptionHandler {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static final String LOG_TAG = "CrashErrorReporter";&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private Thread.UncaughtExceptionHandler mDfltExceptionHandler;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static CrashErrorReporter S_mInstance;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static Context mCurContext;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Even though these should be private variables, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // they are public to avoid creating getters and setters&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String mPkg_VersionName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String mPkg_PackageName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String mCtx_FilePath;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String mPkg_OSBld_PhoneModel;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String mPkg_OSBld_AndroidVersion;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String mPkg_OSBld_Board;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String mPkg_OSBld_Brand;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String mPkg_OSBld_Device;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String mPkg_OSBld_Display;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String mPkg_OSBld_FingerPrint;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String mPkg_OSBld_Host; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String mPkg_OSBld_ID;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String mPkg_OSBld_Manufacturer;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String mPkg_OSBld_Model;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String mPkg_OSBld_Product;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String mPkg_OSBld_Tags;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; long&amp;nbsp;&amp;nbsp; mPkg_OSBld_Time;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String mPkg_OSBld_Type;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String mPkg_OSBld_User;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /** &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Manages the uncaught exception.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void uncaughtException(Thread t, Throwable e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log.d(LOG_TAG, "@Override uncaughtException");&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Date CurDate = new Date();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String Report = "Error Report collected on : " + CurDate.toString() + "\n\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Report += "Environment Details : \n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Report += "===================== \n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Report += CreateInformationString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Report += "Stack : \n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Report += "======= \n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; final Writer result = new StringWriter();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; final PrintWriter printWriter = new PrintWriter(result);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace(printWriter);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String stacktrace = result.toString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Report += stacktrace&amp;nbsp; + "\n";&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // If the exception was thrown in a background thread inside&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // AsyncTask, then the actual exception can be found with getCause&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Throwable cause = e.getCause();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; while (cause != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Report += "Cause : \n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Report += "======= \n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; cause.printStackTrace( printWriter );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Report += result.toString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; cause = cause.getCause();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; printWriter.close();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Report += "**** End of current Report ***";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SaveAsFile(Report);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // Try and send out the report now before calling the default handler&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CheckCrashErrorAndSendMail(mCurContext);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mDfltExceptionHandler.uncaughtException(t, e);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /** &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Capture the newly created instance for singleton class management&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static CrashErrorReporter getInstance() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if ( S_mInstance == null )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; S_mInstance = new CrashErrorReporter();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return S_mInstance;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Init( Context context ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mDfltExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Thread.setDefaultUncaughtExceptionHandler( this ); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mCurContext = context;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /** &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Obtains the available internal memory size &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @return long&amp;nbsp; - integer with memory size available&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public long getAvailableInternalMemorySize() { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; File&amp;nbsp;&amp;nbsp; path = Environment.getDataDirectory(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; StatFs stat = new StatFs(path.getPath()); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // place in stack variables for debugging purposes.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; long blockSize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = stat.getBlockSize(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; long availableBlocks = stat.getAvailableBlocks(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return( availableBlocks * blockSize ); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Obtains the Total internal memory size&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @return long - integer with total memory size&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public long getTotalInternalMemorySize() { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; File path = Environment.getDataDirectory(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; StatFs stat = new StatFs(path.getPath());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // place in stack variables for debugging purposes.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; long blockSize = stat.getBlockSize(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; long totalBlocks = stat.getBlockCount();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return( totalBlocks * blockSize ); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; void CollectPackageInformation( Context context ) &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log.d(LOG_TAG, "@CollectPackageInformation");&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; PackageManager pm = context.getPackageManager();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; PackageInfo&amp;nbsp;&amp;nbsp;&amp;nbsp; pi = pm.getPackageInfo(context.getPackageName(), 0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mPkg_VersionName&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = pi.versionName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mPkg_PackageName&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = pi.packageName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mCtx_FilePath&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = context.getFilesDir().getAbsolutePath();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mPkg_OSBld_PhoneModel&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = android.os.Build.MODEL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mPkg_OSBld_AndroidVersion &amp;nbsp;&amp;nbsp;&amp;nbsp; = android.os.Build.VERSION.RELEASE;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mPkg_OSBld_Board&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = android.os.Build.BOARD;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mPkg_OSBld_Brand &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = android.os.Build.BRAND;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mPkg_OSBld_Device &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = android.os.Build.DEVICE;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mPkg_OSBld_Display &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = android.os.Build.DISPLAY;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mPkg_OSBld_FingerPrint &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = android.os.Build.FINGERPRINT;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mPkg_OSBld_Host &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = android.os.Build.HOST;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mPkg_OSBld_ID &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = android.os.Build.ID;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mPkg_OSBld_Model &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = android.os.Build.MODEL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mPkg_OSBld_Product &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = android.os.Build.PRODUCT;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mPkg_OSBld_Tags &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = android.os.Build.TAGS;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mPkg_OSBld_Time &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = android.os.Build.TIME;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mPkg_OSBld_Type &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = android.os.Build.TYPE;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mPkg_OSBld_User &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = android.os.Build.USER;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch( Exception e ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log.e(LOG_TAG, "!Error CollectPackageInformation: " + e.getMessage());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // e.printStackTrace()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Assemble the package information in a string format&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @return String - Package information collected&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private String CreateInformationString() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CollectPackageInformation( mCurContext );&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String ReturnVal = "";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ReturnVal&amp;nbsp; = "&amp;nbsp; Version&amp;nbsp; : " + mPkg_VersionName + "\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ReturnVal += "&amp;nbsp; Package&amp;nbsp; : " + mPkg_PackageName + "\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ReturnVal += "&amp;nbsp; FilePath : " + mCtx_FilePath&amp;nbsp;&amp;nbsp;&amp;nbsp; + "\n\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ReturnVal += "&amp;nbsp; Package Data \n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ReturnVal += "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Phone Model : " + mPkg_OSBld_PhoneModel&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ReturnVal += "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Android Ver : " + mPkg_OSBld_AndroidVersion + "\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ReturnVal += "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Board&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : " + mPkg_OSBld_Board&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ReturnVal += "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Brand&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : " + mPkg_OSBld_Brand&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ReturnVal += "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Device&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : " + mPkg_OSBld_Device&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ReturnVal += "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Display &amp;nbsp;&amp;nbsp;&amp;nbsp; : " + mPkg_OSBld_Display&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ReturnVal += "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Finger Print: " + mPkg_OSBld_FingerPrint&amp;nbsp;&amp;nbsp;&amp;nbsp; + "\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ReturnVal += "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Host&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : " + mPkg_OSBld_Host&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ReturnVal += "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : " + mPkg_OSBld_ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ReturnVal += "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Model&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : " + mPkg_OSBld_Model&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ReturnVal += "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Product&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : " + mPkg_OSBld_Product&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ReturnVal += "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tags&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : " + mPkg_OSBld_Tags&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ReturnVal += "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : " + mPkg_OSBld_Time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ReturnVal += "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : " + mPkg_OSBld_Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ReturnVal += "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; User&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : " + mPkg_OSBld_User&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ReturnVal += "&amp;nbsp; Internal Memory\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ReturnVal += "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Total&amp;nbsp;&amp;nbsp;&amp;nbsp; : " + (getTotalInternalMemorySize()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /1024) + "k\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ReturnVal += "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Available: " + (getAvailableInternalMemorySize() /1024) + "k\n\n";&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return ReturnVal;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *Saves the Crash Report to a File with the name stack-timestamp.stacktrace in SD card&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void SaveAsFile( String ErrorContent ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; long timestamp = System.currentTimeMillis();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String ErrFileName = "stack-" + timestamp + ".stacktrace";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; FileOutputStream trace = mCurContext.openFileOutput( ErrFileName, Context.MODE_PRIVATE);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; trace.write(ErrorContent.getBytes());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; trace.flush();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; trace.close();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log.e(LOG_TAG, "!Error Report: " + ErrFileName + "\n" + ErrorContent);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch( Exception e ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log.e(LOG_TAG, "!Error SaveAsFile: " + e.getMessage());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Returns an array containing the names of available crash report files.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @return an array containing the names of available crash report files.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private String[] GetCrashErrorFileList() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; File dir = mCurContext.getFilesDir();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.d(LOG_TAG, "Looking for error files in " + dir.getAbsolutePath());&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Filter for "stack trace" files&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; FilenameFilter filter = new FilenameFilter() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean accept(File dir, String name) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return name.endsWith(".stacktrace");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return dir.list(filter);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Checks to see if there are any crash reports to send and sends them if they exist&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Once finished with the report, then the report file is deleted from the system&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param _context&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void CheckCrashErrorAndSendMail(Context _context ) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if( null == mCtx_FilePath ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mCtx_FilePath = _context.getFilesDir().getAbsolutePath();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String[] reportFilesList = GetCrashErrorFileList();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TreeSet&amp;lt;String&amp;gt; sortedFiles = new TreeSet&amp;lt;String&amp;gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sortedFiles.addAll(Arrays.asList(reportFilesList));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if((null != reportFilesList) &amp;amp;&amp;amp; (0 &amp;lt; reportFilesList.length)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String line;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String WholeErrorText = "";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int curIndex = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; final int MaxSendMail = 5;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for ( String curString : sortedFiles ) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if ( curIndex++ &amp;lt;= MaxSendMail ) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WholeErrorText+="New Trace collected :\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WholeErrorText+="=====================\n ";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String filePath = mCtx_FilePath + "/" + curString;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BufferedReader input = new BufferedReader(new FileReader(filePath));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; while (( line = input.readLine()) != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WholeErrorText += line + "\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; input.close();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // DELETE FILES !!!!&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; File curFile = new File( mCtx_FilePath + "/" + curString );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; curFile.delete();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SendCrashErrorMail( _context , WholeErrorText,_context.getString(R.string.CrashErrorReport_MailTo) );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch( Exception e ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log.e(LOG_TAG, "!Error CheckCrashErrorAndSendMail: " + e.getMessage());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // e.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Send out the crash error report via e-mail&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param _context&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param ErrorContent&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void SendCrashErrorMail( Context _context, String ErrorContent,String mailTo)&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.d(LOG_TAG, "SendCrashErrorMail: " + _context.getString(R.string.CrashErrorReport_MailTo)); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //Toast.makeText(_context, _context.getString(R.string.CrashErrorReport_ToastText), Toast.LENGTH_LONG).show();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Intent sendIntent = new Intent(Intent.ACTION_SEND);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; sendIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; sendIntent.putExtra(Intent.EXTRA_EMAIL,&amp;nbsp;&amp;nbsp;&amp;nbsp; new String[]{_context.getString(R.string.CrashErrorReport_MailTo)});&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; sendIntent.putExtra(Intent.EXTRA_SUBJECT, _context.getString(R.string.CrashErrorReport_MailSubject));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; sendIntent.putExtra(Intent.EXTRA_TEXT, ErrorContent + "\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; sendIntent.setType("message/rfc822");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _context.startActivity( sendIntent );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Send out the crash report via HTTP connection&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* NOTE: This is currently not used, but here for future implementation&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param _context&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param ErrorContent&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* The below code would need to be placed on an server to receive HTTP transmissions.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* upload_server.php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* &amp;lt;?php &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp; if ( $_POST['stacktrace'] == "" || $_POST['package_version'] == "" || $_POST['package_name'] == "" ) { &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; die("This script is used to collect field test crash stacktraces. No personal information is transmitted, collected or stored.&amp;lt;br/&amp;gt;For more information, please contact &amp;lt;a href='mailto:support@nullwire.com'&amp;gt;email@domain.com&amp;lt;/a&amp;gt;"); &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp; } &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp; $random = rand(1000,9999); &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp; $version = $_POST['package_version']; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp; $package = $_POST['package_name']; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp; $handle = fopen($package."-trace-".$version."-".time()."-".$random, "w+"); &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp; fwrite($handle, $_POST['stacktrace']); &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp; fclose($handle); &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp; ?&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @SuppressWarnings("unused")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void SendCrashErrorHTTP( Context _context, String ErrorContent ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.d(LOG_TAG, "SendCrashErrorHTTP: " + _context.getString(R.string.CrashErrorReport_URL)); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Toast.makeText(_context, _context.getString(R.string.CrashErrorReport_ToastText), Toast.LENGTH_LONG).show();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String sError = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Transmit stack trace with POST request&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DefaultHttpClient httpClient = new DefaultHttpClient();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; HttpPost httpPost = new HttpPost(_context.getString(R.string.CrashErrorReport_URL));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; List &amp;lt;NameValuePair&amp;gt; nvps = new ArrayList &amp;lt;NameValuePair&amp;gt;();&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; nvps.add(new BasicNameValuePair("package_name", mPkg_PackageName)); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; nvps.add(new BasicNameValuePair("package_version", mPkg_VersionName)); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; nvps.add(new BasicNameValuePair("phone_model", mPkg_OSBld_PhoneModel)); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; nvps.add(new BasicNameValuePair("android_version", mPkg_OSBld_AndroidVersion)); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; nvps.add(new BasicNameValuePair("stacktrace", ErrorContent));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;httpPost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// We don't care about the response, so we just hope it went well and on with it &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; httpClient.execute(httpPost);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (UnsupportedEncodingException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; sError = e.getMessage();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (ClientProtocolException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; sError = e.getMessage();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IOException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; sError = e.getMessage();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } finally {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; sError = "Unknown Error condition";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if( null != sError ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log.e(LOG_TAG, "!Error SendCrashErrorHTTP: " + sError);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;// End Class&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;------------------------------------------------------&lt;br /&gt;&lt;br /&gt;You can add this feature by intiating this code in any activity like Loading,SplashScreen.&lt;br /&gt;&lt;br /&gt;// Register the Crash Reporting feature&lt;br /&gt;------------------------------------------&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Initialize ErrorReporter with all required data &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CrashErrorReporter mCrashErrorReporter = CrashErrorReporter.getInstance(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Activate the ErrorReporter &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mCrashErrorReporter.Init(getApplicationContext()); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mCrashErrorReporter.CheckCrashErrorAndSendMail(getApplicationContext()); &lt;br /&gt;&lt;br /&gt;-------------------------------------------------&lt;br /&gt;&lt;br /&gt;This just works amazing...&lt;br /&gt;&lt;br /&gt;Let me know if any problems you have.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-4768631707276340647?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/4768631707276340647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2012/02/crash-reporting-feature-to-any-android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/4768631707276340647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/4768631707276340647'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2012/02/crash-reporting-feature-to-any-android.html' title='Crash Reporting Feature to any ANDROID application'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-1195144728639433785</id><published>2012-02-15T15:45:00.001+05:30</published><updated>2012-02-15T15:49:04.422+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Money'/><category scheme='http://www.blogger.com/atom/ns#' term='Revenue'/><category scheme='http://www.blogger.com/atom/ns#' term='Ad Revenue'/><category scheme='http://www.blogger.com/atom/ns#' term='iPad'/><category scheme='http://www.blogger.com/atom/ns#' term='Monetize'/><category scheme='http://www.blogger.com/atom/ns#' term='in app billing'/><category scheme='http://www.blogger.com/atom/ns#' term='magazine'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Possible ways to Generate Revenue from iOS,Android Mobile Applications</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Every developer wants to make money. When comparing between web apps and mobile, web apps today use 3 tactics to monetize: online ads, transactions within the website, and subscriptions. These same monetization strategies are available to mobile apps. Below are some in each area will appeal to different verticals and company sizes, and each will call for different expertise and tools.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Idea &lt;/b&gt;&lt;b&gt;#1: Ads&lt;br /&gt;Best for: Consumer apps with large audiences (ex. Pandora); highly targeted apps&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Some developers will be able to monetize with ads, but unless your app is a big consumer mobile app with a large audience or a highly targeted app within a vertical, it’s not your best bet. Size and targeting will matter here: if you have the sheer number of eyeballs, then you won’t need targeted ads. One way to compensate for size is by offering a targeted audience to your advertisers.&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;b&gt;Idea #2: In-app transactions&lt;br /&gt;Best for: Mobile commerce apps; gaming apps; lead gen apps; publishers with a large number of apps in their portfolio&lt;/b&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;using in-app purchases, iOS, Android developers are starting to scratch the surface of in-app transactions. Off the top of our heads, developers could cross sell to another portfolio app, up-sell to a pro version of the app, or generate online or offline leads. (In-app transactions encapsulate more than just in-app purchases. Consider lead generation; the transmission of information is a very powerful, and monetize-able, transaction.)&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Idea #3: Subscription models&lt;br /&gt;Best for: Content (e.g. magazine, newspaper) apps; professional &amp;amp; consumer services apps (e.g.&amp;nbsp; “Business Model Canvas iPad App”, Life 360); telecom apps (e.g. Skype,textplus)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Good examples currently come from telecom apps, but expect the subscription trend to pick up. Subscription models help developers increase the life value of their customers. The key success factors here will be lowering customer acquisition costs and reducing churn over time. And don’t forget strategy—monthly trials or free offers will be valuable approaches.&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&amp;nbsp;Tried any of these ways. please share with your opinions and experiences.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-1195144728639433785?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/1195144728639433785/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2012/02/possible-ways-to-generate-revenue-from.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/1195144728639433785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/1195144728639433785'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2012/02/possible-ways-to-generate-revenue-from.html' title='Possible ways to Generate Revenue from iOS,Android Mobile Applications'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-8602366780464396264</id><published>2012-01-24T23:50:00.000+05:30</published><updated>2012-01-24T23:50:21.722+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Smart MobilePhones'/><category scheme='http://www.blogger.com/atom/ns#' term='facts about smartphones....'/><category scheme='http://www.blogger.com/atom/ns#' term='evloution'/><category scheme='http://www.blogger.com/atom/ns#' term='andorid'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>Strange Facts about Smart MobilePhones</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;span id="intelliTxt"&gt;iPhones and Androids and various Blackberry devices are everywhere, and the revolution has just begun. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We never know these facts about smartphones. Just have a look at these....&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;1. The first camera phone was released in Japan in 2000: the Sharp J-SH04. &lt;br /&gt;&lt;br /&gt;2. Porn helped drive popularity, with a phone-cam-enabled up-skirt photo subculture emerging online. &lt;br /&gt;&lt;br /&gt;3. Japan and South Korea require phone cameras to make noise when pictures are taken in order to prevent unwanted photography.&lt;br /&gt;&lt;br /&gt;4. A recent study by ComScore found that of 234 million wireless subscribers in U.S., 45.5 of them own smart phones. &lt;br /&gt;&lt;br /&gt;5. Coda Research Consultancy forecasts that the number of smartphone owners in the U.S. will rise to 194 million by 2015. &lt;br /&gt;&lt;br /&gt;6. Smart phones made up 17 percent of cell phones sold worldwide in 2009; that's expected to jump to 38 percent by 2014.&lt;br /&gt;&lt;br /&gt;7. Ericsson was the first company to market a device as a "smartphone" in 2000 with the launch of the R380. &lt;br /&gt;&lt;br /&gt;8. The first working smartphone was introduced eight years earlier by IBM, which debuted the Simon at COMDEX. &lt;br /&gt;&lt;br /&gt;9. Simon had a calendar, address book, world clock, calculator, note pad, e-mail, fax and games, plus a touch-screen keyboard.&lt;br /&gt;&lt;br /&gt;10. The Nokia Communicator line in 1996 was one of the first mobile devices built on an open platform. &lt;br /&gt;&lt;br /&gt;11. The QUALCOMM pdQ, introduced in 1999 and built on the Palm OS, had full PDA capabilities and a CDMA phone. &lt;br /&gt;&lt;br /&gt;12. Salomon Smith Barney deployed 2,500 devices connected to BlackBerry Enterprise Server in 2000.&lt;br /&gt;&lt;br /&gt;13. In 2002, the deluge of devices began, including the first HTC smartphone and the Palm Treo. &lt;br /&gt;&lt;br /&gt;14. Also in 2002, Sony Ericsson unveiled the P800, with an MP3 player, camera and color touch screen. &lt;br /&gt;&lt;br /&gt;15. By 2003, BlackBerry said it had over 10,000 corporate customers on its enterprise smartphone bandwagon.&lt;br /&gt;&lt;br /&gt;16. The use of mobile Web grew 110 percent last year in the U.S., according to the Quantcast Mobile Trends report. &lt;br /&gt;&lt;br /&gt;17. Still, Quantcast estimates that mobile Web usage only makes up about 1.26 percent of all Web consumption in the U.S. &lt;br /&gt;&lt;br /&gt;18. Forrester says mobile accounts for up to 25 percent of e-mail for info workers who use a smart phone at least once a week for work.&lt;br /&gt;&lt;br /&gt;19. Microsoft's Steve Ballmer admitted that the computing giant missed a whole generation of smartphone evolution. &lt;br /&gt;&lt;br /&gt;20. Microsoft's highly-touted Kin phone was yanked from the market after just six weeks of availability. &lt;br /&gt;&lt;br /&gt;21. Enterprise-connected mobile device penetration will grow from 10-15 percent in 2010 to perhaps 80 percent five years from now.&lt;br /&gt;&lt;br /&gt;22. A Symantec survey showed just under two-thirds of enterprises have no formal device management policies. &lt;br /&gt;&lt;br /&gt;23. Monsanto is supporting its 4,700 smartphone users through the device management solutions from Zenprise. &lt;br /&gt;&lt;br /&gt;24. Monsanto's deployment helped reduce outage time for VIP users by 95% and reduced Level 1 support tickets by 34%.&lt;br /&gt;&lt;br /&gt;25. Gartner says iPhone and Droid platforms made up 25 percent of smartphone sales worldwide in first quarter of 2010. &lt;br /&gt;&lt;br /&gt;26. Increasing consumerization makes management harder; unlike BlackBerry devices, iPhone and Droid are not enterprise-focused. &lt;br /&gt;&lt;br /&gt;27. Clothier Patagonia enabled iPhones and Droids in its environments using management tool Good for Enterprise.&lt;br /&gt;&lt;br /&gt;28. "People want to use these devices, and they want to use them at work." — Alex Yanez, telecommunications engineer, Patagonia. &lt;br /&gt;&lt;br /&gt;29. Gartner expects mobile application downloads to increase tenfold between 2009 and 2013. &lt;br /&gt;&lt;br /&gt;30. Compass Intelligence predicts U.S. businesses will spend $11.6 billion on mobile app development by 2012.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;Source: &lt;a href="http://www.baselinemag.com/c/a/Business-Intelligence/30-Fast-Facts-About-Smartphones-771839/" target="_blank"&gt;BaselineMag&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-8602366780464396264?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/8602366780464396264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2012/01/strange-facts-about-smart-mobilephones.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/8602366780464396264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/8602366780464396264'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2012/01/strange-facts-about-smart-mobilephones.html' title='Strange Facts about Smart MobilePhones'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-438244056076931307</id><published>2012-01-21T11:24:00.001+05:30</published><updated>2012-01-21T11:24:31.327+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android - How to set the wallpaper image'/><category scheme='http://www.blogger.com/atom/ns#' term='wallpaper.'/><category scheme='http://www.blogger.com/atom/ns#' term='set wallpaper from your program'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android - How to set the wallpaper image</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;AIM: To set wallpaper from your program&lt;br /&gt;Solution:&lt;br /&gt;&lt;br /&gt;If you have Image path. like /sdcard/image1.jpg&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="default prettyprint"&gt;&lt;code&gt;&lt;span class="pln"&gt;&lt;/span&gt;&lt;span style="color: #cc0000; font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span class="typ"&gt;FileInputStream&lt;/span&gt;&lt;span class="pun"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;span style="color: #cc0000; font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt; &lt;code&gt;&lt;span class="kwd"&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;b style="color: #cc0000; font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;code&gt;&lt;span class="kwd"&gt;is&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;new&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;FileInputStream&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="kwd"&gt;new&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;File&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="pln"&gt;imagePath&lt;/span&gt;&lt;span class="pun"&gt;));&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;span class="pln"&gt;&lt;/span&gt;&lt;span class="typ"&gt;BufferedInputStream&lt;/span&gt;&lt;span class="pun"&gt;&lt;/span&gt;&lt;/code&gt; &lt;code&gt;&lt;span class="pln"&gt;bis &lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;new&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;BufferedInputStream&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="kwd"&gt;is&lt;/span&gt;&lt;span class="pun"&gt;);&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="typ"&gt;Bitmap&lt;/span&gt;&lt;span class="pln"&gt; bitmap &lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;BitmapFactory&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;decodeStream&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="pln"&gt;bis&lt;/span&gt;&lt;span class="pun"&gt;);&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="typ"&gt;Bitmap&lt;/span&gt;&lt;span class="pln"&gt; useThisBitmap &lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;Bitmap&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;createScaledBitmap&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; bitmap&lt;/span&gt;&lt;span class="pun"&gt;,&lt;/span&gt;&lt;span class="pln"&gt; parent&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;getWidth&lt;/span&gt;&lt;span class="pun"&gt;(),&lt;/span&gt;&lt;span class="pln"&gt; parent&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;getHeight&lt;/span&gt;&lt;span class="pun"&gt;(),&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;true&lt;/span&gt;&lt;span class="pun"&gt;);&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;bitmap&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;recycle&lt;/span&gt;&lt;span class="pun"&gt;();&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="kwd"&gt;if&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="pln"&gt;imagePath&lt;/span&gt;&lt;span class="pun"&gt;!=&lt;/span&gt;&lt;span class="kwd"&gt;null&lt;/span&gt;&lt;span class="pun"&gt;){&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="typ"&gt;System&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="kwd"&gt;out&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;println&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="str"&gt;"Hi I am trying to set wallpaper"&lt;/span&gt;&lt;span class="pun"&gt;);&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; wallpaperManager &lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;WallpaperManager&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;getInstance&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="kwd"&gt;this&lt;/span&gt;&lt;span class="pun"&gt;);&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; wallpaperDrawable &lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="pln"&gt; wallpaperManager&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;getDrawable&lt;/span&gt;&lt;span class="pun"&gt;();&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; wallpaperManager&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;setBitmap&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="pln"&gt;useThisBitmap&lt;/span&gt;&lt;span class="pun"&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre class="default prettyprint" style="color: #cc0000; font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;b&gt;&lt;code&gt;&lt;span class="pun"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre class="default prettyprint" style="color: #cc0000; font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;b&gt;&lt;code&gt;&lt;span class="pun"&gt;&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre class="default prettyprint" style="color: #cc0000; font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;code style="color: black;"&gt;&lt;span class="pun"&gt;Add this in Manifest file &lt;/span&gt;&lt;/code&gt;&lt;b&gt;&lt;code&gt;&lt;span class="pun"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre class="default prettyprint" style="color: #cc0000; font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;b&gt;&lt;code&gt;&lt;span class="pun"&gt;&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre class="default prettyprint" style="color: #cc0000; font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;b&gt;&lt;code&gt;&lt;span class="pun"&gt;&lt;/span&gt;&lt;/code&gt;&lt;/b&gt;&lt;code&gt;&lt;span class="tag" style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;lt;manifest&lt;/span&gt;&lt;span class="pln" style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt; &lt;/span&gt;&lt;span class="atn" style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;xlmns:android&lt;/span&gt;&lt;span class="pln" style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;...&lt;/span&gt;&lt;span class="tag" style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;gt;&lt;/span&gt;&lt;span class="pln" style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;br /&gt;&amp;nbsp;...&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag" style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;lt;uses-permission&lt;/span&gt;&lt;span class="pln" style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt; &lt;/span&gt;&lt;span class="atn" style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;android:name&lt;/span&gt;&lt;span class="pun" style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;=&lt;/span&gt;&lt;span class="atv" style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;"android.permission.SET_WALLPAPER"&lt;/span&gt;&lt;span class="pln" style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt; &lt;/span&gt;&lt;span class="tag" style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="pln" style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="tag" style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;lt;/manifest&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre class="default prettyprint" style="color: #cc0000; font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;code&gt;&lt;span class="tag" style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre class="default prettyprint" style="color: #cc0000; font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;code&gt;&lt;span class="tag" style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="default prettyprint" style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;code&gt;&lt;span class="pln"&gt;&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/code&gt;&lt;b&gt;&lt;code&gt;&lt;span class="pun"&gt;&lt;/span&gt;&lt;/code&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre class="default prettyprint"&gt;&lt;code&gt;&lt;span class="pun"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre class="default prettyprint"&gt;&lt;code&gt;&lt;span class="pun"&gt;&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre class="default prettyprint"&gt;&lt;code&gt;&lt;span class="pun"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-438244056076931307?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/438244056076931307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2012/01/android-how-to-set-wallpaper-image.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/438244056076931307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/438244056076931307'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2012/01/android-how-to-set-wallpaper-image.html' title='Android - How to set the wallpaper image'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-7745694332879577453</id><published>2012-01-21T10:46:00.001+05:30</published><updated>2012-01-21T10:46:52.919+05:30</updated><title type='text'>Software is all about..........</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;b&gt;People&lt;/b&gt;&lt;/div&gt;&lt;ol style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;li&gt;The most important factor in software work is the quality of the programmers. &lt;/li&gt;&lt;li&gt;The best programmers are up to 28 times better than the worst programmers.&lt;/li&gt;&lt;li&gt;Adding people to a late project makes it later.&lt;/li&gt;&lt;li&gt;The working environment has a profound impact on productivity and quality.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;b&gt;Tools and Techniques&lt;/b&gt;&lt;/div&gt;&lt;ol start="5" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;li&gt;Hype (about tools and technology) is a plague on the house of software.&lt;/li&gt;&lt;li&gt;New tools and techniques cause an initial &lt;i&gt;loss&lt;/i&gt; of productivity / quality.&lt;/li&gt;&lt;li&gt;Software developers talk a lot about tools, but seldom use them.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;b&gt;Estimation&lt;/b&gt;&lt;/div&gt;&lt;ol start="8" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;li&gt;One of the two most common causes of runaway projects is poor estimation.&lt;/li&gt;&lt;li&gt;Software estimation usually occurs at the wrong time.&lt;/li&gt;&lt;li&gt;Software estimation is usually done by the wrong people.&lt;/li&gt;&lt;li&gt;Software estimates are rarely corrected as the project proceeds.&lt;/li&gt;&lt;li&gt;It is not surprising that software estimates are bad. But we live and die by them anyway!&lt;/li&gt;&lt;li&gt;There is a disconnect between software management and their programmers.&lt;/li&gt;&lt;li&gt;The answer to a feasability study is almost always "yes".&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;b&gt;Reuse&lt;/b&gt;&lt;/div&gt;&lt;ol start="15" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;li&gt;Reuse-in-the-small is a solved problem.&lt;/li&gt;&lt;li&gt;Reuse-in-the-large remains a mostly unsolved problem.&lt;/li&gt;&lt;li&gt;Reuse-in-the-large works best in families of related systems.&lt;/li&gt;&lt;li&gt;Reuseable components are three times as hard to build and should be tried out in three different settings.&lt;/li&gt;&lt;li&gt;Modification of reused code is particularly error-prone.&lt;/li&gt;&lt;li&gt;Design pattern reuse is one solution to the problems of code reuse.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;b&gt;Requirements&lt;/b&gt;&lt;/div&gt;&lt;ol start="23" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;li&gt;One of the two most common causes of runaway projects is unstable requirements.&lt;/li&gt;&lt;li&gt;Requirements errors are the most expensive to fix during production.&lt;/li&gt;&lt;li&gt;Missing requirements are the hardest requirements errors to correct.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;b&gt;Design&lt;/b&gt;&lt;/div&gt;&lt;ol start="26" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;li&gt;Explicit requirements 'explode' as implicit requirements for a solution evolve.&lt;/li&gt;&lt;li&gt;There is seldom one best design solution to a software problem.&lt;/li&gt;&lt;li&gt;Design is a complex, iterative process. Initial design solutions are usually wrong and certainly not optimal.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;b&gt;Coding&lt;/b&gt;&lt;/div&gt;&lt;ol start="29" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;li&gt;Designer 'primitives' rarely match programmer 'primitives'.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;b&gt;Error removal&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/div&gt;&lt;ol start="31" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;li&gt;Error removal is the most time-consuming phase of the lifecycle.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;b&gt;Testing&lt;/b&gt;&lt;/div&gt;&lt;ol start="32" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;li&gt;Software is usually tested at best to the 55 to 60 percent coverage level.&lt;/li&gt;&lt;li&gt;100 percent test coverage is still far from enough.&lt;/li&gt;&lt;li&gt;Test tools are essential, but rarely used.&lt;/li&gt;&lt;li&gt;Test automation rarely is. Most testing activities cannot be automated.&lt;/li&gt;&lt;li&gt;Programmer-created, built-in debug code is an important supplement to testing tools.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;b&gt;Reviews and Inspections&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/div&gt;&lt;ol start="37" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;li&gt;Rigorous inspections can remove up to 90 percent of errors before the first test case is run.&lt;/li&gt;&lt;li&gt;Rigorous inspections should not replace testing.&lt;/li&gt;&lt;li&gt;Post-delivery reviews, postmortems, and retrospectives are important and seldom performed.&lt;/li&gt;&lt;li&gt;Reviews are both technical and sociological, and both factors must be accommodated.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;b&gt;Maintenance&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/div&gt;&lt;ol start="41" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;li&gt;Maintenance typically consumes 40 to 80 percent of software costs. It is probably the most important software lifecycle phase.&lt;/li&gt;&lt;li&gt;Enhancements represent roughly 60 percent of maintenance costs.&lt;/li&gt;&lt;li&gt;Maintenance is a solution-- not a problem.&lt;/li&gt;&lt;li&gt;Understanding the existing product is the most difficult maintenance task.&lt;/li&gt;&lt;li&gt;Better methods lead to &lt;i&gt;more&lt;/i&gt; maintenance, not less.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;b&gt;Quality&lt;/b&gt;&lt;/div&gt;&lt;ol start="46" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;li&gt;Quality is a collection of attributes.&lt;/li&gt;&lt;li&gt;Quality is &lt;i&gt;not&lt;/i&gt; user satisfaction, meeting requirements, achieving cost and schedule, or reliability.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;b&gt;Reliability&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/div&gt;&lt;ol start="48" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;li&gt;There are errors that most programmers tend to make.&lt;/li&gt;&lt;li&gt;Errors tend to cluster.&lt;/li&gt;&lt;li&gt;There is no single best approach to software error removal.&lt;/li&gt;&lt;li&gt;Residual errors will always persist. The goal should be to minimize or eliminate &lt;i&gt;severe&lt;/i&gt; errors.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;b&gt;Efficiency&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/div&gt;&lt;ol start="52" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;li&gt;Efficiency stems more from good design than good coding.&lt;/li&gt;&lt;li&gt;High-order language code can be about 90 percent as efficient as comparable assembler code.&lt;/li&gt;&lt;li&gt;There are tradeoffs between optimizing for time and optimizing for space.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;b&gt;Research&lt;/b&gt;&lt;/div&gt;&lt;ol start="55" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;li&gt;Many researchers advocate rather than investigate.&lt;/li&gt;&lt;/ol&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;If those are the fifty-five facts, then these are the &lt;b&gt;ten fallacies&lt;/b&gt; presented at the end. Fallacies have the &lt;i&gt;ring&lt;/i&gt; of truth, but upon closer inspection, turn out to be problematic when applied to a real live software project.&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/div&gt;&lt;ol style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;li&gt;You can't manage what you can't measure.&lt;/li&gt;&lt;li&gt;You can manage quality into a software product.&lt;/li&gt;&lt;li&gt;Programming can and should be egoless.&lt;/li&gt;&lt;li&gt;Tools and techniques: one size fits all.&lt;/li&gt;&lt;li&gt;Software needs more methodologies.&lt;/li&gt;&lt;li&gt;To estimate cost and schedule, first estimate lines of code.&lt;/li&gt;&lt;li&gt;Random test input is a good way to optimize testing.&lt;/li&gt;&lt;li&gt;"Given enough eyeballs, all bugs are shallow".&lt;/li&gt;&lt;li&gt;The way to preduct future maintenance costs and to make product replacement decisions is to look at past cost data.&lt;/li&gt;&lt;li&gt;You teach people how to program by showing them how to &lt;i&gt;write&lt;/i&gt; programs.&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-7745694332879577453?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/7745694332879577453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2012/01/software-is-all-about.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/7745694332879577453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/7745694332879577453'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2012/01/software-is-all-about.html' title='Software is all about..........'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-7636772048363848094</id><published>2012-01-21T10:15:00.000+05:30</published><updated>2012-01-21T10:15:31.246+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Productive'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Passion for Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='work lifebalance'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips for Enjoying the Software Development Profession'/><category scheme='http://www.blogger.com/atom/ns#' term='MANAGER SUMMARY'/><category scheme='http://www.blogger.com/atom/ns#' term='Happy Software Developers'/><title type='text'>Tips for Enjoying the Software Development</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;h4&gt;&amp;nbsp;&lt;/h4&gt;&lt;h4&gt;The Enjoyable Profession of Software Development&lt;/h4&gt;Software development can be a tremendously rewarding, enjoyablecareer.&lt;br /&gt;Few careers offer comparable opportunities to weave intricate,complex structures that, while virtual, have such a&amp;nbsp;positiveimpact on the world around them. Few offer the freedom andcreativity that software development does, or the very realpotential for entrepreneurial riches.&lt;br /&gt;Whether it's building a new peer-to-peer application, controlsoftware for a massive power generator, or improving the workflowof the corporate scorecard system, done right this can be a veryfulfilling, enjoyable, challenging&amp;nbsp;pursuit.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;A Passion for Software Development?&lt;/h4&gt;Are you &lt;em&gt;really&lt;/em&gt; passionate about software development?Be honest with yourself.&lt;br /&gt;A desire to outshine a teammate isn't passion. Nor is amotivation to impress the boss. Neither is a combination of the twoworn as a magic defensive cloak against downsizingspells.&amp;nbsp;These are second-rate, artificial passion substitutes:Mixed into the recipe, they yield sub par results, often leaving anasty aftertaste&amp;nbsp;of burnout and dissatisfaction.&lt;br /&gt;Instead I'm talking about a bona fide &lt;em&gt;interest&lt;/em&gt; and&lt;em&gt;enjoyment&lt;/em&gt; of the craft and challenge of softwaredevelopment, even outside of career or job security issues (thoughit benefits the same). This isn't a job ad demanding that you're&lt;em&gt;"passionate about business reports!"&lt;/em&gt;, but rather is just amoment for sober reflection on whether you're over-clocking life,or running idle instructions in a tight loop.&lt;br /&gt;If you're like&amp;nbsp;many software developers in the industrytoday, a feeling of enthusiasm and enjoyment for the pursuit isjust a distant memory (often during the happy days of universityand your first job). Instead it has become a career, and is justsomething you do from 9-5 (or more when passion is replaced bysacrifice). Skills have likely stagnated, moving just enough tocompete with coworkers, or to avoid obsolescence.&lt;br /&gt;Of course there are those who've never enjoyed this career, andthey probably will never enjoy it -- it just isn't their thing. Theonly advice I can offer to those people is a suggestion that lifeis too fleeting to spend so much time doing something you don'tenjoy.&lt;br /&gt;&lt;br /&gt;Software developers who truly love what they are doing are theones creating the most innovative code. They're the ones withproductivity rates multiples of their peers. They're the ones thatfeel a little guilty getting paid to do something they enjoy somuch&lt;br /&gt; &lt;br /&gt;&lt;h4 style="font-weight: normal;"&gt;The Tips to be a&amp;nbsp; Productive, Happy Software Developers&lt;/h4&gt;&lt;h4&gt;1. Be Marketable - Keep Up To Date Skills and NetworkContacts&lt;/h4&gt;&lt;a href="http://www.flickr.com/photos/dforbes/100553236/" title="Photo Sharing"&gt;&lt;img align="right" alt="109_0924" height="240" hspace="8" src="http://static.flickr.com/34/100553236_f3f7623bd3_m.jpg" vspace="8" width="180" /&gt;&lt;/a&gt;Most&amp;nbsp;of us will work for over a dozen different firms overour careers.&lt;br /&gt;We'll&amp;nbsp;leave for better salaries and working conditions.We'll&amp;nbsp;relocate to accommodate a spouse's career. We'll be laidoff during corporate mergers and spin-offs, or even when thecompany goes bankrupt. We'll get turfed out because we'reover-skilled, and thus overpaid, relative to the needs of theposition. We'll be downsized because we aren't compatible with thenew boss' empire building schemes. Maybe we'll get bored of aposition and seek out something new.&lt;br /&gt;This is the employment reality of most careers in the 21stcentury.&lt;br /&gt;To some&amp;nbsp;professionals this represents an&amp;nbsp;excitingjourney, and each transition is&amp;nbsp;met with anticipation andenthusiasm. These people feel confident in their abilities, have anetwork of&amp;nbsp;peers in the industry communicating interestingopportunities, and their skillset is up-to-date and marketable(they have the appropriate laundry list of abilities, credentialsand certifications, and upgrade as needed), and while thepossibility of their current employer closing shop tomorrow issomething they'd prefer not happen, and they probably love thegreat group of people that they work with, it isn't something thatthey &lt;em&gt;fear.&lt;/em&gt;&lt;br /&gt;To less prepared professionals, however, the idea of losingtheir cushy job&amp;nbsp;hangs over them like a black cloud. Their lackof apparent opportunities, and the feeling&amp;nbsp;that they couldn'tfind an equivalent job, is enormously destructive of bothmotivation and job satisfaction. Paradoxically, job protectionism(such as making one "indispensable" through obscurity, bydenigrating coworkers, and so on) often becomes a more likelyactivity of people in such positions than legitimatecontributions.&lt;br /&gt;This is&amp;nbsp;incredibly destructive to morale, not just for theindividual in question, but for everyone on their team: Often themalcontent, contagiously demotivated member of the team&amp;nbsp;is theleast employable, and it can be debated which condition led to theother.&lt;br /&gt;&lt;strong&gt;SUMMARY&lt;/strong&gt;:&amp;nbsp;&amp;nbsp;No matter how much you loveyour current job, you should keep your&amp;nbsp;CV&amp;nbsp;current, andyou should always keep up-to-date on industryopportunities.&amp;nbsp;Know what skills are in demand, and try to gainexperience in them (even if it means pursuing formal orself-training during your own time), and attain a level of comfortthat you could transition to a different opportunity with minimaldiscomfort.&lt;br /&gt;&lt;strong&gt;MANAGER SUMMARY:&lt;/strong&gt; You should doeverything&amp;nbsp;in your power&amp;nbsp;to make your group feelconfident in their abilities --&amp;nbsp;ensure that everyone gets achance with marketable technologies; encourage the pursuit ofdesirable certifications; and build skills through internalresources, workshops, and seminars. Unless you're running&amp;nbsp;asweatshop, this is unlikely to lead to a feared exodus ofemployees, but instead will empower and&amp;nbsp;motivate your group tomore openly contribute, and to demand more of each other.&lt;br /&gt;&lt;h4&gt;2. Be The Master of Your Domain&lt;/h4&gt;The control we have over our environment can have a tremendousimpact on our happiness.&lt;br /&gt;Something as simple as a sporadically malfunctioning key on ourkeyboard&amp;nbsp;can ruin an entire day, for instance.&amp;nbsp;Similarly,when you're nearing a deadline and your network connection startsflaking out, it can make an enjoyable jog to the finish line afrustrating exercise of physical restraint (in this caserestraining yourself from tearing the wiring out of the wall). Atleast we have optical mice now, eliminating one of the primarycauses of environmental control frustration.&lt;br /&gt;Many times our work habits inevitably bring a feeling of "lackof control" into our work lives: By failing to fully read thedocumentation for our tools, investigating their behaviour, APIs,and nuances,&amp;nbsp;we often create a situation where much of ourdevelopment is basically crap-shoot trial and error, reacting asthings don't work as planned.&lt;br /&gt;I've witnessed development groups, not to mention that I'vedemonstrated this unsavoury trait myself, unhappily fighting withperceived technology&amp;nbsp;deficiencies (usually as a deadlinerapidly approaches), moaning and complaining about what seems to befaults in the language, technology, or platform, forever buildingworkarounds under a fog of uncertainty, when in reality it wasactually a fault in the understanding of the same.&lt;br /&gt;More often than not it's simply that they haven't spent theupfront time to understand the language (I remain amazed at thenumber of C# developers who have no idea what the &lt;em&gt;using&lt;/em&gt;keyword is for, or why seemingly out-of-scope file objects arestill locking files until some magical, indeterminate time in thefuture. Or the Delphi developers who needlessly nulled variables atthe end of scope in a futile misguided attempt to fight mysterybugs), the technology, or the platform. Their frustration iscreated out of ignorance, and a small up-front investment wouldhave sped up development, increasing the sense of control that thedevelopers have over their domain.&lt;br /&gt;&lt;strong&gt;SUMMARY:&lt;/strong&gt; The next time something seemsmysterious or unknown, take the time to properly investigate it.Classic lack-of-control approaches such as hacked workarounds or"reset the server daily" lead to a feeling of losing control,reducing job satisfaction and adding to the natural dailyfrustrations. And get your keyboard replaced if it startsmalfunctioning.&lt;br /&gt;&lt;strong&gt;MANAGER SUMMARY:&lt;/strong&gt;&amp;nbsp;Identify and investigate"easy-outs" proposed by your development team.&amp;nbsp;While mostsoftware has faults, and products and technologies often workdifferently than we might imagine, many times such excuses are dueto a lack of investigation and analysis. Even&amp;nbsp;when&amp;nbsp;thingsdon't work as&amp;nbsp;advertised, which is frequently thecase,&amp;nbsp;formally investigating and empirically determiningbehaviours is vastly superior to each developer endlessly fightingwith and then hashing out strategies on a need basis. And make sureyour developers have functioning keyboards.&lt;br /&gt;&lt;h4&gt;3. Accommodate Your Financial Needs&lt;/h4&gt;&lt;img align="right" height="282" hspace="8" src="http://www.yafla.com/images/blog/coins.jpg" vspace="8" width="180" /&gt;I've worked in some great positions at the wrong times in mylife,&amp;nbsp;sapping my motivation until eventually I moved on. Thesepositions were for great firms, with great working conditions andgreat coworkers and management, but it couldn't realistically adaptto accommodate my evolving financial needs. I inventeddissatisfactions with the situation, turning an ideal situationinto a daily torture.&lt;br /&gt;After getting married and planning for our first child, forinstance, the financial risk/reward that worked when I was livingalone in a $600 apartment eating Ramen noodles was no longersatisfactory. Demands of owning a home, a car with infant carseats,education funds, daycare (for two children costing more than itwould cost to lease two (2) BMW 750i's), and boxes and boxes ofdiapers, required more financial returns than I needed yearsbefore.&lt;br /&gt;I moved on.&lt;br /&gt;While the resulting role superficially wasn't as satisfactory,from a life perspective my mood brightened dramatically, and my daywas much more enjoyable.&lt;br /&gt;Of course this seems like cheap advice: Make more money! AndFast! Yet the reality is that developers often do make choices tothe detriment of their financial condition, and if they go too farthey will hate their job no matter how perfect it otherwise is.Working for equity of a start-up is great when you're just out ofuniversity, but it is destined for failure when you're moreestablished.&lt;br /&gt;&lt;strong&gt;SUMMARY&lt;/strong&gt;: If your financials are out of balance,it will unavoidably sour your mood during the workday, making youresent your employer and your workplace. When life goals exceed theincome of your position, immediately begin investigatingalternatives (be it asking for a raise, looking for a more seniorrole in your organization, or seeking employment elsewhere). Nomotivational boost or cool company games room will overcome thisbasic life need.&lt;br /&gt;&lt;strong&gt;MANAGEMENT SUMMARY&lt;/strong&gt;: Be aware of the goals andneeds of your group. Sometimes someone's needs grow beyond thepossible return of a position, and it is important to appropriatelycommunicate this (rather than giving vague hints of unseen raisesand super-bonuses at some future point).&lt;br /&gt;&lt;h4&gt;4. Have A Life Outside of Work&lt;/h4&gt;&lt;a href="http://www.flickr.com/photos/dforbes/100553864/" title="Photo Sharing"&gt;&lt;img align="right" alt="125_2505" height="240" hspace="8" src="http://static.flickr.com/31/100553864_d3cbce907e_m.jpg" vspace="8" width="180" /&gt;&lt;/a&gt;This is a rule that works for all professions -- havingaccomplishments providing satisfaction outside of work will smooththe inevitable downs of our professional lives, often providing onewith a much better perspective. Without this, often minor workplacefailures can explode into seemingly momentous events.&lt;br /&gt;These accomplishments can even be in the same domain: Aprofessional coder by day, and an open-source coder by night, forinstance.&lt;br /&gt;&lt;strong&gt;SUMMARY&lt;/strong&gt;: There will be periods when everythingseems to go wrong in the workplace. Having the cushion ofachievements outside of work can avoid it spiraling into aworkplace disaster, keeping spirits up through the tough times.Often non-work experiences benefit the workplace as well, whetherit's techniques learned from nighttime projects, or deliciouscoffee courtesy of the nighttime barista classes.&lt;br /&gt;&lt;strong&gt;MANAGER SUMMARY&lt;/strong&gt;: There is a world outside ofwork.&lt;br /&gt;&lt;h4&gt;5. Properly Manage Expectations&lt;/h4&gt;Developers, as a general rule, are terrible at managingexpectations: Many of us are prone to overpromising deliverables,assuring stakeholders that we'll deliver these amazing resultssooner than is reasonable. I've fallen victim to this syndromemyself, and I've seen it occur rampantly across the industry.&lt;br /&gt;When D-day comes we convince ourselves into believing that theusers built their own unrealistic expectations, and managers forcedus into untenable timelines. While often that is the case, just asfrequently the developers were the origin ofmisinformation.&lt;br /&gt;While there is a temporary sense of satisfaction wowing usersand management with an exaggerated declaration of our abilities(we've likely even convinced ourselves), as time wears on thismisinformation can be enormously destructive and debilitating. Withevery day closer to the deadline we get a little more desperate fora silver bullet, hoping that some magic technology or componentwill deliver us from damnation.&lt;br /&gt;It seldom works out that way.&lt;br /&gt;Users are unhappy. Management is dissatisfied. Employees aredemoralized and devastated.&lt;br /&gt;The best option is always to manage expectations, to ensure thatwe can reasonably deliver promised results without heroiceffort.&lt;br /&gt;&lt;strong&gt;SUMMARY&lt;/strong&gt;: Plan for the long term, realizing thatpromises that aren't delivered on will cause you great workplaceunhappiness later. Manage expectations to ensure that you cansatisfy your "customers" with reasonable effort, and with areasonably high probability of success.&lt;br /&gt;&lt;strong&gt;MANAGER SUMMARY&lt;/strong&gt;: Never demand unrealisticdeadlines, and question employees when provided with the same.Encourage your troops to be more reasonable with their promises,especially to stakeholders outside of the group, and they'll have amuch greater probability of meeting external expectations, leadingto increased motivation for everyone.&lt;br /&gt;&lt;h4&gt;Conclusion&lt;/h4&gt;This is an amazing, expansive career full of incredibleinnovation and endless opportunity. Ensure that you don't diminishyour enjoyment through simple mistakes, such as pigeon-holing intoa position,&amp;nbsp;or endlessly setting up yourself for failure.&lt;br /&gt;&lt;h4&gt; &lt;/h4&gt;&lt;br /&gt;&lt;img id="sm-target-image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAUCAYAAACJfM0wAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK8AAACvABQqw0mAAAAB90RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgOLVo0ngAAAAWdEVYdENyZWF0aW9uIFRpbWUAMDQvMDQvMDhrK9wWAAACLklEQVQ4jbXUP0wTcRQH8O/9ekdjkT8CUqpee00bRyNNmSRSV0PcJJoQg2i6ODTExEUHg04OaNSppqtCjQ4ukDSKSuLUwcm4NNZcQYsIGtD+u/f7MZSWXltqo/Ul7/JL7u7z3r3fLye53e5xj8ejoYWRSCSSstfr1YLBYHcr4XA4rMmMMciy3EoXjDHIjDEoivL/4fefrP1P3nYEvqzLajOIo8fQz5/cfH3cnVttCM8udQaODBxQFx44Ye9h4HxvdGWtgMlbSXV2SQoMHf0RNcGSJJlmvPLdos7fdyIWL+D5myx+ZwwUDAIRh2EU1wYRFItA6FwvIjdcGJr4qFYakiSBlTavlABwsJth7mUWmSyBOAfnAkQE4gKccxBx/MoYmHmcxuH+NgAwGQ03j3NeRjjnoGqcC/zcIgghAMBkNISJuKlbEy4EaKdoKerC5nNMxQdlgVx+t0siKhYQovwV1rbdtyoNxlhxxoqilBMA0uuES6Pt6NqP2hHsoDarhJuXD2F5NV/uuJR1T4XLzvTJ25/VyHUnzgzba0YkKq6pdB4T00m47EyvPhU1M54asy3ee5o55bvwQQWAr/PHMBfbQGhGrykCANqARZ8asy3+ccYjg/K3kcF9UQAYvrJ29dmrDUxHlnOxu72P+rpYrq5eFU39K649TCF0tnPB0WdtCt2z48rQHIp+8XTHu9ET7alm0aY6fnFHjda98a/w3wZjDJLP5xv3+/1aK+F4PJ7cBm32CUNiyI2GAAAAAElFTkSuQmCC" style="border: medium none; color: transparent; left: 227px; margin: 0px; position: absolute; top: 2825px; visibility: visible; z-index: 2147483647;" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-7636772048363848094?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/7636772048363848094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2012/01/tips-for-enjoying-software-development.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/7636772048363848094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/7636772048363848094'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2012/01/tips-for-enjoying-software-development.html' title='Tips for Enjoying the Software Development'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-8375779679066489472</id><published>2012-01-21T10:08:00.000+05:30</published><updated>2012-01-21T10:08:30.404+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Best Habits of Highly Effective Programmers'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='Habits of Effective Programmers'/><category scheme='http://www.blogger.com/atom/ns#' term='Habits'/><category scheme='http://www.blogger.com/atom/ns#' term='Coding'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><category scheme='http://www.blogger.com/atom/ns#' term='Habits of Highly Effective Programmers'/><category scheme='http://www.blogger.com/atom/ns#' term='Best'/><title type='text'>Best Habits of Highly Effective Programmers</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;As a software engineer, you might want any number of things out ofyour job - a steady paycheck, the opportunity to work on interestingprojects, a springboard to the next better job, or maybe you just likehanging out with other programmers. But by "effective", I mean theability to complete projects in a timely manner with the expectedquality. After working on dozens of software releases, I believe thefollowing practices will bring you there, and while they may involvesticking your neck out, I'd like to think they will also advance yourprofessional reputation, career longevity, and personal satisfaction.&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;a href="" name="N1001E" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/a&gt;&lt;a href="" name="Understand+Your+Requirements" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/a&gt;&lt;div class="h3" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;h3&gt;Understand Your Requirements&lt;/h3&gt;The first step in becoming an effective programmer is to ensure thatyou are spending your time wisely. And there is no greater waste oftime than in working on something that is not useful or never shipped.&lt;br /&gt;&lt;a href="" name="N10027"&gt;&lt;/a&gt;&lt;a href="" name="Build+Early"&gt;&lt;/a&gt;&lt;div class="h4"&gt;&lt;h4&gt;Build Early&lt;/h4&gt;Get a demonstrable system working as early as possible. This meansestablishing the interface first, whether it's an API or userinterface, and stubbing the encapsulated functionality asnecessary. This allows your "customers" to check it out, by exercisingthe user interface or writing code to the API, and any inconsistenciesor omissions in the initial spec can be detected early. Chances are,you will notice problems or potential improvements even beforereleasing this first deliverable.&lt;br /&gt;There is a classical school of thought that believes if you designeverything up front, then all you have to do is write the code andyou're done. That works great if you've done the exact same projectbefore.  Otherwise, it's more likely you'll run into a point whereyou're just guessing or operating on questionable assumptions.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Upon joining an early-stage wireless internet startup, I found myself intwo months of design meetings for a wireless portal and gatewaydue to launch in six months. Eventually we got tired of meeting andfinally started coding. Within two weeks, my part of the project hadno resemblance to the original design, and the first wirelessconnection test two months later revealed a fundamentalmisunderstanding of the wireless protocol.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;This is not to say that design is unnecessary. But after a certainpoint, design is just speculation. Design should be validated withimplementation, and better to do that early and continuously than lateand, well, too late.&lt;br /&gt;Even if the original design is sufficient, once you have something youcan tweak, you can improve upon it. Hardwareproducts (who designed this VCR?), buildings, and large-scale softwareprojects suffer from interfaces that were frozen in "preproduction",but with software, you have an opportunity early in the project torefine your understanding of the requirements and produce a suitableinterface. But it must be done early.&lt;br /&gt;Getting something ready early is also good for your occupationalwell-being. Your boss will appreciate seeing evidence that somethingis actually getting done and having something available to demo. Onthe other hand, a drawn out period with nothing to show is a recipefor anxious management.&lt;br /&gt;&lt;/div&gt;&lt;a href="" name="N10046"&gt;&lt;/a&gt;&lt;a href="" name="Deliver+Often"&gt;&lt;/a&gt;&lt;div class="h4"&gt;&lt;h4&gt;Deliver Often&lt;/h4&gt;Once you have something working, don't just leave it as a "proof ofconcept". Let people play with it, see their reactions, and let thisguide and prioritize your development. There is no substitute forwatching how people use your software. Customer questionnaires andfocus studies might provide some useful input but run the risk oftransferring feature and design decisions from the developer to thecustomer.&lt;br /&gt;In particular get the software into the hands of the QA staff as soonas possible and feed them regular builds, preferably at scheduledintervals. Having them test automated daily builds is ideal, but evena weekly build is pretty good. This will help them feel involved inthe full life-cycle of the project and they should be best-trained atidentifying and reporting problems. The highest priority should begiven to issues that prevent them from using the product, e.g. crashesor dead-end paths - you want them to cover as much as possible as soonas possible and get a feel for the whole product so design issues canbe identified early.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;At a small 3D graphics software vendor, I was putin charge of porting the flagship product from SGI workstations toWindows NT.  After six months, the port was so incomplete andcrash-prone that I was reluctant to give the first "alpha" build ourtest group. Fortunately, the QA manager insisted, and the resultingbombardment of bug reports forced me to immediately focus on theproblems that prevented the testers from exercising the application inany meaningful way. Left to my own devices, I would have worked onwhat seemed to be the harder and more important core 3D issues, andprobably delayed too long on seemingly mundane issues like the userinterface, load-save functionality, and compabilility with all thevarieties of consumer hardware we were planning to support.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Programmers often don't want to release code to testers early - theydon't want to hear about a bunch of bugs they already know about, andquite possibly the testers don't want to test something that barelyworks. But it's the testers' job to find these problems andprogrammers need to realize bug reports are a good thing, if theyarrive early enough.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;a href="" name="N10060" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/a&gt;&lt;a href="" name="Keep+It+Real" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/a&gt;&lt;div class="h3" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;h3&gt;Keep It Real&lt;/h3&gt;Keep your software running in as close to a shipping state aspossible. You never know when you'll have to demo the system,send out an evaluation copy, or even deliver ("OK, time to wrap things up!")&lt;br /&gt;&lt;a href="" name="N10069"&gt;&lt;/a&gt;&lt;a href="" name="Use+Real+Data"&gt;&lt;/a&gt;&lt;div class="h4"&gt;&lt;h4&gt;Use Real Data&lt;/h4&gt;If you just test with sample data, that big iceberg of real data outthere is going to sink your program.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;One of the leading semiconductor fabs evaluated a supply chainmanagement product I was working on. After crunching out a milestonedelivery to them, we got word back that the first batch of data theyfed it from their own operations was still processing - for twodays. I sympathized with the lead programmer, who had to dig down andemergency-optimized everything he could for two weeks with bothmanagement and client breathing down his neck. I'm just glad it wasn'tme on the line.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;a href="" name="N1007C"&gt;&lt;/a&gt;&lt;a href="" name="Use+Real+Builds"&gt;&lt;/a&gt;&lt;div class="h4"&gt;&lt;h4&gt;Use Real Builds&lt;/h4&gt;Remember the development build on your machine is not the real build.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;On a recent game development project where I worked on the userinterface, I got intermittent reports from QA that some colors werenot correct. Eventually, I realized the problem only showed up inrelease builds and another programmer used the special consoledebugging hardware to track down the bug. Which turned out to be asilly mistake I'd made two months previous, failing to specify aninitial color value in a few cases. The debug build always selected aspecific default value, while the release build optimized that awayand the result was less determinate. If I'd made a point of runningthe release build frequently, I would have spotted my mistakeimmediately, instead of losing it in the sands of time.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;a href="" name="N1008F"&gt;&lt;/a&gt;&lt;a href="" name="Merge+Often"&gt;&lt;/a&gt;&lt;div class="h4"&gt;&lt;h4&gt;Merge Often&lt;/h4&gt;Don't procrastinate on merging your code with the main code base - thelonger you wait, the harder it gets.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I worked with a programmer who "couldn't bebothered with" all the new code and data changes that showed up in therepository every day. And certainly, daily merges did take up sometime for all the other programmers, and this programmer was able torun some impressive standalone demos with a snapshot of the code anddata. But every time we had a milestone delivery, it took days to getthe isolated code reattached to the current codebase again, sometimescompromising the milestone delivery and risking the funding for theentire project.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Keeping your code out of the official build means that programmers cannot evaluate your code and testers cannot spot bugs early.  Maybe you don't want people picking on your code or bugs, but it's better to identify those issues early than later - suck it up.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;a href="" name="N100A6" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/a&gt;&lt;a href="" name="Understand+Your+Code" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/a&gt;&lt;div class="h3" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;h3&gt;Understand Your Code&lt;/h3&gt;Life is full of wonderful mysteries, but your code is not the placefor them.  You don't have to know how your car works - if the enginestarts making strange noises, you drop it off the mechanic. When itcomes to your code, if you don't understand how it works, or doesn'twork, no one will.&lt;br /&gt;&lt;a href="" name="N100AF"&gt;&lt;/a&gt;&lt;a href="" name="Code+with+Style"&gt;&lt;/a&gt;&lt;div class="h4"&gt;&lt;h4&gt;Code with Style&lt;/h4&gt;My childhood piano teacher once commented to me, "Your sister has agood sense of timing, and your brother has a good feel of thekeyboard." Then he paused. "You, uh, you work hard."&lt;br /&gt;Programming is one of those things that a lot of people are more orless competent at, but some in particular have a flair for it. I'm alousy piano player despite years of lessons, and I'm a mediocrebasketball player although I enjoy playing it immensely. But I do liketo think I have a flair for programming and writing. And notsurprisingly, I think good programming is like good writing. Bothprose and code are textual, have grammar, syntax, spelling andsemantics and spelling. For most coders and writers, this is enough,but the best writers and coders have an esthetic and their workfeatures structure and style that can often be identified with theauthor.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Many Windows programmers wonder why grumpy old Unix/Mac/Amiga/Lispprogrammers rail against Win32/MFC/.NET, but if all the API's you'veseen are from Microsoft, you probably don't know there's anythingbetter.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Perhaps not everyone is capable of writing stylish code - I've heardit said that good object-oriented programmers, in particular, are bornand not made. But like fine music, wine, and literature, you can learnto appreciate good code.&lt;br /&gt;&lt;/div&gt;&lt;a href="" name="N100C8"&gt;&lt;/a&gt;&lt;a href="" name="Cut-and-Paste"&gt;&lt;/a&gt;&lt;div class="h4"&gt;&lt;h4&gt;Cut-and-Paste&lt;/h4&gt;The opposite of stylish programming is cut-and-paste. Grab some code fromsomewhere that is supposed to do something like what you want, tweakit until it sort of works, stir, repeat, and voila, you have thesoftware equivalent of mystery meat.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A few months after leaving one company, a formercoworker emailed me a single function consisting of ten pages ofcut-and-paste code and asked why it wasn't working. I could have verywell asked why it should work at all. If you can't explain how yourown code is supposed to work, how can you expect anyone to help youwith it? (He has since moved on to a management position at Microsoft)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;I've even had trouble diagnosing my own code that was cut-and-pastedfrom sample code. It's a reasonable way to start new code, but youcan't just leave it alone when it seems to work - you have to go backand make sure you understand it line by line and clean it up for yourown purposes.&lt;br /&gt;&lt;/div&gt;&lt;a href="" name="N100DE"&gt;&lt;/a&gt;&lt;a href="" name="Keep+it+Clean"&gt;&lt;/a&gt;&lt;div class="h4"&gt;&lt;h4&gt;Keep it Clean&lt;/h4&gt;The key to keeping your house/condo/apartment clean is to spend alittle time cleaning it every day, or at least every week. If you waituntil your abode is an unsightly mess, it's just too much damn troubleto clean it all up and you end up just doing a halfhearted job. Oryour hire a cleaning service.&lt;br /&gt;Assuming you don't have the luxury of hiring someone to come in andclean up your code every week, you should periodically inspect yourcode, sweep up accumulated hard-coded numbers, outdated comments,misleading function names, or you'll inevitably end up withuninhabitable code that's embarrassing to show anyone else. And ifyou're not embarrassed, well, you should be.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;One programmer I supervised kept reporting to me that her code was"done". This is what management normally likes to hear, but it drivesme crazy. Code is never done - you have to debug it, maintain it,evolve it until it's put out to pasture.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;a href="" name="N100F4"&gt;&lt;/a&gt;&lt;a href="" name="Questions?+Comments?"&gt;&lt;/a&gt;&lt;div class="h4"&gt;&lt;h4&gt;Questions? Comments?&lt;/h4&gt;Some like to think of programming as a craft. Others, engineering.  Moreoften than not, it's archaeology. You dig through sediments of code andwonder what purpose all these strange artifacts served. Do future generationsa favor and leave some clues.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I asked the aformentioned engineer whose code was "done" to addcomments. The result, a function named GetData was prefaced by thecomment "Gets data." That's not just useless - it's insulting.What data? (factory automation schedules) In what format? (aproprietary XML format) From where? (an in-house server, usingTCP/IP) Not to mention little details like what happens when theserver is unavailable or the transmission is broken.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Document your code as if someone else might have to take it over atany moment and know what to do with it. That person might actually beyou - how often have you had to revisit your own code and thought toyourself, what was I trying to do here?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;On a contract with a previous employer, I wasasked to look over a piece of code that no one else had time to attendto. At first, I thought it was a mess and didn't know what was going onin there. Then I gradually figured out what the code was doing, and Igrudgingly admitted the code wasn't too bad. And then I eventuallyrealized that I had written the code two years ago. Note to self: needmore comments.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;With that in mind, annotate your code as you write it, instead of waiting for a convenientcleanup phase in "post" - annotating as you code can even clarify yourthoughts while you're programming. You can be your own pair-programming buddy.&lt;br /&gt;As a bonus, these days you can generate nice HTML orotherwise-formatted documentation from source code comments,using javadoc, doxygen, whatever. Ideally, the doc-generation is partof your nightly build and available via your intranet.&lt;br /&gt;&lt;/div&gt;&lt;a href="" name="N1011B"&gt;&lt;/a&gt;&lt;a href="" name="Full+Warning"&gt;&lt;/a&gt;&lt;div class="h4"&gt;&lt;h4&gt;Full Warning&lt;/h4&gt;Ignore compiler and runtime warnings at your own peril. They arecalled "warnings" for a reason.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I shipped one Unix-based application that had a problem linking somefunctions successfuly - we worked around it by relinking thosefunctions at runtime. When we performed a clean rebuild six monthslater for the next release, it was revealed that we had turned offlinker warnings which would have alerted us of a known linker bug.  Inour defense, we had swept the linker problems under the carpet at theUnix vendor's suggestion, (thanks, SGI!) but it turned out we couldget the link to work just by reordering our libraries.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Crank up the warning levels on your compilers, sprinkle your codewith assertions, and log the build and test-time warnings. Better yet,include a count of those warnings in your build metrics so you know ifyou're dealing with them or letting them accumulate.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;a href="" name="N10132" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/a&gt;&lt;a href="" name="Optimal+Programming" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/a&gt;&lt;div class="h3" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;h3&gt;Optimal Programming&lt;/h3&gt;&lt;a href="" name="N10138"&gt;&lt;/a&gt;&lt;a href="" name="Code+with+Purpose"&gt;&lt;/a&gt;&lt;div class="h4"&gt;&lt;h4&gt;Code with Purpose&lt;/h4&gt;On the other extreme from cut-and-pasters are those who change codejust to make it look prettier (at least to them). While it's laudableto have a programming esthetic, it's a waste of time (and a uselessrisk) to change code just so it looks better to you. It's aggressivelyannoying to go through and change code that other people have writtenjust so it looks better to you.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A fastidious coworker of mine went through our codebase and removedall the expletives. Probably no one would have complained if he hadjust cleaned up the code written by the entry level employees, but theexpletives belonged to the technical lead of our group who was alsoone of the few distinguished Fellows at the company.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;a href="" name="N1014B"&gt;&lt;/a&gt;&lt;a href="" name="Do+No+Harm"&gt;&lt;/a&gt;&lt;div class="h4"&gt;&lt;h4&gt;Do No Harm&lt;/h4&gt;"Refactoring" is all the rage, now, but programmers often take it tomean any code cleanup or redesign. The trick is in reorganizing codefor the better without breaking anything. If you break existingfunctionality in the name of progress, you're sending one of twomessages: 1) your time is more important than everyone else's, or 2)you're incapable of touching code without breaking it.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I had one particularly contentious coworker who decided to reimplementthe parser in our system but left the code in an unbuildable state byeveryone else. I asked him to revert his changes and then found thecode was buildable but not runnable - asked about it, he replied thathe removed the parser entirely "per your request". Not a team player.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Keeping the code functioning takes some patience and extra work - youhave to be diligent about regression-testing your work and chances areyou'll need to keep old code and interfaces around for a while as youmigrate functionality to your new code. But for everyone to work withthe same codebase, that's what you have to do.&lt;br /&gt;&lt;/div&gt;&lt;a href="" name="N10161"&gt;&lt;/a&gt;&lt;a href="" name="Find+the+Bottleneck"&gt;&lt;/a&gt;&lt;div class="h4"&gt;&lt;h4&gt;Find the Bottleneck&lt;/h4&gt;People always talk about "optimization", but that isn't really acorrect word. We're rarely shooting for the optimum - instead, we makeimprovements and tradeoffs to achieve good-enough performance.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I was asked in a phone interview with Google how I would search for anumber in an array of ordered numbers. Obviously, the questioner wasasking for a CS 101 answer - binary search. But in real life, I wouldprobably do the "wrong" thing - search the array from beginning toend. There's no point in taking twice the time to write twice as muchcode that has to be maintained and debugged if the applicationperformance is good enough, and in particular if that piece of code isnot the bottleneck in the application. (And I seriously doubt you'dhave that data laid out linearly in a fixed array like that if it wasthe bottleneck)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;If you do need to optimize for speed or space in youapplication, attacking anything other than the bottleneck is a wasteof time.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;a href="" name="N10178" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/a&gt;&lt;a href="" name="Manage+Thyself" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/a&gt;&lt;div class="h3" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;h3&gt;Manage Thyself&lt;/h3&gt;You probably have a lot of complaints about your boss being a lousymanager, and you're probably right. So you have to be your ownmanager. Even if you have a decent boss, he's not going to standbehind you telling you what to type and how fast (although I'm sure many would like to).&lt;br /&gt;&lt;a href="" name="N10181"&gt;&lt;/a&gt;&lt;a href="" name="Are+We+There,+Yet?"&gt;&lt;/a&gt;&lt;div class="h4"&gt;&lt;h4&gt;Are We There, Yet?&lt;/h4&gt;Programmers are notoriously inadequate at providing useful scheduleestimates. I think this is a bad rap, since management, left to theirown devices, often make even worse predictions, and unwelcome newsfrom engineers is often ignored. (A common theme in any engineeringdisaster). But still, awareness of the schedule is critical toactually getting the project done on time.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;On one commercial software project, some of my coworkers wereblissfully unaware of the product release date - one inquired whetherit had been released already, another was surprised to find it wasgoing out in a few days.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The worst, and most common, schedule estimate that a programmer cangive is "it should just take a couple of days". Every time I hearthat, even from my own mouth, I wince.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The president of a graphics software company really wanted support forVRML (at the time it was the Next Big Thing) included in the productwe were releasing in two months.  He probably figured (correctly) thatI would resist starting a new feature, so he went to another engineerand got the answer he wanted: "a couple of days". Two days later, I toldthe presidentwe-just-wasted-two-days-of-his-time-and-mine-while-there-are-two-hundred-high-priority-bugs-to-fix,which he found to be a persuasive argument. (postscript: VRML didn'texactly take off like gangbusters)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;And then there are programmers who are unable to come up with timeestimates at all. But there's no need to get thrown off by the fuzzynature of the request - it is an estimate after all, and in fact youshould avoid using formulas. If you're an experienced engineer, youknow how long comparable tasks have taken you before, and if you'renot experienced, you can ask someone who is.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A smart friend of mine who was often assigned to developingexperimental prototypes asked me, "how can you schedule research". Ithink it was a rhetorical question, but even pure researchers haveschedules. Someone is paying them and expects results, even if it's anumber of demos or published papers in a certain timespan. And if youreally don't have the foggiest idea how long something will take, thenyou're the wrong person for the task.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Sometimes programmers are reluctant to commit to a schedule becausethey're afraid of the accountability. It is true, in this imperfectworld, managers will try to bargain you down on schedules, politicalfactions may saddle you with tough or unrealistic schedules in thehopes that you will fail, and it is a sadly common story that afteryou commit to a schedule, you don't get everything you need.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I had one boss who after asking for an estimated completion timewould say, "do you promise?" But ask for a commitment on the requiredhardware and other dependencies, and it was "I'll try."&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;All I can say is, stick to your guns and give a realisticprediction. Any concessions should be based on pragmatic tradeoffs betweenfeatures and resources. Be clear about the assumptions, dependenciesand resources on which the schedule is based, and get it written downsomewhere so you can jog defective memories later.&lt;br /&gt;&lt;/div&gt;&lt;a href="" name="N101BB"&gt;&lt;/a&gt;&lt;a href="" name="Plan+Your+Progress"&gt;&lt;/a&gt;&lt;div class="h4"&gt;&lt;h4&gt;Plan Your Progress&lt;/h4&gt;You wouldn't just hop into your car before deciding where you want togo, right? And probably you have a route in mind before you startdriving, too. Similarly, before you sit down at our computer, youshould know what you want to accomplish that day and have some ideahow.&lt;br /&gt;Distractions will come up day-to-day, so you won't always be able toaccomplish what you want. And contrary to those who treat softwareengineering groups as vending machines (they would probaby shake usvigorously if they could) some tasks take more than a day. So thinkabout what you want to accomplish by Friday, and if you do, then youcan enjoy the weekend that much more.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;a href="" name="N101C9" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/a&gt;&lt;a href="" name="Continuous+Education" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/a&gt;&lt;div class="h3" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;h3&gt;Continuous Education&lt;/h3&gt;A corporate soccer team member once asked me, as we were lacing up ourcleats, "what's the secret to C programming?" If there was such asecret, I'd be hawking it on late night TV along with ab machines andhow to get rich in real estate. Sorry, there's no shortcut - you haveto learn and practice and make some mistakes. And you don'tnecessarily have to rely on corporate training or going back to school- there are plenty of (inter)national and local professional groups,books, and of course, the Internet.&lt;br /&gt;&lt;a href="" name="N101D2"&gt;&lt;/a&gt;&lt;a href="" name="It's+Science"&gt;&lt;/a&gt;&lt;div class="h4"&gt;&lt;h4&gt;It's Science&lt;/h4&gt;It's called "computer science" for a reason. It's easy (maybe tooeasy) for anyone to to start programming, without a formal computerscience education. In particular, those from other engineering and sciencedisciplines can pick up programming quickly and make a goodliving. But to effectively tackle non-trivial tasks, you need to knowthe inherent capabilities and limitations of software and recognizeprior work, so you don't waste time reinventing the wheel, badly. Youdon't have to know everything under the sun, but you should have atleast a cursory familiarity with many areas and be prepared to do someadditional research as necessary.&lt;br /&gt;For example, anyone who creates a new file format should know something aboutcompilers. I don't mean all the code-generation optimizations likeloop unrolling, but the basic issues and various phases of compilationand most of all the importance of specifying the tokenization andgrammar. Nowadays, most people by default will use XML, and that's agood thing, but before then it was typical to cobble up some textformat, point to some generated sample files as documentation, andthen everyone else who wrote another parser would cobble something upthat would read in some files but not all. In the problematic casesthen you could point fingers either way - either the reader is bad orthe writer is bad. Whichever product is more popular wins.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;One of my pet peeves with the 3D graphics industry is the plethora ofill-defined file formats. When I implemented an OBJ file parser for a3D content creation product, each exporting product that Itested against generated markedly different files, using differentwhitespace and newline conventions, for example. In refreshingcontrast, a coworker of mine fresh out of school designed anew game interchange format using a grammar and lexerspecification. (These days, it's not much of an issue anymore - mostnew graphics file formats seem to be based on XML.)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;And if anything differentiates programmers who can just put togethersimple scripts and user interfaces and those who can tackle realproblems, it's an understanding of computational complexity, i.e. howalgorithms scale with the size of the problem. Every programmer shouldknow basic complexity terminology and have a general knowledge of thecomplexity of common problems.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;My first job was in computer-aided semiconductor design, which has alot scalability issues, including some NP-complete (essentiallyintractable) problems. But some of the engineers would run aroundexcitedly saying "it's the traveling salesman problem!" every timethey saw a problem that couldn't be solved in linear time, and inother cases we boasted of "linear-time" algorithms which probablymeant linear-time most-of-the-time. Or some of the time.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;a href="" name="N101F4"&gt;&lt;/a&gt;&lt;a href="" name="Free+Beer,+Free+Speech,+Free+Software"&gt;&lt;/a&gt;&lt;div class="h4"&gt;&lt;h4&gt;Free Beer, Free Speech, Free Software&lt;/h4&gt;OK, there's no free beer, but this is a good time to be a programmer(well, recession and outsourcing controversy notwithstanding) - justabout everything you need is on the Internet tutorials, discussionlists, and free software. All you need is the hardware and a broadbandconnection.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;a href="" name="N101FF" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/a&gt;&lt;a href="" name="R-E-S-P-E-C-T" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/a&gt;&lt;h3 style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;R-E-S-P-E-C-T&lt;/h3&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;One requirement for being an effective software engineer is to betaken seriously. You need to have the respect of your peers andmanagers, at least for your technical capabilities, to have controlover your own work and influence over others.&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;a href="" name="N10208" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/a&gt;&lt;a href="" name="There+is+Such+a+Thing+as+a+Stupid+Question" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/a&gt;&lt;div class="h4" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;h4&gt;There is Such a Thing as a Stupid Question&lt;/h4&gt;Really, there are lots of stupid questions. Asking intelligentquestions that enhance others' respect for you is a professionalskill.  A good question that exposes unresolved issues tells peoplethat you know your stuff and you're sharp enough to catch all theimplications. Asking for clarification about a specification shows youknow how to find and read the spec and your ability to detectambiguities.&lt;br /&gt;If you don't get any answers to your question, chances are there'ssomething wrong with the question, so don't just repeat it. Ask thequestion differently, with more specifics, or more background. Ifyou've been on the other end of a technical support line or even justspent time on discussion lists answering newbie questions, you'llappreciate the consideration.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I pride myself on cultivating good relations with developer supportstaff by submitting elaborate bug reports and precise questions. But Ido remember one lapse where I tossed out something along the lines of"What's the deal with that issue that came up several weeks ago?" Youcan imagine the prickly response - "What do you mean by what's thedeal, and what issue are you talking about?"&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;It doesn't pay to be rude, especially if you're essentially asking forfree tutoring or consulting on a discussion list.  Even if you'reasking under the auspices of a support contract, irritating yoursupport contact isn't going to help you in the long term.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I used to take pains to explain to belligerent newbies why theirquestions didn't make sense or what they were fundamentally doingwrong. Now, the bozo filter kicks in quickly - one "All I want to knowis....", and they're ignored.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Let everyone know that you read the documentation and googled thesubject. Besides avoiding the inevitable "RTFM" and "Google is yourfriend" responses, this shows you've done your homework and those whowant to be of assistance don't have to search through the sameresources. If you do expect them to search through those resources foryou, then you're saying your time is more important than theirs, andyou are just one more perpetrator of the "tragedy of the commons".&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;a href="" name="N1022D" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/a&gt;&lt;a href="" name="There+is+Such+a+Thing+as+a+Stupid+Answer" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/a&gt;&lt;h4 style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;There is Such a Thing as a Stupid Answer&lt;/h4&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;If you're going to act like you know what you're talking about, youreally better know what you're talking about. Engineers sometimescommunicate more to show off their own knowledge rather than to inform(although, if you can do both, kudos to you). This is often inflictedin employment interviews, under the guise of "finding out how youthink" the candidate is asked inane puzzle questions. This canbackfire, though, if the candidate has any self respect.&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;ul style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;li&gt;One CTO interviewed me over the phone by asking me to sketch out theresulting stack frame from a C++ compilation and then report theresult back to him verbally. We went through it step by step and everytime I gave him a correct answer he asked me to give a wrong answerinstead so we could go over why that choice wouldn't work. I couldn'ttell if we were trying to demonstrate how smart I was or how smart hewas.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;There's also the blame game. As an engineer, you can't rely on yourmoney and looks - all you've got is your credibility. So if you make amistake - 'fess up.&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;ul style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;li&gt;I had the privilege of working with a senior engineer who was neverwrong. When his Java code was crashing on multiprocessor systems, itwas Sun's bug. When I took over the code and pointed out the UI codewas not supposed to run in multiple threads, he insisted there wasonly one thread. When I listed the seven threads (that I could find)in the code, he agreed I shouldn't have all those threads and I'dbetter fix it. He programmed in that fashion too - hedidn't fix any bugs, he just covered them up with more code.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-8375779679066489472?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/8375779679066489472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2012/01/best-habits-of-highly-effective.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/8375779679066489472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/8375779679066489472'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2012/01/best-habits-of-highly-effective.html' title='Best Habits of Highly Effective Programmers'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-6995938635890707533</id><published>2012-01-21T10:03:00.002+05:30</published><updated>2012-01-21T10:03:56.316+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='writing programs...'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='Coding'/><category scheme='http://www.blogger.com/atom/ns#' term='software manaagement'/><category scheme='http://www.blogger.com/atom/ns#' term='softwaredevelopement'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Very Important Things to consider while writing programs in software development</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;Every day, a software project dies.  Some die a slow, painful, expensive, death.  Others die a quick, not painless, and relatively embarrassing death . As Software Engineers, we never want our own projects to die. As individual contributors the livelihood of our projects are often times outside the realm of our control. At the same time, there are many things that are within our control that can help the projects that we work on be a success.&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;  This is a list of things to consider while writing programs in software development— habits that when practiced, will not guarantee success in a software project…but will greatly limit the possibility for failure.&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;strong&gt;Learn from your neighbor&lt;/strong&gt; – It doesn’t matter if your neighbor is a Junior Programmer or the CTO – run your ideas past them and see &lt;strong&gt;what they think&lt;/strong&gt;. If your neighbor has more expertise then you, then they may have some tried and true advice to get you past the roadblock you’ve been hitting in your code for the last hour.  If they are less experienced, then challenging them with a complex problem and discussing it with them may help grow &lt;strong&gt;their expertise&lt;/strong&gt; — something that will surely help your team in the long run.&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;strong&gt;Keep it simple&lt;/strong&gt; – This is so easy to say, yet so &lt;strong&gt;hard to do&lt;/strong&gt;. This is the one item that I have to constantly remind myself of when developing software — Software geeks often generate their own requirements without even realizing it (‘Example:  Oh, I bet they would like it if they could do this this way OR that way!’). &lt;a href="http://en.wikipedia.org/wiki/Antoine_de_Saint_Exup%C3%A9ry" target="_blank"&gt;Antoine de Saint-Exupery&lt;/a&gt; said it best – “A designer knows he has achieved perfection not when there is nothing left to add, but when there is &lt;strong&gt;nothing left to take away&lt;/strong&gt;”  – Ask yourself each day – ‘what can I remove from the software and still maintain the essence?’ – This alone will get you heads above the rest.&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;strong&gt;Your code must speak the same language as your client &lt;/strong&gt;- I’ve been reading bits and pieces of the book &lt;a href="http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215" target="_blank"&gt;Domain-Driven Design&lt;/a&gt; . The one main message I am taking away is that the language your code speaks and the language your customer speaks &lt;strong&gt;need to be one and the same&lt;/strong&gt;. If your client keeps talking about how the ‘Policy’ can be sold by a ‘Salesperson’, then maybe you should name your classes ‘Policy’ and ‘Salesperson’, and name your method ‘sell’ not ‘widgetA’, ‘thingB’, and ‘update’ (OK – this is very over-simplified…but the point is that your code will &lt;strong&gt;ROT fast&lt;/strong&gt; if you need to go through multiple layers of translation to understand the changing requirements…let your code be the voice of your customer!)&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;strong&gt;Water your brain&lt;/strong&gt; – If you aren’t reading reference books to keep up to date, then you aren’t doing your job as a Rockstar Software Engineer. I don’t care how sweet your code is…if you can’t pick up a few books a year written by the software gods (even if it’s just for a quick refresher) – then you aren’t doing your team any favors. There’s plenty of great books out there to read (and plenty of crappy ones too — so be careful).  Two books that I like to read at least once a year are: &lt;a href="http://www.amazon.com/Smalltalk-Best-Practice-Patterns-Kent/dp/013476904X" target="_blank"&gt;Smalltalk Best Practice Patterns&lt;/a&gt; and &lt;a href="http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1232075232&amp;amp;sr=8-1" target="_blank"&gt;Design Patterns&lt;/a&gt; — yes I know, very old school, but there are timeless nuggets of information within each! Recent books I’ve read or are reading include the Domain-Driven Design mentioned above and another Kent Beck book, &lt;a href="http://www.amazon.com/Implementation-Patterns-Addison-Wesley-Signature-Kent/dp/0321413091/ref=sr_1_2?ie=UTF8&amp;amp;s=books&amp;amp;qid=1232075363&amp;amp;sr=1-2" target="_blank"&gt;Implementation Patterns&lt;/a&gt;. I’m always looking for new books — what is in your library?&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;strong&gt;Test first &lt;/strong&gt;- Sorry to break the news, but test-driven development is not a buzz word…it’s something you need to do. If nothing else, it will &lt;strong&gt;force&lt;/strong&gt; you to Keep it Simple. If you write the tests first, you can define the criteria for success up front, therefore providing you with a finish line — when the tests pass, you’re done. Without a finish line, it is so easy to keep running….and running and running, until you have implemented what you think should be implemented…not what the &lt;strong&gt;customer needs&lt;/strong&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/span&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;strong&gt;Introduce your code to your team &lt;/strong&gt;- If you work in an environment where there is shared code ownership, this is incredibly important. When you are working on something that you know no one else on the team is familiar with, &lt;strong&gt;review the code with them when you make changes&lt;/strong&gt;. This can accomplish several things at once. First, When you are on vacation without a cell phone, your team will know how to fix your wacky code – We’ve all been here… The last thing you want is to have a message from a co-worker on your hotel room phone in Mexico saying that all hell has broken loose! Secondly, the best brain to have on a software problem is the one that isn’t biased towards a solution. If you wrote the code, you are already biased — you think it is the best way to solve the problem, whether you like it or not. A fresh brain can point out the obvious ways to do it better — and that is a good thing for your team (even if it hurts your own ego a little bit).&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-6995938635890707533?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/6995938635890707533/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2012/01/very-important-things-to-consider-while.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/6995938635890707533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/6995938635890707533'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2012/01/very-important-things-to-consider-while.html' title='Very Important Things to consider while writing programs in software development'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-4084134376924030568</id><published>2012-01-16T19:14:00.000+05:30</published><updated>2012-01-16T19:14:29.886+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='packages'/><category scheme='http://www.blogger.com/atom/ns#' term='load applications'/><category scheme='http://www.blogger.com/atom/ns#' term='applications'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Get installed Applications with Details</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;AIM:&amp;nbsp; To retrieve all installed apps with the application name, package name, version-number and -code as well as the icons.&lt;br /&gt;Classes:&amp;nbsp; method &lt;code&gt;getPackages()&lt;/code&gt; returns an ArrayList with all the apps.&lt;br /&gt;Code snippet:&lt;br /&gt; &lt;br /&gt;class PackageInfoData{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private String appname = "";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private String pname = "";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private String versionName = "";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private int versionCode = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private Drawable icon;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void getInstalledPackages() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ArrayList&amp;lt;PackageInfoData&amp;gt; installedApps = getInstalledApps(false); /* false = no system packages */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i=0; i&amp;lt;installedApps.size(); i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.i("Instlled app","APp Name:"+installedApps.get(i).appname+"package:"+installedApps.get(i).pname);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return installedApps ;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private ArrayList&amp;lt;PackageInfoData&amp;gt; getInstalledApps(boolean getSysPackages) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ArrayList&amp;lt;PackageInfoData&amp;gt; res = new ArrayList&amp;lt;PackageInfoData&amp;gt;();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;PackageInfo&amp;gt; packs = getPackageManager().getInstalledPackages(0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(int i=0;i&amp;lt;packs.size();i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PackageInfo p = packs.get(i);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((!getSysPackages) &amp;amp;&amp;amp; (p.versionName == null)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; continue ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PackageInfoDatanewInfo = new PackageInfoData();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newInfo.appname = p.applicationInfo.loadLabel(getPackageManager()).toString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newInfo.pname = p.packageName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newInfo.versionName = p.versionName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newInfo.versionCode = p.versionCode;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newInfo.icon = p.applicationInfo.loadIcon(getPackageManager());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; res.add(newInfo);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return res; &lt;br /&gt;}&lt;br /&gt; &lt;br /&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-4084134376924030568?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/4084134376924030568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2012/01/get-installed-applications-with-details.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/4084134376924030568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/4084134376924030568'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2012/01/get-installed-applications-with-details.html' title='Get installed Applications with Details'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-6624798229972474909</id><published>2011-12-15T13:05:00.000+05:30</published><updated>2011-12-15T13:05:18.357+05:30</updated><title type='text'>Top 25 Companies for Work-Life Balance in 2011</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;When it comes to balancing work with personal life see what companies rate the highest&lt;br /&gt;according to employees.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Top 25 Winners &lt;/b&gt;&lt;br /&gt;Ratings Scale: 5.0 - 4.01 = “Very Satisfied” 4.0 - 3.51 = “Satisfied”&lt;br /&gt;Note: All ratings are for 04/01/10 - 03/31/11&lt;br /&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;How the Top 25 Were Selected&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The Top Companies for Work-Life Balance list is based on employee feedback shared in company reviews on Glassdoor. Each company&lt;br /&gt;review survey consists of 20 questions that capture employees’ attitudes about workplace factors, including Senior Leadership, Communication,&lt;br /&gt;Employee Morale, Career Opportunities, Work-Life Balance, Compensation and Benefits, Recognition and Feedback, and Fairness and&lt;br /&gt;Respect. The final ranking of each company on this list was determined by its overall work-life balance rating for the 12-month period ending&lt;br /&gt;March 31, 2011.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-KhgciZQmqbk/TumiSq7oZxI/AAAAAAAAA7s/QIA7ZFz92W0/s1600/untitled.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-KhgciZQmqbk/TumiSq7oZxI/AAAAAAAAA7s/QIA7ZFz92W0/s1600/untitled.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Read more &lt;a href="http://www.glassdoor.com/Top-Companies-for-Work-Life-Balance-LST_KQ0,35.htm" target="_blank"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-6624798229972474909?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/6624798229972474909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2011/12/top-25-companies-for-work-life-balance.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/6624798229972474909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/6624798229972474909'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2011/12/top-25-companies-for-work-life-balance.html' title='Top 25 Companies for Work-Life Balance in 2011'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-KhgciZQmqbk/TumiSq7oZxI/AAAAAAAAA7s/QIA7ZFz92W0/s72-c/untitled.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-608915669832908222</id><published>2011-12-15T12:44:00.000+05:30</published><updated>2011-12-15T12:44:01.662+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Best Places to Work'/><category scheme='http://www.blogger.com/atom/ns#' term='Glassdoor'/><category scheme='http://www.blogger.com/atom/ns#' term='2012 Best Places to Work – Employees’ Choice Awards'/><title type='text'>2012 Best Places to Work – Employees’ Choice Awards</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;h1&gt;&lt;span style="font-size: small;"&gt;Best Places to Work – Employees' Choice Awards&lt;/span&gt;&lt;/h1&gt;&lt;a href="http://www.glassdoor.com/" target="_blank"&gt;Glassdoor &lt;/a&gt;is excited to announce our fourth annual &lt;strong&gt;Employees' Choice Awards&lt;/strong&gt; for Best Places to Work. Our Top 50 winners were selected by the people who know these companies best — their employees! based on the input of those people who know these companies best — the employees! Criteria include employer ratings, such as career advancement and compensation, and CEO approval ratings. The ranking is determined based on the results of a 20-question survey that captures employees’ attitudes about: Career Opportunities, Communication, Compensation &amp;amp; Benefits, Employee Morale, Recognition &amp;amp; Feedback, Senior Leadership, Work/Life Balance, and Fairness &amp;amp; Respect. &lt;br /&gt;&lt;br /&gt;Below is the list of top 50 Winners for the year 2012.&lt;br /&gt;&lt;br /&gt;Employer Ratings Scale: 3.51-4.0 = “Satisfied” 4.01-5.0 = “Very Satisfied”&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-OahVUfSFrrs/Tumdh5NsY9I/AAAAAAAAA7g/0cxyiwo6lFY/s1600/Copy+of+g50.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-OahVUfSFrrs/Tumdh5NsY9I/AAAAAAAAA7g/0cxyiwo6lFY/s1600/Copy+of+g50.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-v8JyjLRHavc/Tumdflu0YaI/AAAAAAAAA7Y/q0hgHjyJlzI/s1600/g50.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-v8JyjLRHavc/Tumdflu0YaI/AAAAAAAAA7Y/q0hgHjyJlzI/s1600/g50.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Read more &lt;a href="http://www.glassdoor.com/Best-Places-to-Work-LST_KQ0,19.htm" target="_blank"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-608915669832908222?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/608915669832908222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2011/12/2012-best-places-to-work-employees.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/608915669832908222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/608915669832908222'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2011/12/2012-best-places-to-work-employees.html' title='2012 Best Places to Work – Employees’ Choice Awards'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-OahVUfSFrrs/Tumdh5NsY9I/AAAAAAAAA7g/0cxyiwo6lFY/s72-c/Copy+of+g50.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-1086002215053957684</id><published>2011-12-14T17:50:00.000+05:30</published><updated>2011-12-14T17:50:39.230+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='delete phonebook contacts'/><category scheme='http://www.blogger.com/atom/ns#' term='delete all contacts from android'/><category scheme='http://www.blogger.com/atom/ns#' term='ContactsContract.Contacts.CONTENT_URI'/><category scheme='http://www.blogger.com/atom/ns#' term='delete all contacts'/><category scheme='http://www.blogger.com/atom/ns#' term='delete  all contacts from phone book permenently'/><title type='text'>Delete the whole Contacts from the android mobile</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;AIM:&lt;br /&gt;To delete all contacts from the contacts of android phone.&lt;br /&gt;Solution:&lt;br /&gt;By executing the below lines will delete&amp;nbsp; all contacts from phone book permenently.&lt;br /&gt;&lt;br /&gt;Cursor cur = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null,null, null, null);&lt;br /&gt;while (cur.moveToNext()) {&lt;br /&gt;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String lookupKey = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI,lookupKey);&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("The uri is " + uri.toString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int deletedContacts=cr.delete(uri, null, null);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; log.i("","No.of deleted Contacts: "+deletedContacts);&lt;br /&gt;&amp;nbsp; } catch (Exception e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(e.getStackTrace());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;br /&gt;This works on android 2.2 and above. &lt;br /&gt;Please dont forget to add these permissions in Manifest.xml&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;lt;uses-permission android:name="android.permission.READ_CONTACTS" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;uses-permission android:name="android.permission.WRITE_CONTACTS" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-1086002215053957684?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/1086002215053957684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2011/12/delete-whole-contacts-from-android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/1086002215053957684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/1086002215053957684'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2011/12/delete-whole-contacts-from-android.html' title='Delete the whole Contacts from the android mobile'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-6526402005481913070</id><published>2011-12-14T17:38:00.000+05:30</published><updated>2011-12-14T17:38:45.940+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android apps'/><category scheme='http://www.blogger.com/atom/ns#' term='delete  all call history by a particular number'/><category scheme='http://www.blogger.com/atom/ns#' term='getContentResolver().delete'/><category scheme='http://www.blogger.com/atom/ns#' term='erase call history of android phone.URI for CallLog in 2.2 and above'/><category scheme='http://www.blogger.com/atom/ns#' term='delete all call history'/><title type='text'>delete  all call history by a particular number in android phone</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;AIM:&lt;br /&gt;To delete all call history associated with a particular number from the original call history of android phone.&lt;br /&gt;Solution:&lt;br /&gt;By executing the below lines will delete&amp;nbsp; all call history by a particular number will gets erased permenently.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String strUriCalls = "content://call_log/calls"; // URI for CallLog in 2.2 and above&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Uri UriCalls = Uri.parse(strUriCalls);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String queryString = "NUMBER='" + number + "'";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log.v("Number", queryString);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int noofDeletedRows = getContentResolver().delete(UriCalls, queryString, null);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log.v("Number", "Deleted Rows deleted"+noofDeletedRows +" with the specified number:" + number);&lt;br /&gt;Works on version 2.2 and above.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-6526402005481913070?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/6526402005481913070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2011/12/delete-all-call-history-by-particular.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/6526402005481913070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/6526402005481913070'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2011/12/delete-all-call-history-by-particular.html' title='delete  all call history by a particular number in android phone'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-7780758450923386472</id><published>2011-12-14T17:24:00.000+05:30</published><updated>2011-12-14T17:24:16.756+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Removes the specified Call row from the CallLog in ANDROID'/><category scheme='http://www.blogger.com/atom/ns#' term='Removes the specified Call row'/><category scheme='http://www.blogger.com/atom/ns#' term='specified Call row from the CallLog in ANDROID'/><title type='text'>Removes the specified Call row permently from the CallLog in ANDROID</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;AIM : To removes the specified Call row from the Call Log in ANDROID&lt;br /&gt;Solution:&lt;br /&gt;The following method does the function. It requires "CALL LOG ID" of a particular callLog row.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String strUriCalls = "content://call_log/calls";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Uri UriCalls = Uri.parse(strUriCalls);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String queryString = Calls._ID + "='" + rowID + "'";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log.v("Number", queryString);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int i = getContentResolver().delete(UriCalls, queryString, null);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log.v("Number", "Deleted Rows:" + i);&lt;br /&gt;We Can read the CALL LOG ID of&amp;nbsp; particular row(call) in android call hisory.&lt;br /&gt;By using the following lines.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Cursor c = contentResolver.query(Uri.parse("content://call_log/calls"),null,null, null,android.provider.CallLog.Calls.DEFAULT_SORT_ORDER); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // Retrieve the column-indixes of phoneNumber, date and calltype&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int numberColumn = c.getColumnIndex(android.provider.CallLog.Calls.NUMBER);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int dateColumn = c.getColumnIndex(android.provider.CallLog.Calls.DATE);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // type can be: Incoming, Outgoing or Missed&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int typeColumn = c.getColumnIndex(android.provider.CallLog.Calls.TYPE);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int durationColumn = c.getColumnIndex(android.provider.CallLog.Calls.DURATION);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // Will hold the calls, available to the cursor&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // Loop through all entries the cursor provides to us.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(c.moveToFirst()){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; do{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String callerPhoneNumber = c.getString(numberColumn);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Long callDate = c.getLong(dateColumn);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int callType = c.getInt(typeColumn);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int duration = c.getInt(durationColumn);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch(callType){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case android.provider.CallLog.Calls.INCOMING_TYPE:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case android.provider.CallLog.Calls.MISSED_TYPE: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case android.provider.CallLog.Calls.OUTGOING_TYPE:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String cName=c.getString(c.getColumnIndex(android.provider.CallLog.Calls.CACHED_NAME));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String cId=c.getString(c.getColumnIndex(android.provider.CallLog.Calls._ID));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }while(c.moveToNext());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SImilarly,you can read all properties of a calllog programatically.&lt;br /&gt;It works on all above 2.2 + versions.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-7780758450923386472?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/7780758450923386472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2011/12/removes-specified-call-row-permently.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/7780758450923386472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/7780758450923386472'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2011/12/removes-specified-call-row-permently.html' title='Removes the specified Call row permently from the CallLog in ANDROID'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-6068988408834726632</id><published>2011-12-14T17:04:00.000+05:30</published><updated>2011-12-14T17:04:34.950+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Marquee TextView android'/><category scheme='http://www.blogger.com/atom/ns#' term='Marquee TextView'/><category scheme='http://www.blogger.com/atom/ns#' term='Create an auto-Scrolling Marquee TextView in android'/><category scheme='http://www.blogger.com/atom/ns#' term='auto-Scrolling Marquee TextView in android'/><category scheme='http://www.blogger.com/atom/ns#' term='auto-Scrolling Marquee TextView'/><title type='text'>Create an auto-Scrolling Marquee TextView in android</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;AIM:&lt;br /&gt;Create a&amp;nbsp; textview that scroll text if text is not fit in the specified width,without need to focus just like Android Market app description screen.&lt;br /&gt;&lt;br /&gt;Solution:&lt;br /&gt;This solution able to scroll text inside a TextView without it required to be focused. For some strange reason there isn't an easy way to do this natively.&lt;br /&gt;&lt;br /&gt;Generally, textview will marque the text when it is focused only.&lt;br /&gt;By using the below code,the textview will automatically scroll even without focus to textview.&lt;br /&gt;&lt;br /&gt;Step 1: Create an autoscrolltextview by extending textview (ScrollingTextView.java)&lt;br /&gt;public class ScrollingTextView extends TextView {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public ScrollingTextView(Context context, AttributeSet attrs,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int defStyle) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; super(context, attrs, defStyle);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public ScrollingTextView(Context context, AttributeSet attrs) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super(context, attrs);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public ScrollingTextView(Context context) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super(context);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void onFocusChanged(boolean focused, int direction,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Rect previouslyFocusedRect) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (focused) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super.onFocusChanged(focused, direction, previouslyFocusedRect);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onWindowFocusChanged(boolean focused) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (focused) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super.onWindowFocusChanged(focused);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean isFocused() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Step 2:&amp;nbsp; Use this XML tag in your XML layout.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;com.test.autoscroll.ScrollingTextView&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id="@+id/actionbar_title"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:paddingLeft="10dip"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:paddingRight="10dip"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:textSize="16dip"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:textStyle="bold"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:lines="1"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:scrollHorizontally="true"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:ellipsize="marquee"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="autoscrollable textview without focus to textview...working...."&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:marqueeRepeatLimit="marquee_forever"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;gt;&lt;br /&gt;This will get you the scrolling marquee behavior desired out of the TextView control!&lt;br /&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-6068988408834726632?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/6068988408834726632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2011/12/create-auto-scrolling-marquee-textview.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/6068988408834726632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/6068988408834726632'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2011/12/create-auto-scrolling-marquee-textview.html' title='Create an auto-Scrolling Marquee TextView in android'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>0</thr:total><georss:featurename>India</georss:featurename><georss:point>20.593684 78.96288000000004</georss:point><georss:box>6.213675 64.34629550000004 34.973693 93.57946450000004</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-7259704862888378802</id><published>2011-11-25T12:08:00.000+05:30</published><updated>2011-11-25T12:08:02.779+05:30</updated><title type='text'>Create android application with no application Icon</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;AIM: To create an app with no icon and run in background without any activity required.&lt;br /&gt;&lt;br /&gt;Solution:&lt;br /&gt;&lt;br /&gt;When you want to track the usage of the mobile or gather some data without user knowledge,this might help you.&lt;br /&gt;&lt;br /&gt;Step1: Create an application with No icon.&lt;br /&gt;&amp;nbsp;Normally,an activity is declared as follows in manifest.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;activity&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:label="@string/app_name"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:name="org.security.tracker.Tracker-activity" &amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;intent-filter &amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;action android:name="android.intent.action.MAIN" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;category android:name="android.intent.category.LAUNCHER" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/intent-filter&amp;gt;&lt;br /&gt;Remove the Category TAG ,you wont get app icon anymore. &lt;br /&gt;Now,you don't need activity anymore. so remove this segment.&lt;br /&gt;BUt you might think,how the app will run without any trigger or what is the starting point of the application.&lt;br /&gt;This is the solution.&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Start the Service if applicable on boot --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;receiver android:name="org.security.tracker.ServiceStarter" &amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;intent-filter &amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;action android:name="android.intent.action.BOOT_COMPLETED" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/intent-filter&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/receiver&amp;gt;&lt;br /&gt;&lt;br /&gt;THis triggers your code that written in Receiver there by you can run service to implement your thoughts.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;lt;service android:name="org.security.tracker.serviceCode" /&amp;gt;&lt;br /&gt;&lt;br /&gt;You need to add this permission,&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /&amp;gt;&lt;br /&gt;&lt;br /&gt;Your code runs when the phone reboots only.&lt;br /&gt;&lt;br /&gt;Step 2. Write your code&lt;br /&gt;&lt;br /&gt;On Reboot,the recevier will fire ,there you can start your service.&lt;br /&gt;&lt;br /&gt;class ServiceStarter extends BroadcastReceiver {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onReceive(Context _context, Intent _intent) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Intent i = new Intent("com.prac.test.MyPersistingService");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; i.setClass(_context, ServiceCode.class);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _context.startService(i);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Thats it.&lt;br /&gt;&lt;br /&gt;THis enables the app runs in background and it wont have any app icon.the service always does its function..&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-7259704862888378802?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/7259704862888378802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2011/11/create-android-application-with-no.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/7259704862888378802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/7259704862888378802'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2011/11/create-android-application-with-no.html' title='Create android application with no application Icon'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-7180969631890661176</id><published>2011-11-25T11:44:00.000+05:30</published><updated>2011-11-25T11:44:13.428+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android apps'/><category scheme='http://www.blogger.com/atom/ns#' term='android online meeting'/><category scheme='http://www.blogger.com/atom/ns#' term='Online Meetings'/><category scheme='http://www.blogger.com/atom/ns#' term='mikogo'/><title type='text'>Free Android  apps for Online Meetings:Mikogo</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Mikogo has released its iOS and Android apps enabling people to attend online meetings from their mobile phones or tablets. Designed for participating in web presentations or meetings, the apps are now available online as a free download.&lt;br /&gt;BeamYourScreen has announced the release of its mobile apps for its desktop sharing software, Mikogo. Mikogo enables businesses to organize online meetings live over the Web and with this new release, now offers a solution for users to participate in meetings while on the go, direct from their mobile phones or tablets.&lt;br /&gt;The apps are designed for participating in online meetings and presentations, specifically for those who cannot attend an online meeting from their desktop computer. When unable to make it to their laptop or desktop computer for an online meeting, a traveling businessperson can participate effortlessly and view all the meeting content in real-time on the screen of their mobile device.&lt;br /&gt;Users simply download the free app to their phone or tablet. They are then ready to join a Mikogo online meeting from anywhere, assuming they have access to a wireless Internet or 3G network connection. From their laptop or desktop computer, the online meeting presenter then starts a Mikogo session and receives the unique Mikogo session ID. Meeting participants then enter this session ID into their mobile app and will be instantly joined to the online meeting. They can then view the screen of the presenter live from their mobile phone or tablet.&lt;br /&gt;&lt;br /&gt;Both the iOS and Android apps are available:  &lt;a href="http://www.mikogo.com/download/mobile-download/" title="http://www.mikogo.com/download/mobile-download/"&gt;http://www.mikogo.com/download&lt;wbr&gt;&lt;/wbr&gt;/mobile-download/&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;This post&amp;nbsp; is&amp;nbsp; a copy of post found at http://www.helloandroid.com/content/mobivention-turns-android-phones-pocket-mirrors.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-7180969631890661176?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/7180969631890661176/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2011/11/free-android-apps-for-online.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/7180969631890661176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/7180969631890661176'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2011/11/free-android-apps-for-online.html' title='Free Android  apps for Online Meetings:Mikogo'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-9179775256649484926</id><published>2011-06-30T08:01:00.000+05:30</published><updated>2011-06-30T08:01:45.578+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='android payments'/><category scheme='http://www.blogger.com/atom/ns#' term='mobile Payments'/><category scheme='http://www.blogger.com/atom/ns#' term='Paypal Mobile Libraries'/><category scheme='http://www.blogger.com/atom/ns#' term='Paypal Android'/><title type='text'>PAYPAL integration in ANDROID applications</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Hi,&lt;br /&gt;&lt;br /&gt;Everybody know about paypal in real time . and this post may be helpful for you in you want to integrate paypal in your android application for any payment processes.&lt;br /&gt;Paypal REleased an API and Library for MObile Integration.&lt;br /&gt;&lt;br /&gt;You can integrate by using PAYPAL Mobile Libaraies.&lt;br /&gt;&lt;a href="http://bit.ly/kLNyhu"&gt;PayPal Mobile Library&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bit.ly/kTT2nD"&gt;PayPal MerchantSetupAdministrationGuide&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bit.ly/iRHO1s"&gt;PayPal sandBOX Document&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://tiny.cc/p8w1o"&gt;PayPal MOBILE library  API document&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;please check out this Paypal Link:&lt;br /&gt;https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&amp;amp;content_ID=developer/howto_api_reference&lt;br /&gt;&lt;br /&gt;Try it once in your applications.&lt;br /&gt;&lt;br /&gt;&lt;input id="gwProxy" type="hidden" /&gt;&lt;!--Session data--&gt;&lt;input id="jsProxy" onclick="if(typeof(jsCall)=='function'){jsCall();}else{setTimeout('jsCall()',500);}" type="hidden" /&gt;&lt;div id="refHTML"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-9179775256649484926?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/9179775256649484926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2011/06/paypal-integration-in-android.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/9179775256649484926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/9179775256649484926'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2011/06/paypal-integration-in-android.html' title='PAYPAL integration in ANDROID applications'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-1203482870434914831</id><published>2011-06-30T07:41:00.000+05:30</published><updated>2011-06-30T07:41:07.667+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='dual screen'/><category scheme='http://www.blogger.com/atom/ns#' term='sprint ECHO'/><category scheme='http://www.blogger.com/atom/ns#' term='dual screen android mobile'/><title type='text'>Sample application for DUAL SCREEN Android Mobile by SPRINT&amp;Kyocera</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;You may aware the concept of DUAL SCREEN Mobile released by Sprint and Kyocera.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-5VtsvgYpmxk/TgvbKaaNGFI/AAAAAAAAAqY/v3Zb3fWZ1QE/s1600/dual.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="307" src="http://3.bp.blogspot.com/-5VtsvgYpmxk/TgvbKaaNGFI/AAAAAAAAAqY/v3Zb3fWZ1QE/s320/dual.bmp" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;If you didn't ,just look at this post. Really nice and cool idea to have two screens on a mobile.&lt;br /&gt;&lt;br /&gt;http://www.echobykyocera.com/features/&lt;br /&gt;&lt;br /&gt;The developer API is released and you can download from this link.&lt;br /&gt;&lt;br /&gt;http://www.mediafire.com/?wqwphhe8ai7r3q0&lt;br /&gt;&lt;br /&gt;You can just start work on this mobile just follow these steps.&lt;br /&gt;&lt;br /&gt;Open AVD manager&lt;br /&gt;Click on Avalible Packages&lt;br /&gt;select THIRD PARTY addon's&lt;br /&gt;You can find Kyocera Addon ,please check the screenshot.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-FjNG7bDDlNs/TgvZ83s50dI/AAAAAAAAAqU/gWF-Varu66o/s1600/dualscreen.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="185" src="http://3.bp.blogspot.com/-FjNG7bDDlNs/TgvZ83s50dI/AAAAAAAAAqU/gWF-Varu66o/s320/dualscreen.bmp" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The following is a sample project that shows how to run in the mobile.&lt;br /&gt;&amp;nbsp; &lt;br /&gt;http://www.mediafire.com/?7yq6zmkz2l90idq&lt;br /&gt;&lt;br /&gt;Have a try at it .&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;input id="gwProxy" type="hidden" /&gt;&lt;!--Session data--&gt;&lt;input id="jsProxy" onclick="if(typeof(jsCall)=='function'){jsCall();}else{setTimeout('jsCall()',500);}" type="hidden" /&gt;&lt;div id="refHTML"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-1203482870434914831?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/1203482870434914831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2011/06/sample-application-for-dual-screen.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/1203482870434914831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/1203482870434914831'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2011/06/sample-application-for-dual-screen.html' title='Sample application for DUAL SCREEN Android Mobile by SPRINT&amp;Kyocera'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-5VtsvgYpmxk/TgvbKaaNGFI/AAAAAAAAAqY/v3Zb3fWZ1QE/s72-c/dual.bmp' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-3879634630442390564</id><published>2011-03-09T19:41:00.000+05:30</published><updated>2011-03-09T19:41:22.551+05:30</updated><title type='text'>Get Current Screen Orientation in ANDROID</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;b&gt;AIM: &amp;nbsp;&lt;/b&gt;Get Current Screen Orientation in ANDROID&lt;br /&gt;&lt;b&gt;Solution:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;The following method does the required functionality.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;public int getScreenOrientation() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;// Query what the orientation currently really is.&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; &amp;nbsp; &amp;nbsp;// The following message is only displayed once.&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; &amp;nbsp; &amp;nbsp; return 1; // Portrait Mode&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; &lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; &amp;nbsp; &amp;nbsp;// The following message is only displayed once.&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; &amp;nbsp; &amp;nbsp; return 2; &amp;nbsp; // Landscape mode&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;return 0;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is simple and effective.&lt;br /&gt;&lt;br /&gt;Please let me know if any.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-3879634630442390564?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/3879634630442390564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2011/03/get-current-screen-orientation-in.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/3879634630442390564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/3879634630442390564'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2011/03/get-current-screen-orientation-in.html' title='Get Current Screen Orientation in ANDROID'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-4423837867655901418</id><published>2011-03-09T13:03:00.000+05:30</published><updated>2011-03-09T13:03:30.303+05:30</updated><title type='text'>Images with Coverflow like animation in ANDROID</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;br /&gt;AIM:&amp;nbsp; To show an array of images in CoverFlow like animation in ANDROID Gallery.&lt;br /&gt;Solution:&lt;br /&gt; We need to create one custom gallery extends Gallery.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;File 1:&amp;nbsp;&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;import android.content.Context;&lt;br /&gt;import android.graphics.Camera;&lt;br /&gt;import android.graphics.Matrix;&lt;br /&gt;import android.util.AttributeSet;&lt;br /&gt;import android.view.View;&lt;br /&gt;import android.view.animation.Transformation;&lt;br /&gt;import android.widget.Gallery;&lt;br /&gt;import android.widget.ImageView;&lt;br /&gt;&lt;br /&gt;public class CoverFlow extends Gallery {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * Graphics Camera used for transforming the matrix of ImageViews&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private Camera mCamera = new Camera();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * The maximum angle the Child ImageView will be rotated by&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */ &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private int mMaxRotationAngle = 60;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * The maximum zoom on the centre Child&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private int mMaxZoom = -120;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * The Centre of the Coverflow&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */ &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private int mCoveflowCenter;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;public CoverFlow(Context context) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;super(context);&lt;br /&gt;&amp;nbsp;&amp;nbsp;this.setStaticTransformationsEnabled(true);&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;public CoverFlow(Context context, AttributeSet attrs) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;super(context, attrs);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.setStaticTransformationsEnabled(true);&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public CoverFlow(Context context, AttributeSet attrs, int defStyle) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; super(context, attrs, defStyle);&lt;br /&gt;&amp;nbsp;&amp;nbsp; this.setStaticTransformationsEnabled(true); &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * Get the max rotational angle of the image&lt;br /&gt;&amp;nbsp;&amp;nbsp;* @return the mMaxRotationAngle&lt;br /&gt;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;public int getMaxRotationAngle() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;return mMaxRotationAngle;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;* Set the max rotational angle of each image&lt;br /&gt;&amp;nbsp;&amp;nbsp;* @param maxRotationAngle the mMaxRotationAngle to set&lt;br /&gt;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;public void setMaxRotationAngle(int maxRotationAngle) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;mMaxRotationAngle = maxRotationAngle;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;* Get the Max zoom of the centre image&lt;br /&gt;&amp;nbsp;&amp;nbsp;* @return the mMaxZoom&lt;br /&gt;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;public int getMaxZoom() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;return mMaxZoom;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;* Set the max zoom of the centre image&lt;br /&gt;&amp;nbsp;&amp;nbsp;* @param maxZoom the mMaxZoom to set&lt;br /&gt;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;public void setMaxZoom(int maxZoom) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;mMaxZoom = maxZoom;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * Get the Centre of the Coverflow&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * @return The centre of this Coverflow.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private int getCenterOfCoverflow() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return (getWidth() - getPaddingLeft() - getPaddingRight()) / 2 + getPaddingLeft();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * Get the Centre of the View&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * @return The centre of the given view.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private static int getCenterOfView(View view) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return view.getLeft() + view.getWidth() / 2;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;* {@inheritDoc}&lt;br /&gt;&amp;nbsp;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp;* @see #setStaticTransformationsEnabled(boolean)&lt;br /&gt;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;protected boolean getChildStaticTransformation(View child, Transformation t) {&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;final int childCenter = getCenterOfView(child);&lt;br /&gt;&amp;nbsp;&amp;nbsp;final int childWidth = child.getWidth() ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;int rotationAngle = 0;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;t.clear();&lt;br /&gt;&amp;nbsp;&amp;nbsp;t.setTransformationType(Transformation.TYPE_MATRIX);&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (childCenter == mCoveflowCenter) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;transformImageBitmap((ImageView) child, t, 0);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else { &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rotationAngle = (int) (((float) (mCoveflowCenter - childCenter)/ childWidth) * &amp;nbsp;mMaxRotationAngle);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (Math.abs(rotationAngle) &amp;gt; mMaxRotationAngle) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rotationAngle = (rotationAngle &amp;lt; 0) ? -mMaxRotationAngle : mMaxRotationAngle; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;transformImageBitmap((ImageView) child, t, rotationAngle); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;return true;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;* This is called during layout when the size of this view has changed. If&lt;br /&gt;&amp;nbsp;&amp;nbsp;* you were just added to the view hierarchy, you're called with the old&lt;br /&gt;&amp;nbsp;&amp;nbsp;* values of 0.&lt;br /&gt;&amp;nbsp;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp;* @param w Current width of this view.&lt;br /&gt;&amp;nbsp;&amp;nbsp;* @param h Current height of this view.&lt;br /&gt;&amp;nbsp;&amp;nbsp;* @param oldw Old width of this view.&lt;br /&gt;&amp;nbsp;&amp;nbsp;* @param oldh Old height of this view.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; protected void onSizeChanged(int w, int h, int oldw, int oldh) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;mCoveflowCenter = getCenterOfCoverflow();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;super.onSizeChanged(w, h, oldw, oldh);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;* Transform the Image Bitmap by the Angle passed&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;* @param imageView ImageView the ImageView whose bitmap we want to rotate&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;* @param t transformation&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;* @param rotationAngle the Angle by which to rotate the Bitmap&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; private void transformImageBitmap(ImageView child, Transformation t, int rotationAngle) { &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;mCamera.save();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;final Matrix imageMatrix = t.getMatrix();;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;final int imageHeight = child.getLayoutParams().height;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;final int imageWidth = child.getLayoutParams().width;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;final int rotation = Math.abs(rotationAngle);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;mCamera.translate(0.0f, 0.0f, 100.0f);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;//As the angle of the view gets less, zoom in &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;if ( rotation &amp;lt; mMaxRotationAngle ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; float zoomAmount = (float) (mMaxZoom + &amp;nbsp;(rotation * 1.5));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; mCamera.translate(0.0f, 0.0f, zoomAmount); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;mCamera.rotateY(rotationAngle);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;mCamera.getMatrix(imageMatrix); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;imageMatrix.preTranslate(-(imageWidth/2), -(imageHeight/2));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;imageMatrix.postTranslate((imageWidth/2), (imageHeight/2));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;mCamera.restore();&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;File 2:&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Activity Class ,where you need to show the Coverflow of Images&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;public class &lt;b&gt;CoverFlowExample &lt;/b&gt;extends Activity {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/** Called when the activity is first created. */&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;@Override&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public void onCreate(Bundle savedInstanceState) {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; super.onCreate(savedInstanceState);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; CoverFlow coverFlow;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; coverFlow = new CoverFlow(this);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; coverFlow.setAdapter(new ImageAdapter(this));&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; ImageAdapter coverImageAdapter = &amp;nbsp;new ImageAdapter(this);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;coverFlow.setAdapter(coverImageAdapter);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; coverFlow.setSpacing(-25);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; coverFlow.setSelection(4, true);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; coverFlow.setAnimationDuration(1000);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; setContentView(coverFlow);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/div&gt;&lt;div style="font-weight: bold; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;public class ImageAdapter extends BaseAdapter {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; int mGalleryItemBackground;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; private Context mContext;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; private FileInputStream fis;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; private Integer[] mImageIds = {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; R.drawable.yadi,&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; R.drawable.yadi_1,&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; R.drawable.yadi_2,&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; R.drawable.yadi_3,&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; R.drawable.yadi_4,&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; R.drawable.yadi_5,&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; R.drawable.yadi_6,&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; R.drawable.yadi_7,&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; R.drawable.yadi_8&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; };&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; private ImageView[] mImages;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; public ImageAdapter(Context c) {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;mContext = c;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;mImages = new ImageView[mImageIds.length];&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;public boolean createReflectedImages() {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//The gap we want between the reflection and the original image&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;final int reflectionGap = 4;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int index = 0;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int imageId : mImageIds) {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Bitmap originalImage = BitmapFactory.decodeResource(getResources(),&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;imageId);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int width = originalImage.getWidth();&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int height = originalImage.getHeight();&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //This will not scale but will flip on the Y axis&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Matrix matrix = new Matrix();&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; matrix.preScale(1, -1);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //Create a Bitmap with the flip matrix applied to it.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //We only want the bottom half of the image&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0, height/2, width, height/2, matrix, false);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //Create a new bitmap with same width but taller to fit reflection&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Bitmap bitmapWithReflection = Bitmap.createBitmap(width&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; , (height + height/2), Config.ARGB_8888);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//Create a new Canvas with the bitmap that's big enough for&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//the image plus gap plus reflection&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Canvas canvas = new Canvas(bitmapWithReflection);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//Draw in the original image&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;canvas.drawBitmap(originalImage, 0, 0, null);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//Draw in the gap&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Paint deafaultPaint = new Paint();&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;canvas.drawRect(0, height, width, height + reflectionGap, deafaultPaint);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//Draw in the reflection&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;canvas.drawBitmap(reflectionImage,0, height + reflectionGap, null);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//Create a shader that is a linear gradient that covers the reflection&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Paint paint = new Paint();&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;LinearGradient shader = new LinearGradient(0, originalImage.getHeight(), 0,&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bitmapWithReflection.getHeight() + reflectionGap, 0x70ffffff, 0x00ffffff,&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TileMode.CLAMP);&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//Set the paint to use this shader (linear gradient)&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;paint.setShader(shader);&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//Set the Transfer mode to be porter duff and destination in&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//Draw a rectangle using the paint with our linear gradient&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;canvas.drawRect(0, height, width,&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bitmapWithReflection.getHeight() + reflectionGap, paint);&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ImageView imageView = new ImageView(mContext);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;imageView.setImageBitmap(bitmapWithReflection);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android.widget.Gallery.LayoutParams imgLayout = new CoverFlow.LayoutParams(320, 480);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;imageView.setLayoutParams(imgLayout);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;imageView.setPadding(30, 100, 20, 20);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mImages[index++] = imageView;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; return true;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; public int getCount() {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return mImageIds.length;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; public Object getItem(int position) {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return position;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; public long getItemId(int position) {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return position;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; public View getView(int position, View convertView, ViewGroup parent) {&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;//Use this code if you want to load from resources&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ImageView i = new ImageView(mContext);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i.setImageResource(mImageIds[position]);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i.setLayoutParams(new CoverFlow.LayoutParams(380, 450));&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i.setScaleType(ImageView.ScaleType.CENTER_INSIDE);&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //Make sure we set anti-aliasing otherwise we get jaggies&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BitmapDrawable drawable = (BitmapDrawable) i.getDrawable();&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; drawable.setAntiAlias(true);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return i;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;//return mImages[position];&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; /** Returns the size (0.0f to 1.0f) of the views&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;* depending on the 'offset' to the center. */&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;public float getScale(boolean focused, int offset) {&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* Formula: 1 / (2 ^ offset) */&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return Math.max(0, 1.0f / (float)Math.pow(2, Math.abs(offset)));&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;}&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div style="font-weight: bold;"&gt;The output will be as follows ( in GAlaXY TABlet)&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-HmaE-WZ_z24/TXcs9_--zTI/AAAAAAAAAl0/7TTbDWS1zR8/s1600/device.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="187" src="https://lh5.googleusercontent.com/-HmaE-WZ_z24/TXcs9_--zTI/AAAAAAAAAl0/7TTbDWS1zR8/s320/device.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Please let me know if any.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-4423837867655901418?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/4423837867655901418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2011/03/images-with-coverflow-like-animation-in.html#comment-form' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/4423837867655901418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/4423837867655901418'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2011/03/images-with-coverflow-like-animation-in.html' title='Images with Coverflow like animation in ANDROID'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh5.googleusercontent.com/-HmaE-WZ_z24/TXcs9_--zTI/AAAAAAAAAl0/7TTbDWS1zR8/s72-c/device.png' height='72' width='72'/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-8978493109588138240</id><published>2011-03-09T12:29:00.000+05:30</published><updated>2011-03-09T12:29:07.286+05:30</updated><title type='text'>Access LOGCAT DATA in your ANDROID application Progrmatically.</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;b&gt;AIM:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;To read the LOGCAT data in your application which is very helpful&amp;nbsp; for bugreport purposes and for trobleshooting the device issues from remote location.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Solution:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You can check &lt;a href="http://developer.android.com/guide/developing/tools/logcat.html"&gt;LOGCAT API documentation&lt;/a&gt; at&amp;nbsp; developer site.&lt;br /&gt;&lt;br /&gt;Writing program to use that API and to print your logcat data in a Scrollable TextView.&lt;br /&gt;&lt;br /&gt;1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class ReadLogCat extends Activity {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super.onCreate(savedInstanceState);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setContentView(R.layout.main);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;&amp;nbsp; Process process = Runtime.getRuntime().exec("logcat -v");// Verbose filter&lt;/b&gt;&lt;br /&gt;/*&amp;nbsp; Check diffrent filters available at http://developer.android.com/guide/developing/tools/logcat.html , Options section */&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BufferedReader bufferedReader = new BufferedReader(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new InputStreamReader(process.getInputStream()));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StringBuilder logString=new StringBuilder();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String line;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ((line = bufferedReader.readLine()) != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logString.append(line);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TextView tv = (TextView)findViewById(R.id.logTextView);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tv.setText(logString.toString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IOException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;2) To perform this operation we need to set Permissions in AndroidManifest.xml file as&lt;span class="sy0"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="sy0"&gt;&amp;lt;&lt;/span&gt;uses&lt;span class="sy0"&gt;-&lt;/span&gt;permission android&lt;span class="sy0"&gt;:&lt;/span&gt;name&lt;span class="sy0"&gt;=&lt;/span&gt;&lt;span class="st0"&gt;"android.permission.READ_LOGS"&lt;/span&gt; &lt;span class="sy0"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt; 3) The following is the LOGCAT window in ECLIPSE IDE.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-hie0pL72aBM/TXciS9tByqI/AAAAAAAAAlw/k6OCRAWERZQ/s1600/untitled.bmp" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="200" src="https://lh4.googleusercontent.com/-hie0pL72aBM/TXciS9tByqI/AAAAAAAAAlw/k6OCRAWERZQ/s320/untitled.bmp" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Logcat window in ECLIPSE&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&amp;nbsp;Post your comments if any .&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt; &lt;br /&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-8978493109588138240?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/8978493109588138240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2011/03/access-logcat-data-in-your-android.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/8978493109588138240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/8978493109588138240'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2011/03/access-logcat-data-in-your-android.html' title='Access LOGCAT DATA in your ANDROID application Progrmatically.'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh4.googleusercontent.com/-hie0pL72aBM/TXciS9tByqI/AAAAAAAAAlw/k6OCRAWERZQ/s72-c/untitled.bmp' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-2443710121368771093</id><published>2011-01-31T17:25:00.001+05:30</published><updated>2012-01-26T21:15:28.729+05:30</updated><title type='text'>To Check internet Connection status/Type in Android</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;Aim:&amp;nbsp;To Check internet Connection status/Type in Android.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #363636; font-family: Verdana,sans-serif; line-height: 22px;"&gt;Here is some example code to check the network status .&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;void chkConnectionStatus()&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;nbsp;&amp;nbsp;ConnectivityManager connMgr = (ConnectivityManager)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; this.getSystemService(Context.CONNECTIVITY_SERVICE);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; final android.net.NetworkInfo wifi =&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; final android.net.NetworkInfo mobile =&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; if( wifi.isAvailable() ){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; Toast.makeText(this, "Wifi" , Toast.LENGTH_LONG).show();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; else if( mobile.isAvailable() ){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; Toast.makeText(this, "Mobile 3G " , Toast.LENGTH_LONG).show();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; else&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; {Toast.makeText(this, "No Network " , Toast.LENGTH_LONG).show();}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; }&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;This snippet requires the following permissions in AndroidManifest.xml file.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"&gt;&lt;/uses-permission&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;Please let me know if any.&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-2443710121368771093?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/2443710121368771093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2011/01/to-check-internet-connection-statustype.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/2443710121368771093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/2443710121368771093'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2011/01/to-check-internet-connection-statustype.html' title='To Check internet Connection status/Type in Android'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-1745469713934074637</id><published>2010-12-30T10:46:00.000+05:30</published><updated>2010-12-30T10:46:58.111+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOAP request ANdroid'/><category scheme='http://www.blogger.com/atom/ns#' term='SOAP Webservices'/><title type='text'>Call SOAP webservices without using any SOAP Libraries in ANDROID</title><content type='html'>AIM : Accessing SOAP wsdl methods without including any third party SOAP libraries (like KSOAP2)&lt;br /&gt;SOLUTION:&lt;br /&gt;The below method will call the SOAP server with soap message and returns the ByteArray of response.&lt;br /&gt; private byte[] callSOAPServer() {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; byte[] result = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; HttpParams httpParameters = new BasicHttpParams();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // Set the timeout in milliseconds until a connection is established.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int timeoutConnection = 15000;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // Set the default socket timeout (SO_TIMEOUT) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // in milliseconds which is the timeout for waiting for data.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int timeoutSocket = 35000;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DefaultHttpClient httpclient = new DefaultHttpClient(httpParameters); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* httpclient.getCredentialsProvider().setCredentials( new&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* AuthScope("os.icloud.com", 80, null, "Digest"), new&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* UsernamePasswordCredentials(username, password));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; HttpPost httppost = new HttpPost(SERVER_URL );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; httppost.setHeader("soapaction", SOAP_ACTION);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; httppost.setHeader("Content-Type", "text/xml; charset=utf-8");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("executing request" + httppost.getRequestLine());&lt;br /&gt;//now create a soap request message as follows:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; final StringBuffer soap = new StringBuffer();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; soap.append("\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; soap.append("&lt;soap-env:envelope soap-env:encodingstyle="\&amp;quot;http://schemas.xmlsoap.org/soap/encoding/\&amp;quot;" xmlns:soap-env="\&amp;quot;http://schemas.xmlsoap.org/soap/envelope/\&amp;quot;" xmlns:xsd="\&amp;quot;http://www.w3.org/1999/XMLSchema\&amp;quot;" xmlns:xsi="\&amp;quot;http://www.w3.org/1999/XMLSchema-instance\&amp;quot;"&gt;&lt;soap-env:body&gt;");&lt;/soap-env:body&gt;&lt;/soap-env:envelope&gt;&lt;br /&gt;// this is a sample data..you have create your own required data&amp;nbsp; BEGIN&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; soap.append("&lt;sendcommand xmlns="\&amp;quot;http://tempuri.org/\&amp;quot;"&gt; \n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; soap.append("&lt;data&gt; \n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; soap.append("" + body);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; soap.append("&lt;/data&gt; \n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; soap.append("&lt;/sendcommand&gt; \n");&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /* soap.append(body); */&lt;br /&gt;// END of MEssage Body&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; soap.append("");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log.i("SOAP Request", ""+soap.toString());&lt;br /&gt;// END of full SOAP request&amp;nbsp; message &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; HttpEntity entity = new StringEntity(soap.toString(),HTTP.UTF_8);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; httppost.setEntity(entity);&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; HttpResponse response = httpclient.execute(httppost);// calling server&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; HttpEntity r_entity = response.getEntity();&amp;nbsp; //get response&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log.i("Reponse Header", "Begin...");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // response headers&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log.i("Reponse Header", "StatusLine:"+response.getStatusLine()); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Header[] headers = response.getAllHeaders();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for(Header h:headers){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log.i("Reponse Header",h.getName() + ": " + h.getValue());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log.i("Reponse Header", "END..."); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (r_entity != null) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; result = new byte[(int) r_entity.getContentLength()];&amp;nbsp; // read the output message&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (r_entity.isStreaming()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DataInputStream is = new DataInputStream(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; r_entity.getContent());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; is.readFully(result);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (Exception E) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log.i("Exception While Connecting", ""+E.getMessage());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; E.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; httpclient.getConnectionManager().shutdown(); //shut down the connection&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return result;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt; &lt;br /&gt;2)You have to parse the output of above function returned byteArray.&lt;br /&gt;for example .,&lt;br /&gt;byte[] initReqrepsonse = callSOAPServer(soapBodymessage );&lt;br /&gt;&amp;nbsp;ByteArrayInputStream bais=new ByteArrayInputStream(initReqrepsonse);&lt;br /&gt;// now parse the xml&lt;br /&gt;as&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /** Handling XML */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SAXParserFactory spf = SAXParserFactory.newInstance();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SAXParser sp = spf.newSAXParser();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; XMLReader xr = sp.getXMLReader(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /** Create handler to handle XML Tags ( extends DefaultHandler ) */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; // ResponseParser&amp;nbsp; is XML parser class which will parse the XML output.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ResponseParser myXMLHandler = new ResponseParser();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; xr.setContentHandler(myXMLHandler);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log.i("XML data", bais.toString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; xr.parse(new InputSource(bais)); &lt;br /&gt;&lt;br /&gt;By this way,you can access Any SOAP webservice methods without using any libraries.&lt;br /&gt;please let me know if any corrections required.&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/6281777251296059140-1745469713934074637?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/1745469713934074637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2010/12/call-soap-webservices-without-using-any.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/1745469713934074637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/1745469713934074637'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2010/12/call-soap-webservices-without-using-any.html' title='Call SOAP webservices without using any SOAP Libraries in ANDROID'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-7900936801024211072</id><published>2010-12-14T15:42:00.001+05:30</published><updated>2010-12-14T15:45:30.487+05:30</updated><title type='text'>Optimize your layouts in ANDROID</title><content type='html'>&lt;br /&gt;&lt;style type="text/css"&gt;&lt;/style&gt;Writing user interface layouts for Android applications is easy, but it can sometimes be difficult to optimize them. Most often, heavy modifications made to existing XML layouts, like shuffling views around or changing the type of a container, lead to inefficiencies that go unnoticed.&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Starting with the &lt;a href="http://d.android.com/sdk/tools-notes.html"&gt;SDK Tools Revision 3&lt;/a&gt; you can use a tool called &lt;a href="http://d.android.com/guide/developing/tools/layoutopt.html"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;layoutopt&lt;/span&gt;&lt;/a&gt; to automatically detect common problems. This tool is currently only available from the command line and its use is very simple - just open a terminal and launch the &lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;layoutopt&lt;/span&gt; command with a list of directories or XML files to analyze:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre class="textmate-source mac_classic prettyprint"&gt;&lt;span class="text text_blog"&gt;&lt;span class="text text_plain"&gt;&lt;span class="meta meta_paragraph meta_paragraph_text"&gt;&lt;span class="pln"&gt;$ layoutopt samples&lt;/span&gt;&lt;span class="pun"&gt;/&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;samples&lt;/span&gt;&lt;span class="pun"&gt;/&lt;/span&gt;&lt;span class="pln"&gt;compound&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;xml&lt;/span&gt;&lt;/span&gt;&lt;span class="meta meta_paragraph meta_paragraph_text"&gt;&lt;span class="pln"&gt;&amp;nbsp; &lt;/span&gt;&lt;span class="lit"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="textmate-source mac_classic prettyprint"&gt;&lt;span class="text text_blog"&gt;&lt;span class="text text_plain"&gt;&lt;span class="meta meta_paragraph meta_paragraph_text"&gt;&lt;span class="lit"&gt;7&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="lit"&gt;23&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;The&lt;/span&gt;&lt;span class="pln"&gt; root&lt;/span&gt;&lt;span class="pun"&gt;-&lt;/span&gt;&lt;span class="pln"&gt;level &lt;/span&gt;&lt;span class="pun"&gt;&amp;lt;&lt;/span&gt;&lt;span class="typ"&gt;FrameLayout&lt;/span&gt;&lt;span class="pun"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="pln"&gt; can be replaced &lt;/span&gt;&lt;span class="kwd"&gt;with&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pln"&gt;merge&lt;/span&gt;&lt;span class="pun"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="lit"&gt;11&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="lit"&gt;21&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;This&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;LinearLayout&lt;/span&gt;&lt;span class="pln"&gt; layout &lt;/span&gt;&lt;span class="kwd"&gt;or&lt;/span&gt;&lt;span class="pln"&gt; its &lt;/span&gt;&lt;span class="typ"&gt;FrameLayout&lt;/span&gt;&lt;span class="pln"&gt; parent &lt;/span&gt;&lt;span class="kwd"&gt;is&lt;/span&gt;&lt;span class="pln"&gt; useless samples&lt;/span&gt;&lt;span class="pun"&gt;/&lt;/span&gt;&lt;span class="pln"&gt;simple&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;xml&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span class="lit"&gt;7&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="lit"&gt;7&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;The&lt;/span&gt;&lt;span class="pln"&gt; root&lt;/span&gt;&lt;span class="pun"&gt;-&lt;/span&gt;&lt;span class="pln"&gt;level &lt;/span&gt;&lt;span class="pun"&gt;&amp;lt;&lt;/span&gt;&lt;span class="typ"&gt;FrameLayout&lt;/span&gt;&lt;span class="pun"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="pln"&gt; can be replaced &lt;/span&gt;&lt;span class="kwd"&gt;with&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pln"&gt;merge&lt;/span&gt;&lt;span class="pun"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;samples&lt;/span&gt;&lt;span class="pun"&gt;/&lt;/span&gt;&lt;span class="pln"&gt;too_deep&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;xml&lt;/span&gt;&lt;/span&gt;&lt;span class="meta meta_paragraph meta_paragraph_text"&gt;&lt;span class="pln"&gt;&amp;nbsp; &lt;/span&gt;&lt;span class="pun"&gt;-&lt;/span&gt;&lt;span class="lit"&gt;1&lt;/span&gt;&lt;span class="pun"&gt;:-&lt;/span&gt;&lt;span class="lit"&gt;1&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;This&lt;/span&gt;&lt;span class="pln"&gt; layout has too many nested layouts&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;13&lt;/span&gt;&lt;span class="pln"&gt; levels&lt;/span&gt;&lt;span class="pun"&gt;,&lt;/span&gt;&lt;span class="pln"&gt; it should have &lt;/span&gt;&lt;span class="pun"&gt;&amp;lt;=&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;10&lt;/span&gt;&lt;span class="pun"&gt;!&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span class="lit"&gt;20&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="lit"&gt;81&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;This&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;LinearLayout&lt;/span&gt;&lt;span class="pln"&gt; layout &lt;/span&gt;&lt;span class="kwd"&gt;or&lt;/span&gt;&lt;span class="pln"&gt; its &lt;/span&gt;&lt;span class="typ"&gt;LinearLayout&lt;/span&gt;&lt;span class="pln"&gt; parent &lt;/span&gt;&lt;span class="kwd"&gt;is&lt;/span&gt;&lt;span class="pln"&gt; useless&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span class="lit"&gt;24&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="lit"&gt;79&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;This&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;LinearLayout&lt;/span&gt;&lt;span class="pln"&gt; layout &lt;/span&gt;&lt;span class="kwd"&gt;or&lt;/span&gt;&lt;span class="pln"&gt; its &lt;/span&gt;&lt;span class="typ"&gt;LinearLayout&lt;/span&gt;&lt;span class="pln"&gt; parent &lt;/span&gt;&lt;span class="kwd"&gt;is&lt;/span&gt;&lt;span class="pln"&gt; useless&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span class="lit"&gt;28&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="lit"&gt;77&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;This&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;LinearLayout&lt;/span&gt;&lt;span class="pln"&gt; layout &lt;/span&gt;&lt;span class="kwd"&gt;or&lt;/span&gt;&lt;span class="pln"&gt; its &lt;/span&gt;&lt;span class="typ"&gt;LinearLayout&lt;/span&gt;&lt;span class="pln"&gt; parent &lt;/span&gt;&lt;span class="kwd"&gt;is&lt;/span&gt;&lt;span class="pln"&gt; useless&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span class="lit"&gt;32&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="lit"&gt;75&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;This&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;LinearLayout&lt;/span&gt;&lt;span class="pln"&gt; layout &lt;/span&gt;&lt;span class="kwd"&gt;or&lt;/span&gt;&lt;span class="pln"&gt; its &lt;/span&gt;&lt;span class="typ"&gt;LinearLayout&lt;/span&gt;&lt;span class="pln"&gt; parent &lt;/span&gt;&lt;span class="kwd"&gt;is&lt;/span&gt;&lt;span class="pln"&gt; useless&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span class="lit"&gt;36&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="lit"&gt;73&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;This&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;LinearLayout&lt;/span&gt;&lt;span class="pln"&gt; layout &lt;/span&gt;&lt;span class="kwd"&gt;or&lt;/span&gt;&lt;span class="pln"&gt; its &lt;/span&gt;&lt;span class="typ"&gt;LinearLayout&lt;/span&gt;&lt;span class="pln"&gt; parent &lt;/span&gt;&lt;span class="kwd"&gt;is&lt;/span&gt;&lt;span class="pln"&gt; useless&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span class="lit"&gt;40&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="lit"&gt;71&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;This&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;LinearLayout&lt;/span&gt;&lt;span class="pln"&gt; layout &lt;/span&gt;&lt;span class="kwd"&gt;or&lt;/span&gt;&lt;span class="pln"&gt; its &lt;/span&gt;&lt;span class="typ"&gt;LinearLayout&lt;/span&gt;&lt;span class="pln"&gt; parent &lt;/span&gt;&lt;span class="kwd"&gt;is&lt;/span&gt;&lt;span class="pln"&gt; useless&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span class="lit"&gt;44&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="lit"&gt;69&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;This&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;LinearLayout&lt;/span&gt;&lt;span class="pln"&gt; layout &lt;/span&gt;&lt;span class="kwd"&gt;or&lt;/span&gt;&lt;span class="pln"&gt; its &lt;/span&gt;&lt;span class="typ"&gt;LinearLayout&lt;/span&gt;&lt;span class="pln"&gt; parent &lt;/span&gt;&lt;span class="kwd"&gt;is&lt;/span&gt;&lt;span class="pln"&gt; useless&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span class="lit"&gt;48&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="lit"&gt;67&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;This&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;LinearLayout&lt;/span&gt;&lt;span class="pln"&gt; layout &lt;/span&gt;&lt;span class="kwd"&gt;or&lt;/span&gt;&lt;span class="pln"&gt; its &lt;/span&gt;&lt;span class="typ"&gt;LinearLayout&lt;/span&gt;&lt;span class="pln"&gt; parent &lt;/span&gt;&lt;span class="kwd"&gt;is&lt;/span&gt;&lt;span class="pln"&gt; useless&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span class="lit"&gt;52&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="lit"&gt;65&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;This&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;LinearLayout&lt;/span&gt;&lt;span class="pln"&gt; layout &lt;/span&gt;&lt;span class="kwd"&gt;or&lt;/span&gt;&lt;span class="pln"&gt; its &lt;/span&gt;&lt;span class="typ"&gt;LinearLayout&lt;/span&gt;&lt;span class="pln"&gt; parent &lt;/span&gt;&lt;span class="kwd"&gt;is&lt;/span&gt;&lt;span class="pln"&gt; useless&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span class="lit"&gt;56&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="lit"&gt;63&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;This&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;LinearLayout&lt;/span&gt;&lt;span class="pln"&gt; layout &lt;/span&gt;&lt;span class="kwd"&gt;or&lt;/span&gt;&lt;span class="pln"&gt; its &lt;/span&gt;&lt;span class="typ"&gt;LinearLayout&lt;/span&gt;&lt;span class="pln"&gt; parent &lt;/span&gt;&lt;span class="kwd"&gt;is&lt;/span&gt;&lt;span class="pln"&gt; useless&lt;br /&gt;samples&lt;/span&gt;&lt;span class="pun"&gt;/&lt;/span&gt;&lt;span class="pln"&gt;too_many&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;xml&lt;/span&gt;&lt;/span&gt;&lt;span class="meta meta_paragraph meta_paragraph_text"&gt;&lt;span class="pln"&gt;&amp;nbsp; &lt;/span&gt;&lt;span class="lit"&gt;7&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="lit"&gt;413&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;The&lt;/span&gt;&lt;span class="pln"&gt; root&lt;/span&gt;&lt;span class="pun"&gt;-&lt;/span&gt;&lt;span class="pln"&gt;level &lt;/span&gt;&lt;span class="pun"&gt;&amp;lt;&lt;/span&gt;&lt;span class="typ"&gt;FrameLayout&lt;/span&gt;&lt;span class="pun"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="pln"&gt; can be replaced &lt;/span&gt;&lt;span class="kwd"&gt;with&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pln"&gt;merge&lt;/span&gt;&lt;span class="pun"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span class="pun"&gt;-&lt;/span&gt;&lt;span class="lit"&gt;1&lt;/span&gt;&lt;span class="pun"&gt;:-&lt;/span&gt;&lt;span class="lit"&gt;1&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;This&lt;/span&gt;&lt;span class="pln"&gt; layout has too many views&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;81&lt;/span&gt;&lt;span class="pln"&gt; views&lt;/span&gt;&lt;span class="pun"&gt;,&lt;/span&gt;&lt;span class="pln"&gt; it should have &lt;/span&gt;&lt;span class="pun"&gt;&amp;lt;=&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;80&lt;/span&gt;&lt;span class="pun"&gt;!&lt;/span&gt;&lt;span class="pln"&gt; samples&lt;/span&gt;&lt;span class="pun"&gt;/&lt;/span&gt;&lt;span class="pln"&gt;useless&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;xml&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span class="lit"&gt;7&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="lit"&gt;19&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;The&lt;/span&gt;&lt;span class="pln"&gt; root&lt;/span&gt;&lt;span class="pun"&gt;-&lt;/span&gt;&lt;span class="pln"&gt;level &lt;/span&gt;&lt;span class="pun"&gt;&amp;lt;&lt;/span&gt;&lt;span class="typ"&gt;FrameLayout&lt;/span&gt;&lt;span class="pun"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="pln"&gt; can be replaced &lt;/span&gt;&lt;span class="kwd"&gt;with&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pln"&gt;merge&lt;/span&gt;&lt;span class="pun"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span class="lit"&gt;11&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="lit"&gt;17&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;This&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;LinearLayout&lt;/span&gt;&lt;span class="pln"&gt; layout &lt;/span&gt;&lt;span class="kwd"&gt;or&lt;/span&gt;&lt;span class="pln"&gt; its &lt;/span&gt;&lt;span class="typ"&gt;FrameLayout&lt;/span&gt;&lt;span class="pln"&gt; parent &lt;/span&gt;&lt;span class="kwd"&gt;is&lt;/span&gt;&lt;span class="pln"&gt; useless&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div&gt;For each analyzed file, the tool will indicate the line numbers of each tag that could potentially be optimized. In some cases, layoutopt will also offer a possible solution.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;The current version of layoutopt contains a dozen rules used to analyze your layout files and future versions will contain more. Future plans for this tool also include the ability to create and use your own analysis rules, to automatically modify the layouts with optimized XML, and to use it from within Eclipse and/or a standalone user interface.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;b&gt;Windows users&lt;/b&gt;: to start layoutopt, open the file called &lt;code&gt;layoutopt.bat&lt;/code&gt; in the tools directory of the SDK and on the last line, replace &lt;code&gt;%jarpath%&lt;/code&gt; with &lt;code&gt;-jar %jarpath%&lt;/code&gt;.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&amp;nbsp;source: &lt;/b&gt;developer.android.com &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-7900936801024211072?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/7900936801024211072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2010/12/optimize-your-layouts-in-android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/7900936801024211072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/7900936801024211072'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2010/12/optimize-your-layouts-in-android.html' title='Optimize your layouts in ANDROID'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-550094275855431526</id><published>2010-12-14T15:34:00.000+05:30</published><updated>2010-12-14T15:34:50.880+05:30</updated><title type='text'>Mobile Number Portability: Things to Know Mobile Number Portability: Things to Know</title><content type='html'>&lt;br /&gt;&lt;div align="center" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img align="baseline" border="0" height="200" hspace="0" src="http://images.techtree.com/ttimages/story/113305_mnp-zones.jpg" vspace="0" width="190" /&gt;&lt;/div&gt;&lt;span style="color: white; font-family: Verdana,sans-serif; font-size: small; height: 1%; line-height: 15px;"&gt;November 1, 2010 is the day when mobile number portability (MNP) will be implemented in India, but there are several things about MNP that are not known to the public. Let us take a look at what it is all about.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;strong&gt;What is MNP all about?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;MNP is the facility that lets a mobile phone subscriber retain his/her original mobile number even after moving from one service provider to another. This is implemented in two different ways around the world. Some countries have the subscriber wanting to port his/her number to contact the new provider, also called the Recipient first. The Recipient then has to work with the old provider known as the Donor to arrange for the smooth transfer of the number. This method is known as Recipient-led porting. &lt;br /&gt;&lt;br /&gt;Another, though a less popular way, is to have the subscriber to contact the Donor to obtain a Porting Authorization Code (PAC), which he/she has to provide to the Recipient. The Recipient then has to contact the Donor to complete the porting process. This is known as Donor-led method, but is not popular because there is a chance that the Donor may lure a subscriber to retain his subscription, leading to distortion of competition.&lt;br /&gt;&lt;br /&gt;In India, MNP has been elusive so far. It has been implemented the world over and we are one of the last countries left to implement MNP - even our neighbor Pakistan implemented MNP way back in March 2007.&lt;br /&gt;&lt;br /&gt;But the Telecom Regulatory Authority of India (TRAI) has made clear that there won't be any further delays and it will surely be implemented on November 1, 2010. To use MNP facility, the subscriber will have to pay a non-refundable fixed charge of Rs.19, while the dipping charge is left to mutual negotiation between the telecom service providers and the MNP service providers. The porting charge shall not exceed the per port transaction charge of Rs.19, according to TRAI directive.&lt;br /&gt;&lt;br /&gt;In India, the Recipient-led porting procedure will be used. The porting process would involve a break in service when a number is detached from the donor and added to the recipient, which should not take more than two hours during which no mobile service will be available. After this, the recipient operator has to carry out subscriber verification according to guidelines for acquiring a new user, within five days of receiving a written request. Once verified, the request is forwarded to the donor, seeking its clearance. The donor then has to verify and get back to the recipient with details within two days. MNP is then implemented.&lt;br /&gt;&lt;br /&gt;To be able to cope up with the enormous logistics involved, mobile number portability will be carried out by dividing the country into two zones for the purpose of security and reliability. The zones are as shown in the map.&lt;/span&gt;&lt;br /&gt;&lt;div style="color: white; font-family: Verdana,sans-serif;"&gt;&lt;span style="color: #333333; font-family: Arial,Helvetica,sans-serif; font-size: small; height: 1%; line-height: 15px;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: white; font-family: Verdana,sans-serif;"&gt;&lt;span style="color: #333333; font-family: Arial,Helvetica,sans-serif; font-size: small; height: 1%; line-height: 15px;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: white; font-family: Verdana,sans-serif;"&gt;&lt;span style="color: #333333; font-family: Arial,Helvetica,sans-serif; font-size: small; height: 1%; line-height: 15px;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="color: white; font-family: Verdana,sans-serif; font-size: small; height: 1%; line-height: 15px;"&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;strong&gt;Implications of MNP&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The general opinion is that this is a good initiative, but is it really so? We need to consider a few things MNP will impact.&lt;br /&gt;&lt;br /&gt;The first and foremost thing to note about MNP is that it will promote healthy competition. Mobile subscribers will no longer be faced with the dilemma whether they should shift to a better operator and lose their mobile number, or to stay dissatisfied with the current one and retain their number. They will now be empowered to go to any operator who they think will serve them better. Effectively, this will stimulate mobile operators to better their services to retain their subscriber base and prevent subscribers from looking towards greener pastures .&lt;br /&gt;&lt;br /&gt;This is also like a double-edged sword. It can actually push established mobile operators towards the edge if people start moving towards a newer operator who has nothing to lose and is able to lure subscribers just because of good advertising, and no actual track record.&lt;br /&gt;&lt;br /&gt;Postpaid mobile subscribers must have no outstanding bills on the date of application of porting. Prepaid users will lose their balance amount after number porting. Thus, you essentially start off with a clean slate, with the original number.&lt;br /&gt;&lt;br /&gt;Though most do not know, the rule is that MNP is available within a telecom circle. This usually means a state. Therefore, you cannot retain your number if you shift from one state to another for change of residence due to your job. (Of course, you can retain your number the old way with expensive national roaming).&lt;br /&gt;&lt;br /&gt;It will be impossible to easily ascertain the location of a number. Currently, the first few digits of a mobile number are enough to give you the location of the mobile number as well as its mobile operator. But with MNP in place, the number is not bound to any region or operator, making it very difficult to identify the physical location and telecom operator. Again, as noted in the last point, you can't port number between circles, so as of now at least it would be possible to identify the circle to which a number belongs.&lt;br /&gt;&lt;br /&gt;From experiences of mobile subscribers abroad, especially in the UK and New Zealand, the process of changing your mobile number may not exactly be a pleasant ride. Subscribers in these countries have had to endure a lot of hardships owing to MNP. They have had to run between Recipient and Donor operators, re-submitting applications and documents again and again, having to wait for a much longer period for the porting to take place even though it should happen within a stipulated number of days (due to the enormous logistics involved in the process), and also facing with an interim period of uncertainty when you are actually a customer of both operators, thus having to pay monthly rentals to each one of them.&lt;br /&gt;&lt;br /&gt;Once having changed your operator retaining the same mobile number, the TRAI directive states that the subscriber has to remain with the new provider for a minimum lock-in period of 90 days before shifting to another provider using MNP. While this sounds fair enough from the operator's point of view so that he gets a fair chance to prove himself , it may be a nightmare for the subscriber if this new operator is even worse than the previous one. However, if you have a quick second thought, you are given the liberty of withdrawing your porting request within 24 hours of the submission of the application. The porting charges will not be refunded.&lt;br /&gt;&lt;br /&gt;If you use an iPhone locked to a certain network, then the chances are that you will not be able to use it with another network even though you can technically change your operator keeping the same number. In a similar manner, if you want to move from one technology to another, such as CDMA to GSM or vice versa, the handset won't work due to incompatibility.&lt;br /&gt;&lt;br /&gt;To summarize, considering all the pros and cons, mobile number portability is a good thing that is happening and is something that should have been implemented many years ago. As is the usual case with all new technological implementations, there will be hiccups with MNP too. But we surmise that the end result will be good, or at least let us hope for the best. &lt;br /&gt;&lt;br /&gt;How many of you would go for MNP? Please do let us know in the comments section below.&lt;/span&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;&lt;br style="color: white;" /&gt;&lt;/span&gt;&lt;span style="color: #333333; font-family: Arial,Helvetica,sans-serif; font-size: 12px; height: 1%; line-height: 15px;"&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-550094275855431526?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/550094275855431526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2010/12/mobile-number-portability-things-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/550094275855431526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/550094275855431526'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2010/12/mobile-number-portability-things-to.html' title='Mobile Number Portability: Things to Know Mobile Number Portability: Things to Know'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-8923603679292567855</id><published>2010-10-26T12:34:00.000+05:30</published><updated>2010-10-26T12:34:19.951+05:30</updated><title type='text'>Developing / Testing Android applications for MOTOROLA Handsets</title><content type='html'>&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;&lt;/span&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Motorola provides lot of supporting tools for developin applications for their android handsets.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;They provides more development tools and resources such as SDK Add-ons for targeting Motorola handsets, useful libraries, and sample source code.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;visit this link for more information:&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;http://developer.motorola.com/docstools/&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;for more&lt;b&gt; &lt;/b&gt;Additional Tools &amp;amp; Resources&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;http://developer.motorola.com/docstools/tools/&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;You can download SDK's and handset emulators and sample codes&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt; .&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;for installation of SDK addon's&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: small;"&gt;goto this link &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;http://developer.motorola.com/docstools/library/Installing_the_Motorola_SDK_Add-on/&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;have a happy development.&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-8923603679292567855?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/8923603679292567855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2010/10/developing-testing-android-applications.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/8923603679292567855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/8923603679292567855'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2010/10/developing-testing-android-applications.html' title='Developing / Testing Android applications for MOTOROLA Handsets'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-5282516939405641830</id><published>2010-10-26T12:23:00.000+05:30</published><updated>2010-10-26T12:23:59.907+05:30</updated><title type='text'>Developing Android applications for Samsung GALAXY Tablet</title><content type='html'>&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;&lt;/span&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Suppose,you are writing an application which is targeted to SAMSUNG GALAXY TABLET version,unfortunately you don't have a real device.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Developing for Samsung GALAXY Tab is no different from developing for any other Android based device.            By utilizing only public APIs provided in            the Android SDK and follow the guidelines and tips below, applications will not just work on the GALAXY Tab but also scale correctly.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://innovator.samsungmobile.com/images/event/galaxy_1005_top02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://innovator.samsungmobile.com/images/event/galaxy_1005_top02.jpg" width="237" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;If you test the application in android 2.2 emulator it was not perfect and if you run the same in real device,you will unexpected results.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;In this case,you can test in ORIGINAL samsung galaxy tablet emulator which is avaliable in SAMSUNG developer portal.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;It is with a 7” device and a screen resolution of 1024x600 the Samsung GALAXY Tab            provides a perfect form factor to optimize applications, by implementing UI and UX            enhancements previously not possible.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Samsung GALAXY Tab Add-on Installation Guidelines&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;1)  Run AVD Manager on Eclipse IDE.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://innovator.samsungmobile.com/images/event/galaxy_1005_01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="121" src="http://innovator.samsungmobile.com/images/event/galaxy_1005_01.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;2) Select Available Packages in the left panel of AVD Manager.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://innovator.samsungmobile.com/images/event/galaxy_1005_02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="186" src="http://innovator.samsungmobile.com/images/event/galaxy_1005_02.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;3) Click “Add ADD-on Site” and enter the URL below.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp; &lt;span style="font-size: x-small;"&gt;&amp;nbsp; &lt;a href="http://innovator.samsungmobile.com/android/repository/srepository.xml" target="_blank"&gt;http://innovator.samsungmobile.com/android/repository/srepository.xml&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://innovator.samsungmobile.com/images/event/galaxy_1005_03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://innovator.samsungmobile.com/images/event/galaxy_1005_03.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;4) Check Samsung GALAXY Tab Add-on packages and click install button.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://innovator.samsungmobile.com/images/event/galaxy_1005_04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://innovator.samsungmobile.com/images/event/galaxy_1005_04.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;5) Check Samsung GALAXY Tab Add-on license &amp;amp; Click install button.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://innovator.samsungmobile.com/images/event/galaxy_1005_11.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="159" src="http://innovator.samsungmobile.com/images/event/galaxy_1005_11.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;6) After downloading and installation of GALAXY Tab Add-on, you should restart ADB (Android Debug Bridge) or Eclipse.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://innovator.samsungmobile.com/images/event/galaxy_1005_07.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="211" src="http://innovator.samsungmobile.com/images/event/galaxy_1005_07.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://innovator.samsungmobile.com/images/event/galaxy_1005_08.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="187" src="http://innovator.samsungmobile.com/images/event/galaxy_1005_08.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Now,you can see the installed addon in Installed Packages of AVD manager and in list of targets available.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://innovator.samsungmobile.com/images/event/galaxy_1005_09.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="184" src="http://innovator.samsungmobile.com/images/event/galaxy_1005_09.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;You can create samsung galaxy tablet emulator by selecting&lt;b&gt;&amp;nbsp; &lt;/b&gt;samsung galaxy as Target device.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;And output is as shown below:&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://innovator.samsungmobile.com/images/event/galaxy_1005_top03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://innovator.samsungmobile.com/images/event/galaxy_1005_top03.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;/div&gt;&lt;h2 style="font-family: Verdana,sans-serif; font-weight: normal;"&gt;Quick Guide Tips:&lt;/h2&gt;&lt;h2 style="font-family: Verdana,sans-serif; font-weight: normal;"&gt;&lt;span style="font-size: small;"&gt;Samsung GALAXY Tab is a 7” inch device with 1024x600(WSVGA) resolution running Android 2.2 (Froyo). The following guidelines will help developers optimize applications for the best possible user experience.&lt;/span&gt;&lt;/h2&gt;&lt;h2 style="font-family: Verdana,sans-serif; font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;                   Make sure that high density display (HDPI) resources are in the application package, as the tablet display requires these resources. Most Android devices are API level 4 or greater. We recommend porting over our application with minSDKVersion=4                or greater. This allows you to add HPDI resources in the application package. If the system cannot find the                HPDI resources and android:anyDensity=”true”&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;&lt;h2 style="font-family: Verdana,sans-serif; font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;has been set, the existing resources will be scaled which may not give the user the best experience.                &lt;/span&gt;&lt;/h2&gt;&lt;h2 style="font-family: Verdana,sans-serif; font-weight: normal;"&gt;&lt;span style="font-size: small;"&gt;The following are values are default for the Samsung Android Tablet:&lt;/span&gt;&lt;/h2&gt;&lt;h2 style="font-family: Verdana,sans-serif; font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;DeviceMetrics.density = 240&lt;br /&gt;                            DeviceMetrics.xdpi = 168&lt;br /&gt;                            DeviceMetrics.ydpi = 168&lt;br /&gt;                            The density system property value has been set as&lt;br /&gt;                            [ro.sf.lcd_density]:[240]                        &lt;/span&gt;&lt;/h2&gt;&lt;h2 style="font-family: Verdana,sans-serif; font-weight: normal;"&gt;&lt;/h2&gt;&lt;h2 style="font-family: Verdana,sans-serif; font-weight: normal;"&gt;&lt;span style="font-size: small;"&gt;When using bitmap resources like advertisement banners,                    work with your ad vendor to get the correct banner size.                    Scale the bitmap programmatically by getting the device height and width at runtime as follows:&lt;/span&gt;&lt;/h2&gt;&lt;h2 style="font-family: Verdana,sans-serif; font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;WindowManager mWMgr = &lt;br /&gt;                            (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);&lt;br /&gt;                            int width = mWMgr.getDefaultDisplay().getWidth();&lt;br /&gt;                            int height - mWMgr.getDefaultDisplay().getHeight();&amp;nbsp;                        &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/h2&gt;&lt;h2 style="font-family: Verdana,sans-serif; font-weight: normal;"&gt;                    &lt;span style="font-size: small;"&gt;Android Market filters out applications based on the values specified in the &lt;b&gt;AndroidManifest.xml&lt;/b&gt; file.                    The 7” inch tablet is a “large” screen.&lt;br /&gt;                &amp;nbsp;&amp;nbsp;&amp;nbsp; So, for applications which have minSDKVersion=3, define support-screens tag explicitly as:&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;supports-screens android:anydensity="“true”" android:largescreens="“true”"&gt;                        &lt;/supports-screens&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;                    &lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;Follow the recommended generic compatibility guidelines, such as: &lt;/span&gt;                    &lt;/div&gt;&lt;div class="mgl10" style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;                    - In XML layout, Use wrap_content, fill_parent&lt;br /&gt;                    - Use FrameLayout instead of AbsoluteLayout&lt;br /&gt;                    - NEVER use hard-coding for pixel value, use dip (density independent pixel)&lt;br /&gt;                    - Use resources according to each density, resolution category.&lt;/span&gt;&lt;/div&gt;&lt;div class="mgl10" style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="mgl10" style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;References :&lt;/b&gt;&lt;br /&gt;            &lt;a href="http://developer.android.com/guide/practices/screens_support.html" target="_blank"&gt;http://developer.android.com/guide/practices/screens_support.html&lt;/a&gt;&lt;br /&gt;            &lt;a href="http://developer.android.com/guide/appendix/market-filters.html" target="_blank"&gt;http://developer.android.com/guide/appendix/market-filters.html&lt;/a&gt;&lt;br /&gt;            &lt;a href="http://developer.android.com/resources/dashboard/platform-versions.html" target="_blank"&gt;http://developer.android.com/resources/dashboard/platform-versions.html&lt;/a&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="mgl10" style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;                    &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-5282516939405641830?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/5282516939405641830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2010/10/developing-android-applications-for.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/5282516939405641830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/5282516939405641830'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2010/10/developing-android-applications-for.html' title='Developing Android applications for Samsung GALAXY Tablet'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-281687466152055640</id><published>2010-10-26T11:44:00.000+05:30</published><updated>2010-10-26T11:44:19.036+05:30</updated><title type='text'>Copying  Larger database files in ANDROID Application</title><content type='html'>&lt;div style="font-family: Verdana,sans-serif;"&gt;If you are trying to import or copy an already existing database  ( More than 1Mb in size) file to your application then you will certainly get the following error when you are trying to copy the database.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;/div&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;D/asset (909): Data exceeds UNCOMPRESS_DATA_MAX (1424000 vs 1048576)&amp;nbsp;&lt;/b&gt;&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;Due to the fact that there is a file size limit (upto 1 MB) on resources in the raw or assets folders.&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;Finally it indicates that you can not copy the file which is &amp;gt;1 MB into your application at runtime.&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;I faced this problem when i need to import an 1.5 MB database file into application.&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;I solved in the following way.&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;1) Split the files&lt;/b&gt;.  I used the linux split command to split the binary database file &lt;br /&gt;into a maximum of 1048576 bytes.&amp;nbsp;&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;The command is:&lt;br /&gt;&lt;b&gt;split inputfile -b 1048576 outfileprefix&amp;nbsp;&lt;/b&gt;&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;and the files come out as outfileprefixaa, outfileprefixab, etc.&amp;nbsp;&amp;nbsp;&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;2)&lt;b&gt;Copy these files into my raw resource folder &lt;/b&gt;and set up my code to &lt;br /&gt;create and then close a database automatically using SQLiteOpenHelper &lt;br /&gt;and then to run the following method:&amp;nbsp;&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt; private void &lt;b&gt;copyDatabase()&lt;/b&gt; throws IOException{&lt;br /&gt;       &lt;br /&gt;        OutputStream databaseOutputStream = new &lt;br /&gt;FileOutputStream("/data/data/com.domain.app/databases/app.db");&lt;br /&gt;         InputStream databaseInputStream;&lt;br /&gt;       &lt;br /&gt;        byte[] buffer = new byte[1024];&lt;br /&gt;        int length;&lt;br /&gt;       &lt;br /&gt;        databaseInputStream = &lt;br /&gt;databaseOpenHelperContext.getResources().openRawResource(R.raw.datafileaa);&lt;br /&gt;        while ( (length = databaseInputStream.read(buffer)) &amp;gt; 0 ) {&lt;br /&gt;            databaseOutputStream.write(buffer);&lt;br /&gt;        }&lt;br /&gt;        databaseInputStream.close();&lt;br /&gt;       &lt;br /&gt;        databaseInputStream = &lt;br /&gt;databaseOpenHelperContext.getResources().openRawResource(R.raw.datafileab);&lt;br /&gt;        while ( (length = databaseInputStream.read(buffer)) &amp;gt; 0 ) {&lt;br /&gt;            databaseOutputStream.write(buffer);&lt;br /&gt;        }&lt;br /&gt;        databaseInputStream .close();&amp;nbsp;       &lt;br /&gt;        databaseOutputStream.flush();&lt;br /&gt;        databaseOutputStream.close();&lt;br /&gt;    }&amp;nbsp;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;This solution works perfectly.  And it's very fast.  My final database &lt;br /&gt;size on the emulator is 1424000 bytes (about 1.5 MB).  It copies almost &lt;br /&gt;instantly.  There is no delay when the application first runs.  However, &lt;br /&gt;remember that the resource files remain installed, and you've copied the &lt;br /&gt;data to a database.&amp;nbsp;&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;Good luck to all you database pre-populators and I hope this helps.  I &lt;br /&gt;welcome any input and correction to this document as I am no expert and &lt;br /&gt;may be doing something that isn't kosher in my code.&amp;nbsp;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;By this we can copy a larger file into application database.&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt; &lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt; &lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt; &lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-281687466152055640?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/281687466152055640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2010/10/copying-larger-database-files-in.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/281687466152055640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/281687466152055640'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2010/10/copying-larger-database-files-in.html' title='Copying  Larger database files in ANDROID Application'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-5551250110717263846</id><published>2010-09-22T18:00:00.000+05:30</published><updated>2010-09-22T18:00:55.097+05:30</updated><title type='text'>Get IP address of device in android</title><content type='html'>&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;AIM :Get IP address of device in android&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;Solution:&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;The following method returns the device ip address which is currently used by device irrespective of type of connection ie.,either 3g/wifi/any other.&lt;br /&gt;&lt;br /&gt;It returns NULL if there is no network connection.&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;public static String getipAddress() { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (Enumeration&lt;networkinterface&gt; en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NetworkInterface intf = en.nextElement();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (Enumeration&lt;inetaddress&gt; enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InetAddress inetAddress = enumIpAddr.nextElement();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!inetAddress.isLoopbackAddress()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String ipaddress=inetAddress.getHostAddress().toString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log.e("ip address",""+ipaddress);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ipaddress;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (SocketException ex) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.e("Socket exception in GetIP Address of Utilities", ex.toString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return null; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/inetaddress&gt;&lt;/networkinterface&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;Call the above method wherever you wnat to get ip address as&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;String ipaddress=getipAddress();&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;--------------------------&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-5551250110717263846?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/5551250110717263846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2010/09/get-ip-address-of-device-in-android.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/5551250110717263846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/5551250110717263846'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2010/09/get-ip-address-of-device-in-android.html' title='Get IP address of device in android'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-8027721783249887693</id><published>2010-09-20T13:43:00.000+05:30</published><updated>2010-09-20T13:43:16.910+05:30</updated><title type='text'>ANDROID EXAMPLE CODE LINKS</title><content type='html'>&lt;br /&gt;&lt;a href="http://code.google.com/p/and-examples/source/browse/#svn/trunk/database%3Fstate%3Dclosed"&gt;http://code.google.com/p/and-examples/source/browse/#svn/trunk/database%3Fstate%3Dclosed&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-8027721783249887693?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/8027721783249887693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2010/09/android-example-code-links.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/8027721783249887693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/8027721783249887693'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2010/09/android-example-code-links.html' title='ANDROID EXAMPLE CODE LINKS'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-6373184730716670419</id><published>2010-09-07T17:47:00.000+05:30</published><updated>2010-09-07T17:47:45.744+05:30</updated><title type='text'>Vibrate ,Lock the screen,getPhonenumber in android</title><content type='html'>&lt;span class="Apple-style-span" style="color: #666666; font-family: 'lucida grande', verdana, helvetica, sans-serif; font-size: 12px; line-height: 18px;"&gt;&lt;b&gt;Vibrate the Phone&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #666666; font-family: 'lucida grande', verdana, helvetica, sans-serif; font-size: 12px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #666666; font-family: 'lucida grande', verdana, helvetica, sans-serif; font-size: 12px; line-height: 18px;"&gt;You can vibrate the phone for a specified duration like so:&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;pre style="font-size: 12px;"&gt;&lt;tt&gt;&lt;span style="color: #990000;"&gt;(&lt;/span&gt;Vibrator&lt;span style="color: #990000;"&gt;)&lt;/span&gt; &lt;b&gt;&lt;span style="color: black;"&gt;getSystemService&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #990000;"&gt;(&lt;/span&gt;Context&lt;span style="color: #990000;"&gt;.&lt;/span&gt;VIBRATOR_SERVICE&lt;span style="color: #990000;"&gt;).&lt;/span&gt;&lt;b&gt;&lt;span style="color: black;"&gt;vibrate&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #990000;"&gt;(&lt;/span&gt;milliseconds&lt;span style="color: #990000;"&gt;);&lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px;"&gt;&lt;tt&gt;&lt;span style="color: #990000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px;"&gt;&lt;tt&gt;&lt;span style="color: #990000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px;"&gt;&lt;tt&gt;&lt;span style="color: #990000;"&gt;&lt;span class="Apple-style-span" style="color: #666666; font-family: 'lucida grande', verdana, helvetica, sans-serif; white-space: normal;"&gt;You can use the AudioManager to enable and disable silent mode.&amp;nbsp;&lt;br /&gt;&lt;pre style="font-size: 12px;"&gt;&lt;tt&gt;mAudio &lt;span style="color: #990000;"&gt;=&lt;/span&gt; &lt;span style="color: #990000;"&gt;(&lt;/span&gt;AudioManager&lt;span style="color: #990000;"&gt;)&lt;/span&gt; &lt;b&gt;&lt;span style="color: black;"&gt;getSystemService&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #990000;"&gt;(&lt;/span&gt;Activity&lt;span style="color: #990000;"&gt;.&lt;/span&gt;AUDIO_SERVICE&lt;span style="color: #990000;"&gt;);&lt;/span&gt;&lt;br /&gt;mAudio&lt;span style="color: #990000;"&gt;.&lt;/span&gt;&lt;b&gt;&lt;span style="color: black;"&gt;setRingerMode&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #990000;"&gt;(&lt;/span&gt;AudioManager&lt;span style="color: #990000;"&gt;.&lt;/span&gt;RINGER_MODE_SILENT&lt;span style="color: #990000;"&gt;);  &lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px;"&gt;&lt;tt&gt;&lt;span style="color: #990000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px;"&gt;&lt;tt&gt;&lt;span style="color: #990000;"&gt;&lt;span class="Apple-style-span" style="color: #666666; font-family: 'lucida grande', verdana, helvetica, sans-serif; white-space: normal;"&gt;&lt;h1 style="color: black; font-size: 16px;"&gt;&lt;br /&gt;&amp;nbsp;to lock the screen in an Android app?&lt;/h1&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;Remember you need to give permissions for it:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;and add these lines to code.&lt;/div&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px;"&gt;&lt;tt&gt;&lt;span style="color: #990000;"&gt;&lt;span class="Apple-style-span" style="color: #666666; font-family: 'lucida grande', verdana, helvetica, sans-serif; white-space: normal;"&gt;&lt;pre style="font-size: 12px;"&gt;&lt;tt&gt;&lt;span style="color: teal;"&gt;KeyguardManager&lt;/span&gt; keyguardManager &lt;span style="color: #990000;"&gt;=&lt;/span&gt; &lt;span style="color: #990000;"&gt;(&lt;/span&gt;KeyguardManager&lt;span style="color: #990000;"&gt;)&lt;/span&gt; &lt;b&gt;&lt;span style="color: black;"&gt;getSystemService&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #990000;"&gt;(&lt;/span&gt;Activity&lt;span style="color: #990000;"&gt;.&lt;/span&gt;KEYGUARD_SERVICE&lt;span style="color: #990000;"&gt;);&lt;/span&gt; &lt;br /&gt;&lt;span style="color: teal;"&gt;KeyguardLock&lt;/span&gt; lock &lt;span style="color: #990000;"&gt;=&lt;/span&gt; keyguardManager&lt;span style="color: #990000;"&gt;.&lt;/span&gt;&lt;b&gt;&lt;span style="color: black;"&gt;newKeyguardLock&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #990000;"&gt;(&lt;/span&gt;KEYGUARD_SERVICE&lt;span style="color: #990000;"&gt;);&lt;/span&gt; &lt;br /&gt;lock&lt;span style="color: #990000;"&gt;.&lt;/span&gt;&lt;b&gt;&lt;span style="color: black;"&gt;disableKeyguard&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #990000;"&gt;();&lt;/span&gt; &lt;/tt&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px;"&gt;&lt;tt&gt;&lt;span style="color: #990000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px;"&gt;&lt;tt&gt;&lt;span style="color: #990000;"&gt;&lt;span class="Apple-style-span" style="color: #666666; font-family: 'lucida grande', verdana, helvetica, sans-serif; white-space: normal;"&gt;&lt;h1 style="color: black; font-size: 16px;"&gt;&lt;br /&gt;How to get my telephone number?&lt;/h1&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;add the line uses-permission android:name="android.permission.READ_PHONE_STATE" to the manifest.xml&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px;"&gt;&lt;tt&gt;&lt;span style="color: #990000;"&gt;&lt;span class="Apple-style-span" style="color: #666666; font-family: 'lucida grande', verdana, helvetica, sans-serif; white-space: normal;"&gt;&lt;pre style="font-size: 12px;"&gt;&lt;tt&gt; &lt;span style="color: teal;"&gt;TelephonyManager&lt;/span&gt; mTelephonyMgr&lt;span style="color: #990000;"&gt;;&lt;/span&gt;&lt;br /&gt; mTelephonyMgr &lt;span style="color: #990000;"&gt;=&lt;/span&gt; &lt;span style="color: #990000;"&gt;(&lt;/span&gt;TelephonyManager&lt;span style="color: #990000;"&gt;)&lt;/span&gt;&lt;b&gt;&lt;span style="color: black;"&gt;getSystemService&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #990000;"&gt;(&lt;/span&gt;Context&lt;span style="color: #990000;"&gt;.&lt;/span&gt;TELEPHONY_SERVICE&lt;span style="color: #990000;"&gt;);&lt;/span&gt; &lt;br /&gt; &lt;b&gt;&lt;span style="color: blue;"&gt;String phonenumber=&lt;/span&gt;&lt;/b&gt; mTelephonyMgr&lt;span style="color: #990000;"&gt;.&lt;/span&gt;&lt;b&gt;&lt;span style="color: black;"&gt;getLine1Number&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #990000;"&gt;();&lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px;"&gt;&lt;tt&gt;&lt;span style="color: #990000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px;"&gt;&lt;tt&gt;&lt;span style="color: #990000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-6373184730716670419?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/6373184730716670419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2010/09/vibrate-lock-screengetphonenumber-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/6373184730716670419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/6373184730716670419'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2010/09/vibrate-lock-screengetphonenumber-in.html' title='Vibrate ,Lock the screen,getPhonenumber in android'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-507023787142801028</id><published>2010-09-07T17:41:00.000+05:30</published><updated>2010-09-07T17:41:51.323+05:30</updated><title type='text'>How to hide the title bar(FULL SCREEN MODE ) ?</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #666666; font-family: 'lucida grande', verdana, helvetica, sans-serif; font-size: 12px; line-height: 18px;"&gt;&lt;/span&gt;&lt;br /&gt;Add this lines in your code in oncreate() method just before setting setContentView() method.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&amp;nbsp;requestWindowFeature(Window.FEATURE_NO_TITLE);&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&amp;nbsp;this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,&amp;nbsp;&amp;nbsp;WindowManager.LayoutParams.FLAG_FULLSCREEN);&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;setContentView(R.layout.main); &amp;nbsp; &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/6281777251296059140-507023787142801028?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/507023787142801028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2010/09/how-to-hide-title-barfull-screen-mode.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/507023787142801028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/507023787142801028'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2010/09/how-to-hide-title-barfull-screen-mode.html' title='How to hide the title bar(FULL SCREEN MODE ) ?'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-238145273084360519</id><published>2010-09-07T17:17:00.001+05:30</published><updated>2010-09-07T17:17:54.551+05:30</updated><title type='text'>Notification in Android</title><content type='html'>&lt;u&gt;AIM : &lt;/u&gt;&amp;nbsp;Notification in Android.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;SOLUTION&lt;/u&gt;&lt;br /&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;&amp;nbsp;int NOTIFICATION_ID=1;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;NotificationManager mManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;Notification notification = new Notification(R.drawable.icon,"Notify", System.currentTimeMillis());&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;notification.setLatestEventInfo(getApplicationContext(), "Title", "Description", null);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;mManager.notify(NOTIFICATION_ID, notification);;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;To cancel &amp;nbsp;the same notification,call&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;mManager.cancel(NOTIFICATION_ID);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-238145273084360519?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/238145273084360519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2010/09/notification-in-android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/238145273084360519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/238145273084360519'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2010/09/notification-in-android.html' title='Notification in Android'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-8481048351626552354</id><published>2010-09-07T16:59:00.000+05:30</published><updated>2010-09-07T16:59:13.032+05:30</updated><title type='text'>Turn off / on wifi in android using code</title><content type='html'>&lt;br /&gt;AIM:&amp;nbsp;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 21px;"&gt;&amp;nbsp;To turn on and turn off wifi in android.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 21px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 21px;"&gt;SOLUTION :&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 21px;"&gt;&amp;nbsp;Declare the following in your manifest file.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 21px;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 14px; line-height: 12px; white-space: pre;"&gt;&amp;lt; uses-permission android:name="android.permission.ACCESS_WIFI_STATE" / &amp;gt; &amp;lt; uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"/ &amp;gt; &amp;lt; uses-permission android:name="android.permission.CHANGE_WIFI_STATE" / &amp;gt; &amp;lt; uses-permission android:name="android.permission.WAKE_LOCK" / &amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 21px;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 14px; line-height: 12px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 21px;"&gt;In &amp;nbsp;your Activity class&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 21px;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 14px; line-height: 12px; white-space: pre;"&gt;private WifiManager wifiManager;&lt;br /&gt;@Override &lt;br /&gt;public void onCreate(Bundle icicle) {&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 21px;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 14px; line-height: 12px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: 15px; line-height: 21px; white-space: normal;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 21px;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 14px; line-height: 12px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: 15px; line-height: 21px; white-space: normal;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; // Get the Wifi service from our system&lt;/span&gt;&lt;br /&gt;&amp;nbsp; wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: 15px; line-height: 21px; white-space: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 21px;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 14px; line-height: 12px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: 15px; line-height: 21px; white-space: normal;"&gt;&amp;nbsp;&amp;nbsp;// Check the our wifi is currently turned on or turned off&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 21px;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 14px; line-height: 12px; white-space: pre;"&gt; if(wifiManager.isWifiEnabled()){&lt;br /&gt;&amp;nbsp; &amp;nbsp; wifiManager.setWifiEnabled(false);  // &lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: 15px; line-height: 21px; white-space: normal;"&gt;Turn on/off our wifi&lt;/span&gt;&lt;br /&gt;&amp;nbsp; }else{&lt;br /&gt;&amp;nbsp; &amp;nbsp; wifiManager.setWifiEnabled(true);&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 21px;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 14px; line-height: 12px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 21px;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 14px; line-height: 12px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 21px;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 14px; line-height: 12px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-8481048351626552354?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/8481048351626552354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2010/09/turn-off-on-wifi-in-android-using-code.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/8481048351626552354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/8481048351626552354'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2010/09/turn-off-on-wifi-in-android-using-code.html' title='Turn off / on wifi in android using code'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-6343856069459395888</id><published>2010-08-31T20:09:00.000+05:30</published><updated>2010-08-31T20:09:11.787+05:30</updated><title type='text'>Working  With Canvas in Android</title><content type='html'>&amp;nbsp;&lt;b&gt;&lt;u&gt;Some Examples to work with Canvas&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Drawing a Round Rectangle&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Path path = new Path();&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;RectF rect=new RectF(60, &amp;nbsp;05, 300, 25);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;// rectangle with 10 px Radius&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;path.addRoundRect(rect, 10, 10, Direction.CCW);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;canvas.drawPath(path, p);&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Drawing a text&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Paint p = new Paint();&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;p.setColor(Color.WHITE);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.setTextSize(16);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Typeface tf=Typeface.SANS_SERIF ;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;p.setTypeface(tf);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;p.setFakeBoldText(true);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;canvas.drawText("Map ", 380, 20, &amp;nbsp;p);&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Drawing a Bitmap Image&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Bitmap mapbmp=BitmapFactory.decodeResource(getResources(), R.drawable.mapicon);&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;canvas.drawBitmap(mapbmp, 360, 05, p);&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&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/6281777251296059140-6343856069459395888?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/6343856069459395888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2010/08/working-with-canvas-in-android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/6343856069459395888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/6343856069459395888'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2010/08/working-with-canvas-in-android.html' title='Working  With Canvas in Android'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-1883548574401176069</id><published>2010-08-31T20:02:00.000+05:30</published><updated>2010-08-31T20:02:41.330+05:30</updated><title type='text'>Working  With  Bitmap Images in Android</title><content type='html'>&amp;nbsp;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;u&gt;Scaling an Bitmap Image :&amp;nbsp;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;Let suppose you have an image named &lt;b&gt;bar.png&lt;/b&gt; in the folder &lt;b&gt;drawable&lt;/b&gt; &amp;nbsp;of your project with size &lt;b&gt;200 * 200 px.&amp;nbsp;&lt;/b&gt;And you wanted to scale it to some size let suppose &lt;b&gt;400 * 400 px&lt;/b&gt;.&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Bitmap bmp=BitmapFactory.decodeResource(getResources(), R.drawable.bar);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;bmp = Bitmap.createScaledBitmap(bmp, 400,400, &amp;nbsp;true);&lt;br /&gt;&lt;br /&gt;Now your image is scaled to 400 * 400 px.&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;u&gt;Rotating an Bitmap Image : &amp;nbsp;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Bitmap bmp=BitmapFactory.decodeResource(getResources(), R.drawable.bar);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Matrix mtx = new Matrix();&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;mtx.postRotate(180); &amp;nbsp; // rotating 180&amp;nbsp;degrees&amp;nbsp;clockwise&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;Bitmap rotatedBMP = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth() ,bmp.getHeight() , mtx, true); &amp;nbsp;// creating the bitmap image with new angle.&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Now , bmp has original image,&amp;nbsp;rotatedBMP has image with 180 degrees rotated.&lt;br /&gt;&lt;br /&gt;&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/6281777251296059140-1883548574401176069?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/1883548574401176069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2010/08/working-with-bitmap-images-in-android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/1883548574401176069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/1883548574401176069'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2010/08/working-with-bitmap-images-in-android.html' title='Working  With  Bitmap Images in Android'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-7210520532452178605</id><published>2010-08-27T12:31:00.000+05:30</published><updated>2010-08-27T12:31:20.698+05:30</updated><title type='text'>Lazy Loading of Images in List-view in android</title><content type='html'>Suppose ,you have a list View in your activity where you have to download the data and&amp;nbsp;corresponding&amp;nbsp;images and show it in the list.&lt;br /&gt;&lt;br /&gt;Generally if you download both the data and images once and after &amp;nbsp;downloading of data you will show it in the list which will take a longer duration particularly depends on net connectivity speed.&lt;br /&gt;&lt;br /&gt;For Reducing the time ,first we download the text ie.,names,links except images .we will put the download links in a stack and we will download them after displaying the&amp;nbsp;list-view&amp;nbsp;by using&amp;nbsp;late downloading&amp;nbsp;of images.&lt;br /&gt;First the list will show and images will show in their corresponding position in the list whenever it got downloaded exactly like android market application.&lt;br /&gt;This will reduce the time and we can&amp;nbsp;download&amp;nbsp;as many items we want to show as like working of android market list view.&lt;br /&gt;You can download the sample working project by clicking here&amp;nbsp;&lt;a href="http://www.mediafire.com/?2gnd69t74a20z9x"&gt;Download the full working Project.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hope it helps you in writing fast applications.&lt;br /&gt;&lt;br /&gt;If it doesn't work for you ,please let me know.&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/6281777251296059140-7210520532452178605?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/7210520532452178605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2010/08/lazy-loading-of-images-in-list-view-in.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/7210520532452178605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/7210520532452178605'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2010/08/lazy-loading-of-images-in-list-view-in.html' title='Lazy Loading of Images in List-view in android'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-8380553007795652796</id><published>2010-08-27T12:17:00.000+05:30</published><updated>2010-08-27T12:17:45.595+05:30</updated><title type='text'>ImageCrop in android</title><content type='html'>AIM: To &amp;nbsp;crop the Image in android.&lt;br /&gt;Solution:&lt;br /&gt;The main thing &amp;nbsp;is open gallery with the intent to Crop the image.&lt;br /&gt;as&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;intent.setType("image/*");&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;intent.putExtra("crop", "true");&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;intent.putExtra("aspectX", aspectX);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;intent.putExtra("aspectY", aspectY);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;intent.putExtra("outputX", outputX);&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;intent.putExtra("outputY", outputY);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;intent.putExtra("scale", scale);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;intent.putExtra("return-data", return_data);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;intent.putExtra(MediaStore.EXTRA_OUTPUT, getTempUri());&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;intent.putExtra("noFaceDetection",!faceDetection); // lol, negative boolean noFaceDetection&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (circleCrop) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;intent.putExtra("circleCrop", true);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;startActivityForResult(intent, PHOTO_PICKED);&lt;br /&gt;&lt;br /&gt;You can download the entire project here by clicking &lt;a href="http://www.mediafire.com/?ttdir0w65x0k33w"&gt;DOWNLOAD PHOTO CROP CODE.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If any problems let me know.&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/6281777251296059140-8380553007795652796?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/8380553007795652796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2010/08/imagecrop-in-android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/8380553007795652796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/8380553007795652796'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2010/08/imagecrop-in-android.html' title='ImageCrop in android'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-8605548456430214221</id><published>2010-08-25T15:08:00.001+05:30</published><updated>2010-08-25T15:12:50.080+05:30</updated><title type='text'>Show two Buttons at the Bottom of the screen in ANDROID</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_BrMl71W5OI8/THTlawkwYRI/AAAAAAAAAPY/65epnzCpD8s/s1600/device.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_BrMl71W5OI8/THTlawkwYRI/AAAAAAAAAPY/65epnzCpD8s/s320/device.png" /&gt;&lt;/a&gt;&lt;/div&gt;This Layout will show the two buttons at the bottom irrespective of the top content and screen resolutions.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt; RelativeLayout&lt;br /&gt;&lt;br /&gt;&lt;relativelayout&gt;&lt;/relativelayout&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;xmlns:android="http://schemas.android.com/apk/res/android"&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:layout_width="fill_parent"&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:layout_height="fill_parent"&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:orientation="vertical"&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:id="@+id/root"&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt; LinearLayout&lt;linearlayout&gt;&lt;/linearlayout&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; android:id="@+id/buttons"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; android:orientation="horizontal"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; android:layout_width="fill_parent"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; android:layout_alignParentBottom="true"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; Button&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; android:id="@+id/buttonbefore"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; android:layout_width="fill_parent"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; android:layout_weight="50"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; android:text="back"/ &amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; Button&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:id="@+id/buttonnext"&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:layout_width="fill_parent"&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:layout_height="wrap_content"&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:layout_weight="50"&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:text="Next"&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/ &amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt; / LinearLayout&amp;gt;&lt;br /&gt;&amp;lt; !-- Content Layout Put as you like -- &amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt; ScrollView&lt;scrollview&gt;&lt;/scrollview&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:layout_above="@id/buttons"&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:layout_width="fill_parent"&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:layout_height="fill_parent"&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:fillViewport="true"&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; LinearLayout&lt;linearlayout&gt;&lt;/linearlayout&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:layout_width="fill_parent"&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:layout_height="wrap_content"&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:orientation="vertical"&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:layout_margin="3px"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; TextView&lt;textview&gt;&lt;/textview&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:id="@+id/tv_1"&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:layout_width="fill_parent"&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:layout_height="wrap_content"&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:textStyle="bold"&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:text="start! 1111111111...."&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/ &amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;textview&gt;&lt;/textview&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;textview&gt;&lt;/textview&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:id="@+id/tv_1"&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:layout_width="fill_parent"&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:layout_height="wrap_content"&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:textStyle="bold"&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:text="start! 1111111111...."&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/ &amp;gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt; TextView&lt;textview&gt;&lt;/textview&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:id="@+id/tv_1"&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:layout_width="fill_parent"&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:layout_height="wrap_content"&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:textStyle="bold"&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;android:text="start! 1111111111...."&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/ &amp;gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt; / LinearLayout&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt; / ScrollView&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &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/6281777251296059140-8605548456430214221?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/8605548456430214221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2010/08/show-two-buttons-at-bottom-of-screen-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/8605548456430214221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/8605548456430214221'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2010/08/show-two-buttons-at-bottom-of-screen-in.html' title='Show two Buttons at the Bottom of the screen in ANDROID'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_BrMl71W5OI8/THTlawkwYRI/AAAAAAAAAPY/65epnzCpD8s/s72-c/device.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-9091572466422760810</id><published>2010-08-25T14:46:00.000+05:30</published><updated>2010-08-25T14:46:22.565+05:30</updated><title type='text'>JSON parsing in android</title><content type='html'>&amp;nbsp;AIM:To parse a Json string in android.&lt;br /&gt;Solution:&lt;br /&gt;&amp;nbsp;Step 1 ) Declare the json string .&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;JSONObject jObject;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;String jString = "{\"menu\": {\"id\": \"file\", \"value\": \"File\", \"popup\": { \"menuitem\": [ {\"value\": \"New\", &amp;nbsp; \"onclick\": \"CreateNewDoc()\"}, {\"value\": \"Open\", \"onclick\": \"OpenDoc()\"}, {\"value\": \"Close\", \"onclick\": \"CloseDoc()\"}]}}}";&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;S&lt;/span&gt;tep 2) &amp;nbsp;&lt;span class="Apple-style-span" style="color: #555555; font-family: Verdana, 'BitStream vera Sans', Helvetica, sans-serif; font-size: 12px; line-height: 17px;"&gt;convert jString to the jObject by&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #555555; font-family: Verdana, 'BitStream vera Sans', Helvetica, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 12px; line-height: 17px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;jObject = new JSONObject(jString);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #555555; font-family: Verdana, 'BitStream vera Sans', Helvetica, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 12px; line-height: 17px;"&gt;Step 3)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #555555; font-family: Verdana, 'BitStream vera Sans', Helvetica, sans-serif; font-size: 12px; line-height: 17px;"&gt;Lets extract the menu object by creating a new menu object,&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #555555; font-family: Verdana, 'BitStream vera Sans', Helvetica, sans-serif; font-size: 12px; line-height: 17px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #555555; font-family: Verdana, 'BitStream vera Sans', Helvetica, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 12px; line-height: 17px;"&gt;JSONObject menuObject = jObject.getJSONObject("menu");&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #555555; font-family: Verdana, 'BitStream vera Sans', Helvetica, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 12px; line-height: 17px;"&gt;&amp;nbsp;extract the attributes as follows:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: #555555; font-family: Verdana, 'BitStream vera Sans', Helvetica, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 12px; line-height: 17px;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #555555; font-family: Verdana, 'BitStream vera Sans', Helvetica, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 12px; line-height: 17px;"&gt;String attributeId = menuObject.getString("id");&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: #555555; font-family: Verdana, 'BitStream vera Sans', Helvetica, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 12px; line-height: 17px;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #555555; font-family: Verdana, 'BitStream vera Sans', Helvetica, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 12px; line-height: 17px;"&gt;Log.i("attributeID:",""+attributeId);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String attributeValue = menuObject.getString("value");&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #555555; font-family: Verdana, 'BitStream vera Sans', Helvetica, sans-serif; font-size: 12px; line-height: 17px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Log.i("attributeValue:",""+&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium; line-height: normal;"&gt;attributeValue&lt;/span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #555555; font-family: Verdana, 'BitStream vera Sans', Helvetica, sans-serif; font-size: 12px; line-height: 17px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #555555; font-family: Verdana, 'BitStream vera Sans', Helvetica, sans-serif; font-size: 12px; line-height: 17px;"&gt;Ste 4) Final code:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #555555; font-family: Verdana, 'BitStream vera Sans', Helvetica, sans-serif; font-size: 12px; line-height: 17px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #555555; font-family: Verdana, 'BitStream vera Sans', Helvetica, sans-serif; font-size: 12px; line-height: 17px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #555555; font-family: Verdana, 'BitStream vera Sans', Helvetica, sans-serif; font-size: 12px; line-height: 17px;"&gt;&lt;div&gt;private void JsonParsing() {&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;JSONObject jObject;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;String jString = "{\"menu\": {\"id\": \"file\", \"value\": \"File\", \"popup\": { \"menuitem\": [ {\"value\": \"New\", &amp;nbsp; \"onclick\": \"CreateNewDoc()\"}, {\"value\": \"Open\", \"onclick\": \"OpenDoc()\"}, {\"value\": \"Close\", \"onclick\": \"CloseDoc()\"}]}}}";&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;try {&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;jObject = new JSONObject(jString);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;JSONObject menuObject = jObject.getJSONObject("menu");&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;String attributeId = menuObject.getString("id");&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;System.out.println(attributeId);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;String attributeValue = menuObject.getString("value");&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;System.out.println(attributeValue);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;JSONObject popupObject = menuObject.getJSONObject("popup");&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;JSONArray menuitemArray = popupObject.getJSONArray("menuitem");&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;for (int i = 0; i &amp;lt; 3; i++) {&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;Log.i("Value",menuitemArray.getJSONObject(i)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;.getString("value").toString());&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;Log.i("Onclick:", menuitemArray.getJSONObject(i).getString(&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;"onclick").toString());&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;} catch (Exception e) {&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;e.printStackTrace();&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&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/6281777251296059140-9091572466422760810?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/9091572466422760810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2010/08/json-parsing-in-android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/9091572466422760810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/9091572466422760810'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2010/08/json-parsing-in-android.html' title='JSON parsing in android'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-5527533556930793505</id><published>2010-08-25T13:33:00.001+05:30</published><updated>2010-08-25T13:35:03.941+05:30</updated><title type='text'>Different Intents to perform some Basic operations In ANDROID</title><content type='html'>&lt;br /&gt;Hi,&lt;br /&gt;The below are some intents and usage of it.&lt;br /&gt;&lt;br /&gt;1) Open callHistory&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Intent i = new Intent();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;i.setAction(Intent.ACTION_VIEW);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;i.setData(android.provider.Contacts.People.CONTENT_URI);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;i.setType("vnd.android.cursor.dir/calls");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;startActivity(i);&lt;br /&gt;&lt;br /&gt;2) play a specified video file from sd card with video player.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;File videoFile2Play = new File("/sdcard/nice_movie.mpeg");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Intent i = new Intent();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;i.setAction(android.content.Intent.ACTION_VIEW);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;i.setDataAndType(Uri.fromFile(videoFile2Play), "video/mpeg");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;startActivity(i);&lt;br /&gt;&lt;br /&gt;3) play a specified audio file from sd card with music player.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;File musicFile2Play = new File("/sdcard/some_file.mp3");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Intent i2 = new Intent();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;i2.setAction(android.content.Intent.ACTION_VIEW);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;i2.setDataAndType(Uri.fromFile(musicFile2Play), "audio/mp3");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;startActivity(i2);&lt;br /&gt;&lt;br /&gt;4) some file types and their MIME types&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_BrMl71W5OI8/THTKeUs_Y0I/AAAAAAAAAPQ/mfeCRmYrZUk/s1600/Screenshot.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://3.bp.blogspot.com/_BrMl71W5OI8/THTKeUs_Y0I/AAAAAAAAAPQ/mfeCRmYrZUk/s640/Screenshot.png" width="459" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For MIME&amp;nbsp;documentation&amp;nbsp;visit this link &lt;a href="http://developer.android.com/reference/android/webkit/MimeTypeMap.html"&gt;HERE&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;5) &amp;nbsp;Open Browser with some website link.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px; white-space: pre;"&gt;&lt;span class="typ" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #2b91af; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Intent&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px; white-space: pre;"&gt;&lt;span class="pln" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt; i &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px; white-space: pre;"&gt;&lt;span class="pun" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px; white-space: pre;"&gt;&lt;span class="pln" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px; white-space: pre;"&gt;&lt;span class="kwd" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: darkblue; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px; white-space: pre;"&gt;&lt;span class="pln" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px; white-space: pre;"&gt;&lt;span class="typ" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #2b91af; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Intent&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px; white-space: pre;"&gt;&lt;span class="pun" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px; white-space: pre;"&gt;&lt;span class="typ" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #2b91af; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Intent&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px; white-space: pre;"&gt;&lt;span class="pun" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px; white-space: pre;"&gt;&lt;span class="pln" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;ACTION_VIEW&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px; white-space: pre;"&gt;&lt;span class="pun" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px; white-space: pre;"&gt;&lt;span class="typ" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #2b91af; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Uri&lt;/span&gt;&lt;span class="pun" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;span class="pln" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;parse&lt;/span&gt;&lt;span class="pun" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;(&lt;/span&gt;&lt;span class="str" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: maroon; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;"http://google.com"&lt;/span&gt;&lt;span class="pun" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;));&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px; white-space: pre;"&gt;&lt;span class="pun" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px; white-space: pre;"&gt;&lt;span class="pln" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;startActivity&lt;/span&gt;&lt;span class="pun" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;(&lt;/span&gt;&lt;span class="pln" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;i&lt;/span&gt;&lt;span class="pun" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px; white-space: pre;"&gt;&lt;span class="pun" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px; white-space: pre;"&gt;&lt;span class="pun" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;6) For &lt;a href="http://www.openintents.org/en/node/35"&gt;More intents &lt;/a&gt; please visit this link.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px; white-space: pre;"&gt;&lt;span class="pun" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;If anybody knows any intents please add them as comments.It will be very helpful.&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/6281777251296059140-5527533556930793505?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/5527533556930793505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2010/08/different-intents-to-perform-some-basic.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/5527533556930793505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/5527533556930793505'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2010/08/different-intents-to-perform-some-basic.html' title='Different Intents to perform some Basic operations In ANDROID'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_BrMl71W5OI8/THTKeUs_Y0I/AAAAAAAAAPQ/mfeCRmYrZUk/s72-c/Screenshot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-1723470998777368979</id><published>2010-08-25T12:30:00.000+05:30</published><updated>2010-08-25T12:30:00.273+05:30</updated><title type='text'>Check SD Card Present or Not in ANDROID</title><content type='html'>&lt;br /&gt;AIM: To check whether External Memory card is&amp;nbsp;available&amp;nbsp;or not.&lt;br /&gt;&lt;br /&gt;Solution:&lt;br /&gt;Use this block of code to do .&lt;br /&gt;&lt;br /&gt;if (android.os.Environment.getExternalStorageState().equals&lt;br /&gt;(android.os.Environment.MEDIA_MOUNTED))&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp;External Memory card is&amp;nbsp;available&amp;nbsp;for usage.&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// &amp;nbsp;External Memory card is not&amp;nbsp;available&amp;nbsp;for usage.ie.,not found.&lt;br /&gt;}&lt;br /&gt;&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/6281777251296059140-1723470998777368979?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/1723470998777368979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2010/08/check-sd-card-present-or-not-in-android.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/1723470998777368979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/1723470998777368979'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2010/08/check-sd-card-present-or-not-in-android.html' title='Check SD Card Present or Not in ANDROID'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-8177102873253778143</id><published>2010-08-24T17:58:00.000+05:30</published><updated>2010-08-24T17:58:59.657+05:30</updated><title type='text'>Some Books and related codes for android development</title><content type='html'>Hi,&lt;br /&gt;I would like to share some information with all the developers.&lt;br /&gt;This post may be very useful for those who just started android development.&lt;br /&gt;Here by i am giving some &amp;nbsp;links which has a great amount of stuff .&lt;br /&gt;The following are some links .&lt;br /&gt;&lt;br /&gt;Android development Books&lt;br /&gt;-------------------------------------&lt;br /&gt;1) &lt;b&gt;Book Name &amp;nbsp; : &amp;nbsp;&lt;/b&gt;Professional Android application development &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&amp;nbsp;Author &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:&amp;nbsp;&lt;/b&gt;&amp;nbsp;Reto Meier &lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;b&gt; About author&lt;/b&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;Reto has been involved in Android since the initial release&amp;nbsp;&amp;nbsp;in 2007. In his spare &amp;nbsp; time, he tinkers with a wide range of development platforms including WPF and&amp;nbsp;Google’s plethora of developer tools.You can check out Reto’s web site, The Radioactive Yak, you can check his &lt;a href="http://blog.radioactiveyak.com/"&gt;&lt;b&gt;blog&lt;/b&gt;&lt;/a&gt; here.&lt;br /&gt;you can also &lt;a href="http://www.mediafire.com/?zb87b8n4f8d2oof"&gt;&lt;b&gt;DOWNLOAD THIS BOOK&lt;/b&gt;&lt;/a&gt;&amp;nbsp;here.&lt;br /&gt;&lt;br /&gt;2)&amp;nbsp;&lt;b&gt;Book Name &amp;nbsp; : &amp;nbsp;&lt;/b&gt;Android Programming &amp;nbsp;&amp;nbsp;with Tutorials from the &lt;a href="http://anddev.org/"&gt;anddev.org&lt;/a&gt;-Community.&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&amp;nbsp;Author &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:&amp;nbsp;&lt;/b&gt;&amp;nbsp;Nicolas Gramlich &amp;nbsp;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;You can also&amp;nbsp;&lt;a href="http://www.mediafire.com/?3df5d2b1261wzu9"&gt;&lt;b&gt;DOWNLOAD THIS BOOK&lt;/b&gt;&lt;/a&gt;&amp;nbsp;here. You can &lt;a href="http://andbook.anddev.org/"&gt;check latest version &lt;/a&gt;of this book Here..&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;3)&amp;nbsp;&lt;b&gt;Book Name &amp;nbsp; :&amp;nbsp;&lt;/b&gt;&amp;nbsp;McGraw[1].Hill.Android.A.Programmers.Guide&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;b&gt;&amp;nbsp;Author &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: &amp;nbsp;&lt;/b&gt;J.F. DiMarzio&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;About author&lt;/b&gt;:&amp;nbsp;J.F. DiMarzio is a developer with over 15 years of&amp;nbsp;experience in networking and application development&amp;nbsp;and is the author of seven books on computing technologies.&amp;nbsp;He has become a leading resource in the fields of IT&amp;nbsp;consulting and development. He lives in Central Florida.&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;You can also&amp;nbsp;&lt;a href="http://www.mediafire.com/?dcdv6a9cx4d8zvb"&gt;&lt;b&gt;DOWNLOAD THIS BOOK&lt;/b&gt;&lt;/a&gt;&amp;nbsp;here.&amp;nbsp;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;4)&amp;nbsp;&lt;b&gt;Book Name &amp;nbsp; :&amp;nbsp;&lt;/b&gt;&amp;nbsp;Hello &amp;nbsp;Android &amp;nbsp; (Most&amp;nbsp;recommended&amp;nbsp;for Very Beginners)&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;b&gt;&amp;nbsp;Author &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:&amp;nbsp;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Ed Burnette&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;You can also&amp;nbsp;&lt;a href="http://www.mediafire.com/?8ah10e07r7ub2dx"&gt;&lt;b&gt;DOWNLOAD THIS BOOK&lt;/b&gt;&lt;/a&gt;&amp;nbsp;here.&amp;nbsp;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;5) &lt;a href="http://www.mediafire.com/?pozj1brls5yvbg1"&gt;PowerPoint Presentations By Google Developers.&lt;/a&gt;&amp;nbsp;(Very First step for Very Beginners)&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; Please download this zip file &amp;nbsp;first.Then follow for next process of learning android.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;&lt;u&gt;Code Tutorials :&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;The following links contains small programs needed for any developer which are built as&amp;nbsp;ready-made&amp;nbsp;projects.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;You can simply download and unzip the folder and create project just by import the source .You can see the output of the sample application.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;1) Code examples for the examples which are explained in the Book &amp;nbsp;"&lt;b&gt;Professional Android application development &lt;/b&gt;&amp;nbsp;by&amp;nbsp;Reto Meier".You can download by clicking &lt;a href="http://www.mediafire.com/?kqigxi6ycildc49"&gt;HERE&lt;/a&gt;.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;2)&amp;nbsp;Code examples for the examples which are explained in the Book &amp;nbsp;"&lt;b&gt;Hello &amp;nbsp;Android&lt;/b&gt;&amp;nbsp;&amp;nbsp;by&amp;nbsp;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Ed Burnette&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&amp;nbsp;".You can download by clicking&amp;nbsp;&lt;a href="http://www.mediafire.com/?dabou11okrsl748"&gt;&lt;b&gt;HERE&lt;/b&gt;&lt;/a&gt;.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;3) You can browse all the widgets&amp;nbsp;available&amp;nbsp;in android and how to use widgets ,you can learn about android UI development by downloading the &lt;b&gt;&lt;a href="http://www.mediafire.com/?nhqqdw06a470an0"&gt;CodeExampleProject&lt;/a&gt;&lt;/b&gt; here.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;&lt;u&gt;Reference Links :&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Some Useful Links or Blogs that you can get Much more information about android development tips and tricks and you can get&amp;nbsp;clarification&amp;nbsp;for your doubts also by posting your question.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;1. &lt;a href="http://www.openhandsetalliance.com/"&gt;Open Hanset Alliance. Open Hanset Alliance&lt;/a&gt;. &amp;nbsp;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;2. GoogleGroups. &lt;a href="http://code.google.com/android/groups.html"&gt;Android Discussion Groups&lt;/a&gt;. &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;3. Gramlich, Nicolas. Android Development Community |&lt;a href="http://anddev.org/"&gt; AndroidTutorials&lt;/a&gt;. &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; which is the most&amp;nbsp;viewed Tutorial/Community-Board for Google Android up to date.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;4. Hobbs, Zach. &lt;a href="http://helloandroid.com/"&gt;Hello Android&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;5. Nguyen, Vincent. &lt;a href="http://androidcommunity.com/"&gt;Android Community&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;6. Srinivas, Davanum. &lt;a href="http://davanum.wordpress.com/"&gt;Show me the code!&lt;/a&gt;&amp;nbsp;&amp;nbsp;,&amp;nbsp;which provided some very early&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;sample code where many programmers found a good first source.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Some sites were more, some less promising, so sooner or later the&amp;nbsp;viewers pointed their focus to the more-important sites listed above.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6281777251296059140-8177102873253778143?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/8177102873253778143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2010/08/some-books-and-related-codes-for.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/8177102873253778143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/8177102873253778143'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2010/08/some-books-and-related-codes-for.html' title='Some Books and related codes for android development'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-6283406158295601459</id><published>2010-08-23T16:58:00.000+05:30</published><updated>2010-08-23T16:58:14.029+05:30</updated><title type='text'>Pick one Image from Gallery and use it in your ANDROID application</title><content type='html'>AIM: Suppose you need to open up gallery and pick one Image from Gallery and use it in your &amp;nbsp; ANDROID application .&lt;br /&gt;&lt;br /&gt;SOLUTION:&lt;br /&gt;Step 1) &amp;nbsp;Create/&amp;nbsp;initiate&amp;nbsp;an&amp;nbsp;image view&amp;nbsp;as&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ImageView yourimgView=(ImageView)findViewById(R.id.imageview01);&lt;br /&gt;&lt;br /&gt;Step 2) &amp;nbsp;open gallery from your application by using the following lines.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;Intent intent = new Intent(Intent.ACTION_GET_CONTENT);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;intent.setType("image/*");&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;startActivityForResult(intent, 0);&lt;br /&gt;&lt;br /&gt;Step 3) Get the selected image data and put that image in &amp;nbsp;a image view from gallery to your application by using following lines.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; &amp;nbsp;super.onActivityResult(requestCode, resultCode, imageReturnedIntent);&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; &amp;nbsp;switch(requestCode) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; &amp;nbsp;case 0:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(resultCode == RESULT_OK){ &lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Uri selectedImage = imageReturnedIntent.getData();&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String[] filePathColumn = {MediaStore.Images.Media.DATA};&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cursor.moveToFirst();&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int columnIndex = cursor.getColumnIndex(filePathColumn[0]);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String filePath = cursor.getString(columnIndex); // file path of selected image&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cursor.close();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // &amp;nbsp;Convert file path into bitmap image using below line.&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Bitmap yourSelectedImage = BitmapFactory.decodeFile(filePath);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // put &amp;nbsp;bitmapimage in your imageview&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;yourimgView.setImageBitmap(yourSelectedImage);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Result : You can see the selected image from gallery in your imageview .&lt;br /&gt;&lt;br /&gt;If you have any problems ,please send feedback.&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/6281777251296059140-6283406158295601459?l=androidsnips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://androidsnips.blogspot.com/feeds/6283406158295601459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://androidsnips.blogspot.com/2010/08/pick-one-image-from-gallery-and-use-it.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/6283406158295601459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6281777251296059140/posts/default/6283406158295601459'/><link rel='alternate' type='text/html' href='http://androidsnips.blogspot.com/2010/08/pick-one-image-from-gallery-and-use-it.html' title='Pick one Image from Gallery and use it in your ANDROID application'/><author><name>RamaMohan P</name><uri>https://profiles.google.com/106966722038830683440</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-apI0taHBWzo/AAAAAAAAAAI/AAAAAAAABrw/-X7id7KlrcU/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6281777251296059140.post-1161789031064537418</id><published>2010-08-19T12:10:00.000+05:30</published><updated>2010-08-19T12:10:09.998+05:30</updated><title type='text'>Creating a   Basic  Calculator In Android</title><content type='html'>AIM: Creating a Simple Calculator with basic operations.&lt;br /&gt;Solution:&lt;br /&gt;1) Create a class Calculator.java&lt;br /&gt;-----------------------&lt;br /&gt;public class&amp;nbsp;Calculator&amp;nbsp;extends Activity {&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private final String SDK_VERSION = "1";&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private final int MENUITEM_CLOSE = 300;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;/*&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; * Edit Text and Button object initialization for simple&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; * calculator design.&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; */&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private EditText txtCalc=null;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private Button btnZero=null;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private Button btnOne=null;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private Button btnTwo=null;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private Button btnThree=null;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private Button btnFour=null;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private Button btnFive=null;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private Button btnSix=null;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private Button btnSeven=null;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private Button btnEight=null;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private Button btnNine=null;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private Button btnPlus=null;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private Button btnMinus=null;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private Button btnMultiply=null;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private Button btnDivide=null;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private Button btnEquals=null;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private Button btnC=null;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private Button btnDecimal=null;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private Button btnMC=null;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private Button btnMR=null;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private Button btnMM=null;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private Button btnMP=null;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private Button btnBS=null;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private Button btnPerc=null;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private Button btnSqrRoot=null;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private Button btnPM=null;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private double num = 0;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private double memNum = 0;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private int operator = 1;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;// 0 = nothing, 1 = plus, 2 = minus, 3 =&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;// multiply, 4 = divide&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private boolean readyToClear = false;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private boolean hasChanged = false;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;/** Called when the activity is first created. */&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;@Override&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;super.onCreate(savedInstanceState);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;setTheme(android.R.style.Theme_Black);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;setContentView(R.layout.calculator);&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;this.setTitle("SimpleCalculator " + SDK_VERSION);&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;initControls();&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;initScreenLayout();&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;reset();&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private void initScreenLayout() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;/*&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; * The following three command lines you can use depending&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; * upon the emulator device you are using.&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; */&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;// 320 x 480 (Tall Display - HVGA-P) [default]&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;// 320 x 240 (Short Display - QVGA-L)&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;// 240 x 320 (Short Display - QVGA-P)&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;DisplayMetrics dm = new DisplayMetrics();&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;getWindowManager().getDefaultDisplay().getMetrics(dm);&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;// this.showAlert(dm.widthPixels +" "+ dm.heightPixels, dm.widthPixels&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;// +" "+ dm.heightPixels, dm.widthPixels +" "+ dm.heightPixels, false);&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;int height = dm.heightPixels;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;int width = dm.widthPixels;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;if (height &amp;lt; 400 || width &amp;lt; 300) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;txtCalc.setTextSize(20);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;if (width &amp;lt; 300) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;btnMC.setTextSize(18);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;btnMR.setTextSize(18);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;btnMP.setTextSize(18);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;btnMM.setTextSize(18);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;btnBS.setTextSize(18);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;btnDivide.setTextSize(18);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;btnPlus.setTextSize(18);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;btnMinus.setTextSize(18);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;btnMultiply.setTextSize(18);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;btnEquals.setTextSize(18);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;btnPM.setTextSize(18);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;btnPerc.setTextSize(18);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;btnC.setTextSize(18);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;btnSqrRoot.setTextSize(18);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;btnNine.setTextSize(18);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;btnEight.setTextSize(18);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;btnSeven.setTextSize(18);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;btnSix.setTextSize(18);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;btnFive.setTextSize(18);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;btnFour.setTextSize(18);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;btnThree.setTextSize(18);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;btnTwo.setTextSize(18);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;btnOne.setTextSize(18);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;btnZero.setTextSize(18);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;btnDecimal.setTextSize(18);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnZero.setTextColor(Color.MAGENTA);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnOne.setTextColor(Color.MAGENTA);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnTwo.setTextColor(Color.MAGENTA);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnThree.setTextColor(Color.MAGENTA);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnFour.setTextColor(Color.MAGENTA);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnFive.setTextColor(Color.MAGENTA);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnSix.setTextColor(Color.MAGENTA);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnSeven.setTextColor(Color.MAGENTA);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnEight.setTextColor(Color.MAGENTA);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnNine.setTextColor(Color.MAGENTA);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnPM.setTextColor(Color.MAGENTA);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnDecimal.setTextColor(Color.MAGENTA);&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnMP.setTextColor(Color.BLUE);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnMM.setTextColor(Color.BLUE);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnMR.setTextColor(Color.BLUE);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnMC.setTextColor(Color.BLUE);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnBS.setTextColor(Color.BLUE);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnC.setTextColor(Color.RED);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnPerc.setTextColor(Color.BLACK);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnSqrRoot.setTextColor(Color.BLACK);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private void initControls() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;txtCalc = (EditText) findViewById(R.id.txtCalc);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnZero = (Button) findViewById(R.id.btnZero);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnOne = (Button) findViewById(R.id.btnOne);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnTwo = (Button) findViewById(R.id.btnTwo);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnThree = (Button) findViewById(R.id.btnThree);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnFour = (Button) findViewById(R.id.btnFour);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnFive = (Button) findViewById(R.id.btnFive);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnSix = (Button) findViewById(R.id.btnSix);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnSeven = (Button) findViewById(R.id.btnSeven);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnEight = (Button) findViewById(R.id.btnEight);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnNine = (Button) findViewById(R.id.btnNine);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnPlus = (Button) findViewById(R.id.btnPlus);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnMinus = (Button) findViewById(R.id.btnMinus);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnMultiply = (Button) findViewById(R.id.btnMultiply);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnDivide = (Button) findViewById(R.id.btnDivide);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnEquals = (Button) findViewById(R.id.btnEquals);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnC = (Button) findViewById(R.id.btnC);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnDecimal = (Button) findViewById(R.id.btnDecimal);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnMC = (Button) findViewById(R.id.btnMC);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnMR = (Button) findViewById(R.id.btnMR);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnMM = (Button) findViewById(R.id.btnMM);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnMP = (Button) findViewById(R.id.btnMP);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnBS = (Button) findViewById(R.id.btnBS);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnPerc = (Button) findViewById(R.id.btnPerc);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnSqrRoot = (Button) findViewById(R.id.btnSqrRoot);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnPM = (Button) findViewById(R.id.btnPM);&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnZero.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;public void onClick(View v) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;handleNumber(0);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;});&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnOne.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;public void onClick(View v) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;handleNumber(1);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;});&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnTwo.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;public void onClick(View v) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;handleNumber(2);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;});&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnThree.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;public void onClick(View v) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;handleNumber(3);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;});&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnFour.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;public void onClick(View v) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;handleNumber(4);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;});&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnFive.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;public void onClick(View v) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;handleNumber(5);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;});&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnSix.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;public void onClick(View v) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;handleNumber(6);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;});&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnSeven.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;public void onClick(View v) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;handleNumber(7);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;});&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnEight.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;public void onClick(View v) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;handleNumber(8);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;});&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnNine.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;public void onClick(View v) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;handleNumber(9);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;});&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnPlus.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;public void onClick(View v) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;handleEquals(1);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;});&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnMinus.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;public void onClick(View v) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;handleEquals(2);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;});&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnMultiply.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;public void onClick(View v) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;handleEquals(3);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;});&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnDivide.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;public void onClick(View v) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;handleEquals(4);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;});&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnEquals.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;public void onClick(View v) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;handleEquals(0);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;});&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnC.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;public void onClick(View v) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;reset();&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;});&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnDecimal.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;public void onClick(View v) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;handleDecimal();&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;});&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnPM.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;public void onClick(View v) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;handlePlusMinus();&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;});&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnMC.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;public void onClick(View v) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;memNum = 0;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;});&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnMR.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;public void onClick(View v) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;setValue(Double.toString(memNum));&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;});&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnMM.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;public void onClick(View v) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;memNum = memNum&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;- Double.parseDouble(txtCalc.getText().toString());&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;operator = 0;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;});&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnMP.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;public void onClick(View v) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;memNum = memNum&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;+ Double.parseDouble(txtCalc.getText().toString());&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;operator = 0;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;});&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnBS.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;public void onClick(View v) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;handleBackspace();&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;});&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnSqrRoot.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;public void onClick(View v) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;setValue(Double.toString(Math.sqrt(Double.parseDouble(txtCalc&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;.getText().toString()))));&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;});&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;btnPerc.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;public void onClick(View v) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;setValue(Double.toString(num&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;* (0.01 * Double.parseDouble(txtCalc.getText()&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;        &lt;/span&gt;.toString()))));&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;});&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;txtCalc.setOnKeyListener(new OnKeyListener() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;public boolean onKey(View v, int i, android.view.KeyEvent e) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;if (e.getAction() == KeyEvent.ACTION_DOWN) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;int keyCode = e.getKeyCode();&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;// txtCalc.append("["+Integer.toString(keyCode)+"]");&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;switch (keyCode) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;case KeyEvent.KEYCODE_0:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;handleNumber(0);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;break;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;case KeyEvent.KEYCODE_1:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;handleNumber(1);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;break;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;case KeyEvent.KEYCODE_2:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;handleNumber(2);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;break;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;case KeyEvent.KEYCODE_3:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;handleNumber(3);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;break;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;case KeyEvent.KEYCODE_4:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;handleNumber(4);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;break;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;case KeyEvent.KEYCODE_5:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;handleNumber(5);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;break;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;case KeyEvent.KEYCODE_6:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;handleNumber(6);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;break;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;case KeyEvent.KEYCODE_7:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;handleNumber(7);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;break;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;case KeyEvent.KEYCODE_8:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;handleNumber(8);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;break;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;case KeyEvent.KEYCODE_9:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;handleNumber(9);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;break;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;case 43:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;handleEquals(1);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;break;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;case KeyEvent.KEYCODE_EQUALS:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;handleEquals(0);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;break;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;case KeyEvent.KEYCODE_MINUS:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;handleEquals(2);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;break;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;case KeyEvent.KEYCODE_PERIOD:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;handleDecimal();&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;break;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;case KeyEvent.KEYCODE_C:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;reset();&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;break;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;case KeyEvent.KEYCODE_SLASH:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;handleEquals(4);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;break;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;case KeyEvent.KEYCODE_DPAD_DOWN:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;return false;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;return true;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;});&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;@Override&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;public boolean onCreateOptionsMenu(Menu menu) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;menu.add(0,1, MENUITEM_CLOSE, "Close");&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;return super.onCreateOptionsMenu(menu);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;@Override&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;public boolean onOptionsItemSelected(MenuItem item) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;switch (item.getItemId()) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;case MENUITEM_CLOSE:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;finish();&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;break;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;return super.onOptionsItemSelected(item);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private void handleEquals(int newOperator) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;if (hasChanged) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;switch (operator) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;case 1:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;num = num + Double.parseDouble(txtCalc.getText().toString());&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;break;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;case 2:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;num = num - Double.parseDouble(txtCalc.getText().toString());&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;break;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;case 3:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;num = num * Double.parseDouble(txtCalc.getText().toString());&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;break;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;case 4:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;num = num / Double.parseDouble(txtCalc.getText().toString());&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;break;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;String txt = Double.toString(num);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;txtCalc.setText(txt);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;txtCalc.setSelection(txt.length());&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;readyToClear = true;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;hasChanged = false;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;operator = newOperator;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private void handleNumber(int num) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;if (operator == 0)&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;reset();&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;String txt = txtCalc.getText().toString();&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;if (readyToClear) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;txt = "";&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;readyToClear = false;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;} else if (txt.equals("0"))&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;txt = "";&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;txt = txt + Integer.toString(num);&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;txtCalc.setText(txt);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;txtCalc.setSelection(txt.length());&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;hasChanged = true;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private void setValue(String value) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;if (operator == 0)&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;reset();&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;if (readyToClear) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;readyToClear = false;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;txtCalc.setText(value);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;txtCalc.setSelection(value.length());&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;hasChanged = true;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private void handleDecimal() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;if (operator == 0)&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;reset();&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;if (readyToClear) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;txtCalc.setText("0.");&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;txtCalc.setSelection(2);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;readyToClear = false;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;hasChanged = true;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;} else {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;String txt = txtCalc.getText().toString();&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;if (!txt.contains(".")) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;txtCalc.append(".");&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;hasChanged = true;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private void handleBackspace() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;if (!readyToClear) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;String txt = txtCalc.getText().toString();&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;if (txt.length() &amp;gt; 0) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;txt = txt.substring(0, txt.length() - 1);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;if (txt.equals(""))&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;txt = "0";&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;txtCalc.setText(txt);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;txtCalc.setSelection(txt.length());&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /
