<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Androidkit.com</title>
	<atom:link href="http://www.androidkit.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.androidkit.com</link>
	<description>Android Development Blog</description>
	<lastBuildDate>Mon, 08 Aug 2011 05:43:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>3 useful Android apps for Developers</title>
		<link>http://www.androidkit.com/3-useful-android-apps-for-developers</link>
		<comments>http://www.androidkit.com/3-useful-android-apps-for-developers#comments</comments>
		<pubDate>Mon, 08 Aug 2011 05:43:37 +0000</pubDate>
		<dc:creator>adit</dc:creator>
				<category><![CDATA[Applications]]></category>

		<guid isPermaLink="false">http://www.androidkit.com/?p=325</guid>
		<description><![CDATA[<p><strong><a href="https://market.android.com/details?id=jackpal.androidterm&#038;feature=search_result">Android Terminal Emulator</a></strong></p>
<p>This application lets you access your Android&#8217;s built-in Linux command line shell. It emulates a Digital Equipment Corporation VT-100 terminal. You can use this application to run utility programs on your device.<br />
This application lets you&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p><strong><a href="https://market.android.com/details?id=jackpal.androidterm&#038;feature=search_result">Android Terminal Emulator</a></strong></p>
<p>This application lets you access your Android&#8217;s built-in Linux command line shell. It emulates a Digital Equipment Corporation VT-100 terminal. You can use this application to run utility programs on your device.<br />
This application lets you run Linux command line utilities on your Android phone. It is mostly useful for computer programmers. It might also be useful for people who want to explore the Linux internals of their Android phone.</p>
<p><strong><a href="https://market.android.com/details?id=org.connectbot&#038;feature=search_result">ConnectBot</a></strong><br />
ConnectBot is a powerful open-source Secure Shell (SSH) client. It can manage simultaneous SSH sessions, create secure tunnels, and copy/paste between other applications.<br />
This client allows you to connect to Secure Shell servers that typically run on UNIX-based servers.</p>
<p><strong><a href="https://market.android.com/details?id=net.idlesoft.android.apps.github&#038;feature=search_result">HubDroid</a></strong><br />
Access GitHub from your Android device! Hubroid is the only full-featured GitHub client available on Android. Access repositories, gists, followers, news feed, issues, commits, and much more!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.androidkit.com/3-useful-android-apps-for-developers/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Playing with NFC API of Android</title>
		<link>http://www.androidkit.com/playing-with-nfc-api-of-android</link>
		<comments>http://www.androidkit.com/playing-with-nfc-api-of-android#comments</comments>
		<pubDate>Fri, 01 Jul 2011 03:22:19 +0000</pubDate>
		<dc:creator>adit</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.androidkit.com/?p=322</guid>
		<description><![CDATA[<p>NFC, or near field communication, is an emerging technology that will power mobile payment systems and Mobile wallet system. Google, Nokia, Microsoft, Apple and other big players are making concentrated effort in getting the solutions into main stream. But NFC&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>NFC, or near field communication, is an emerging technology that will power mobile payment systems and Mobile wallet system. Google, Nokia, Microsoft, Apple and other big players are making concentrated effort in getting the solutions into main stream. But NFC itself is just a way to send data wirelessly between devices, meaning it can be used for far more than mobile payments alone.</p>
<p>NFC on mobile phone will not only enable with card payment solutions, but it will also enable other solutions like device as Tag reader or in Peer to Peer data transfer.</p>
<p>Android latest release 2.3 has some set of API exposed for card reading, which is capable of reading various tags like Text record, URL record, or smart poster tag. The support for P2P communication is not yet available through the API.</p>
<p>With this limited set of capability available, one could still build some interesting use cases. If you have NFC equipped phone like Nexus-S and get hold of Some tags. In below video, we have tried to make use of the available API to read the Tag info of smart poster and retrieve the information from background web server.</p>
<p><a href="http://vimeo.com/22386204">Click here to Watch Video</a></p>
<p>Interesting applications can be built around the current capability of Andriod device like:</p>
<p>Provide the personal advertisement tags in conferences, so that your client can directly go to your website with simple swipe.<br />
Stick the tags in shops, so user carrying the phone can swipe on tag to get the details of the product may see some promotion video on the product.<br />
Enabling the Guest carrying NFC tag reader app to hook into your wifi network if you have tag storing needed access parameter.<br />
Change the device setting, like stick tag in meeting room door, so when user swipes there phone while entering the device goes to silent automatically.<br />
True sharing applications can be easily be built once we have full support like Peer to Peer share, instant BT paring, touch triggered sharing, Vcard exchange, and many others.</p>
<p>Easy access of tags to general public coupled with full support by leading OS vendors will bring the NFC into mainstream in wider markets quickly.</p>
<p>More info on NFC can be obtained at</p>
<p><a href="http://www.nfc-forum.org/home/">http://www.nfc-forum.org/home/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.androidkit.com/playing-with-nfc-api-of-android/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cloud to device messaging</title>
		<link>http://www.androidkit.com/cloud-to-device-messaging</link>
		<comments>http://www.androidkit.com/cloud-to-device-messaging#comments</comments>
		<pubDate>Mon, 09 May 2011 05:25:43 +0000</pubDate>
		<dc:creator>adit</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.androidkit.com/?p=309</guid>
		<description><![CDATA[<div><strong>C2DM</strong></div>
<p>Android Cloud to Device Messaging (C2DM) is a service that helps developers send data from servers to their applications on Android devices. The service provides a simple, lightweight mechanism that servers can use to tell mobile applications to contact&#8230;</p>]]></description>
			<content:encoded><![CDATA[<div><strong>C2DM</strong></div>
<p>Android Cloud to Device Messaging (C2DM) is a service that helps developers send data from servers to their applications on Android devices. The service provides a simple, lightweight mechanism that servers can use to tell mobile applications to contact the server directly, to fetch updated application or user data. The C2DM service handles all aspects of queuing of messages and delivery to the target application running on the target device.</p>
<p><strong>CHARACTERISTICS OF ANDROID CLOUD TO DEVICE MESSAGING (C2DM)</strong></p>
<p>Primary characteristics of C2DM are:</p>
<ol>
<li>It allows third-party application servers to send lightweight messages to their Android applications. The messaging service is not designed for sending a 	lot of user content via the messages. Rather, it should be used to 	tell the application that there is new data on the server, so that 	the application can fetch it.</li>
<li>An application on an Android 	device doesn’t need to be running to receive messages. The system 	will wake up the application via Intent broadcast when the the 	message arrives, as long as the application is set up with the 	proper broadcast receiver and permissions.</li>
<li>It uses an existing connection 	for Google services. This requires users to set up their Google 	account on their mobile devices.</li>
</ol>
<p><strong>ARCHITECTURAL OVERVIEW</strong></p>
<p>Cloud to Device Messaging includes key terms and concepts which can be classified in to two divisions. They are:</p>
<ol>
<li>Components</li>
<li>Credentials</li>
</ol>
<p><a href="http://www.androidkit.com/wp-content/uploads/2011/05/Screen-shot-2011-05-09-at-9.59.44-AM.png"><img class="alignnone size-medium wp-image-311" title="c2dm" src="http://www.androidkit.com/wp-content/uploads/2011/05/Screen-shot-2011-05-09-at-9.59.44-AM-300x138.png" alt="" width="300" height="138" /></a></p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 		A:link { so-language: zxx } --><span style="font-size: small;"><strong>Credentials</strong></span></p>
<p>The IDs and tokens that are used in different stages of C2DM to ensure that all parties have been authenticated, and that the message is going to the correct place.</p>
<p>Sender ID</p>
<p>An email account associated with the application&#8217;s developer. The sender ID is used in the registration process to identify a Android application that is permitted to send messages to the device. This ID is typically role-based rather than being a personal account—- for example, my-app@gmail.com</p>
<p>Application ID</p>
<p>It is the id of an application that is registering to receive messages. The application is identified by the package name from the manifest. This ensures that the messages are targeted to the correct application.</p>
<p>Registration ID</p>
<p>An ID issued by the C2DM servers to the Android application that allows it to receive messages. Once the application has the registration ID, it sends it to the third-party application server, which uses it to identify each device that has registered to receive messages for a given application. In other words, a registration ID is tied to a particular application running on a particular device. Google User Accountfor C2DM to work, the mobile device must include at least one logged in Google account.</p>
<p>Sender Auth Token</p>
<p>A ClientLoginAuth token that is saved on the third-party application server that gives the application server authorized access to Google services. The token is included in the header of POST requests that send messages.</p>
<p><strong>LIFE CYCLE OF CLOUD TO DEVICE MESSAGING</strong></p>
<p>Here are the primary processes involved in cloud-to-device messaging:</p>
<ol>
<li>Enabling C2DM: An Android application running on a mobile device registers to 	receive messages.</li>
<li>Sending a message: A third-party application server sends messages to the device.</li>
<li>Receiving a message: An Android application receives a message from a C2DM server.<br />
<a href="http://www.androidkit.com/wp-content/uploads/2011/05/Screen-shot-2011-05-09-at-9.59.58-AM.png"><img class="alignnone size-medium wp-image-312" title="c2dm" src="http://www.androidkit.com/wp-content/uploads/2011/05/Screen-shot-2011-05-09-at-9.59.58-AM-300x204.png" alt="" width="300" height="204" /></a></p>
<p><em>Enabling C2DM</em></p>
<p>Following are the sequence of events that occurs when an Android application running on a mobile device registers to receive messages:</p>
<ol>
<li>The first time the application 	needs to use the messaging service, it fires off a registration Intent to a C2DM server. </li>
</ol>
<p>This registration Intent  includes the sender ID (that is, the account authorized to send messages to the application, which is typically the email address of an account set up by the application&#8217;s developer), and the application ID.</p>
<ol>
<li>The C2DM server broadcasts a Intent which gives the application a registration ID.</li>
</ol>
<p>The application stores this ID for later use. Google may periodically refresh the registration ID, so the application is designed with the understanding that the REGISTRATIONntent may be called multiple times.</p>
<ol>
<li>To complete the registration, 	the application sends the registration ID to the application server. The application server typically stores the registration ID in a database. </li>
</ol>
<p>The registration ID lasts until the application explicitly unregisters itself, or until Google refreshes the registration ID for your application.</p>
<h4><em>Sending a Message</em></h4>
<p>For an application server to send a message, the following things must be in place:</p>
<ul>
<li>The application has a registration ID that allows it to receive messages for a particular device.</li>
<li>The Registration Id is stored at the Application Server.</li>
</ul>
<p>There is one more thing that needs to be in place for the application server to send messages: a Client Login authorization token. The Client Login token authorizes the application server to send messages to a particular Android application. An application server has one Client Login token for a particular 3rd party app, and multiple registration IDs. Each registration ID represents a particular device that has registered to use the messaging service for a particular 3rd party app.</p>
<p>Here is the sequence of events that occurs when the application server sends a message:</p>
<ol>
<li>The application server sends a message to C2DM servers.</li>
<li>Google queues and stores the message in case the device is inactive.</li>
<li>When the device is online, Google sends the message to the device.</li>
<li>On the device, the system broadcasts the message to the specified application via Intent broadcast with proper permissions, so that only the targeted 	application gets the message. This wakes the application up. The 	application does not need to be running beforehand to receive the message.</li>
<li>The application processes the 	message. If the application is doing non-trivial processing, you may want to grab a wake 	lock and do any processing in a Service.</li>
</ol>
<p>An application can unregister C2DM if it no longer wants to receive messages.</p>
<h4><em>Receiving Message</em></h4>
<p>This is the sequence of events that occurs when an Android application running on a mobile device receives a message:</p>
<ol>
<li>The system receives the incoming message and extracts the raw key/value pairs from the 	message payload.</li>
<li>The system passes the key/value pairs to the targeted Android application in a Intent as a set of extras.</li>
<li>The Android application 	extracts the raw data from the Intent by key and processes the data.</li>
</ol>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.androidkit.com/cloud-to-device-messaging/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android UI Design Patterns</title>
		<link>http://www.androidkit.com/android-ui-design-patterns</link>
		<comments>http://www.androidkit.com/android-ui-design-patterns#comments</comments>
		<pubDate>Mon, 18 Apr 2011 05:34:40 +0000</pubDate>
		<dc:creator>adit</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.androidkit.com/?p=303</guid>
		<description><![CDATA[<p>UI design patterns provide solutions to common user interface problems. These patterns outline the recuring design problems faced when trying to create good design for Android applications. In this article, we&#8217;ll take a look at some of the websites which&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>UI design patterns provide solutions to common user interface problems. These patterns outline the recuring design problems faced when trying to create good design for Android applications. In this article, we&#8217;ll take a look at some of the websites which give you a good knowledge about Android UI design patterns.</p>
<p>1. <a href="http://www.google.com/events/io/2010/sessions/android-ui-design-patterns.html">Google I/O talk &#8211; Android UI design patterns</a></p>
<p>In this session, the Android User Experience team will show the types of patterns you can use to build a great Android application. The talk directly comes from the Google UI/UX team and is really worth looking at!</p>
<p>2. <a href="http://www.androidpatterns.com/">Android Patterns</a></p>
<p>This website provides a set of interaction patterns that can help you design Android apps. You can view various patterns related to user input, navigation, notifications, screen interactions, personalization and social media interaction.</p>
<p>3. <a href="http://www.slideshare.net/mswolfson/android-ui-patterns">Android UI Design Patterns &#8211; Presentation</a></p>
<p>This presentation is given by Mike Wolfson of Phoenix Android Developers Group. It gives you a nice overview of Android UI Design Patterns and Best Practices.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.androidkit.com/android-ui-design-patterns/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Entering the next level &#8211; Android 3.0 SDK</title>
		<link>http://www.androidkit.com/entering-the-next-level-android-3-0-sdk</link>
		<comments>http://www.androidkit.com/entering-the-next-level-android-3-0-sdk#comments</comments>
		<pubDate>Mon, 28 Feb 2011 06:08:20 +0000</pubDate>
		<dc:creator>adit</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.androidkit.com/?p=295</guid>
		<description><![CDATA[<p>Google has recently announced the availability of the full SDK for Android 3.0. The updated SDK Tools component is now available for download from <a href="http://developer.android.com/sdk/tools-notes.html" target="_blank">here</a> .<br />
The Android 3.0 platform is designed specially to meet the unique&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>Google has recently announced the availability of the full SDK for Android 3.0. The updated SDK Tools component is now available for download from <a href="http://developer.android.com/sdk/tools-notes.html" target="_blank">here</a> .<br />
The Android 3.0 platform is designed specially to meet the unique needs of applications on devices with larger screen sizes. Hence, there are some new and exciting things in Android 3 SDK, which should get developers excited about Android Development.</p>
<p><a href="http://www.androidkit.com/wp-content/uploads/2011/02/home_hero1_full.png"><img class="alignnone size-medium wp-image-297" title="home_hero1_full" src="http://www.androidkit.com/wp-content/uploads/2011/02/home_hero1_full-300x187.png" alt="" width="300" height="187" /></a><br />
Android 3.0 comes with a new UI designed from the ground up for tablets. With so many tablets in the market, UI is going to be a crucial factor to attract consumers to your device and the Google team has nailed it this time by providing an altogether new UI framework for developers, which will allow developers to create a richer, more interactive experience for users. We&#8217;re really excited about Activity fragments, which provide greater control of content and design flexibility.<br />
<a href="http://www.androidkit.com/wp-content/uploads/2011/02/contacts_full.png"><img class="alignnone size-medium wp-image-296" title="contacts_full" src="http://www.androidkit.com/wp-content/uploads/2011/02/contacts_full-300x187.png" alt="" width="300" height="187" /></a><br />
This will allow developers to come up with apps, which are more intuitive and engaging thereby increasing the overall user experience. The Activity fragment feature is supplemented by redesigned UI widgets which can now be used as remote views in application widgets displayed on the home screen. Other exciting features of Android 3.0 Platform include Persistent Action Bar and Richer Notifications. It&#8217;s really a neat idea to provide each application with its own instance of the Action Bar at the top of the screen. This will allow developers to expose more features of their applications to users in a familiar location.</p>
<p>We know that the notification mode is arguably better on Android devices as compared to iOS. And this just got better with Android 3 SDK, which includes new builder class thereby allowing developers to quickly create notifications that include large and small icons, a title, a priority flag, and any properties already available in previous versions. In Android, all notifications are neatly organized in an expandable menu. So, whenever any of these notifications appear, they are quickly displayed for some time in a small strip that always stays at the top of the screen. iOS 4 still follows pop-up notifications, which may occasionally interfere with whatever apps you’re running at the time.</p>
<p>There&#8217;s also some good news for Android Game Developers. Android 3.0 offers a new hardware-accelerated OpenGL renderer that gives a performance boost to many common graphics operations for applications running in the Android framework. And if this was not enough, Google has also included RenderScript with Android 3.0, which is a runtime 3D framework for accelerating graphics operations and data processing. It seems like we are going to see some really exciting games for Android in the near future!</p>
<p>Android 3.0 also includes some other smart features likes HTTP Live streaming and Digital Media file transfer. Overall, it&#8217;s an impressive release and we hope that the developers will make full use of it!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.androidkit.com/entering-the-next-level-android-3-0-sdk/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LibGDX &#8211; Game Development Library for Android</title>
		<link>http://www.androidkit.com/libgdx-game-development-library-for-android</link>
		<comments>http://www.androidkit.com/libgdx-game-development-library-for-android#comments</comments>
		<pubDate>Mon, 31 Jan 2011 09:36:05 +0000</pubDate>
		<dc:creator>adit</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.androidkit.com/?p=284</guid>
		<description><![CDATA[<div>You can find numerous interesting open source projects for Android on Google Project Hosting, but the one which really impressed us was LibGDX.</div>

<div><a href="http://code.google.com/p/libgdx/" target="_blank">LibGDX</a> is a cross-platform game development library written in Java with some JNI code for performance</div><p>&#8230;</p>]]></description>
			<content:encoded><![CDATA[<div>You can find numerous interesting open source projects for Android on Google Project Hosting, but the one which really impressed us was LibGDX.</div>
</p>
<div><a href="http://code.google.com/p/libgdx/" target="_blank">LibGDX</a> is a cross-platform game development library written in Java with some JNI code for performance hungry sections. (Java Network Interface (JNI) enables one to write native methods to handle situations when an application cannot be written entirely in the Java programming language).</div>
</p>
<div>The Graphics are based on OpenGL ES 1.x/2 and supports plethora of classes for 2D and 3D rendering. The developer claims that the graphics have been highly optimized for Android devices {we agree! <img src='http://www.androidkit.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> }. Moreover, it consists of a comprehensive math package for 2D and 3D linear algebra and computation geometry tasks in addition with a JNI wrapper for box2d, which is an open source physics engine.</div>
</p>
<div>The documentation is good enough for beginners and some of the games made with LibGDX seem to be really impressive. Android developers should really try this one out!</div>
</p>
<div>
<div></div>
<div>You can either<a href="http://code.google.com/p/libgdx/downloads/detail?name=libgdx-0.81.zip" target="_blank"> download</a> the zip file or the source from svn repository.</div>
<p><code>svn checkout http://libgdx.googlecode.com/svn/trunk/ libgdx-read-only<br />
</code></p>
<div></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.androidkit.com/libgdx-game-development-library-for-android/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Developing Augmented Reality Applications for Android</title>
		<link>http://www.androidkit.com/developing-augmented-reality-applications-for-android</link>
		<comments>http://www.androidkit.com/developing-augmented-reality-applications-for-android#comments</comments>
		<pubDate>Thu, 02 Dec 2010 06:09:25 +0000</pubDate>
		<dc:creator>adit</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.androidkit.com/?p=278</guid>
		<description><![CDATA[<div>Augmented Reality (AR) is currently a hot category on iPhone and Android devices. One can find numerous interactive AR applications on the App Store and Android Market. Following are some of the interesting AR applications available on the Android Market:</div><p>&#8230;</p>]]></description>
			<content:encoded><![CDATA[<div>Augmented Reality (AR) is currently a hot category on iPhone and Android devices. One can find numerous interactive AR applications on the App Store and Android Market. Following are some of the interesting AR applications available on the Android Market:</p>
<p>1. <a href="http://www.wikitude.org/category/02_wikitude/world-browser">Wikitude World Browser</a></p>
<p>2. <a href="http://www.androidzoom.com/android_applications/travel/3d-compass-ar-compass_iq_download.html">3D Compass</a></p>
<p>3. <a href="http://www.androidzoom.com/android_applications/multimedia/tweeps-around_gmgz_download.html">Tweeps Around</a></p>
<p>So, what exactly is AR?<br />
Wikipedia defines AR as a live direct or indirect view of a physical real-world environment whose elements are augmented by virtual computer-generated sensory input such as sound or graphics. Simply speaking, AR is the ability to overlay location data points on the live view of a mobile device&#8217;s camera.Thus, AR applications combine virtual data into the real world by utilizing the phone’s compass, camera, and GPS system.<br />
You can get more information about AR <a href="http://www.howstuffworks.com/augmented-reality.htm">here</a> and <a href="http://www.tech-faq.com/augmented-reality.html">here</a>.<br />
In this article, we will provide you some resources which will help you in developing your own AR applications for Android devices.</p>
<p><a href="https://github.com/haseman/Android-AR-Kit">Android AR-Kit</a> (Recommended)<br />
An open source, Geographical based, Augmented Reality library.</p>
<p><a href="http://www.layar.com/">Layar</a><br />
The Layar Reality Browser shows what is around you by displaying real time digital information on top of the real world as seen through the camera of your mobile phone.You can use the Layar Platform to create your own AR Applications.</p>
<p><a href="http://www.mixare.org/download/">Mixare</a><br />
mixare (mix Augmented Reality Engine) is a free open source augmented reality browser. It works as a completely autonomous application and is available as well for the development of own implementations.</p>
<p><a href="https://ar.qualcomm.com/qdevnet/sdk">Qualcomm Augmented Reality Platform</a><br />
The Qualcomm Augmented Reality Platform provides developers the ability to create high-performance Android applications with C++ APIs.</p>
<p><a href="http://www.devx.com/wireless/Article/42482/0/page/1">Tutorial</a><br />
Chris Haseman has also put together a nice tutorial for developing AR applications using the Android AR-Kit. Experienced Android Developers will find this tutorial very helpful.</p>
<p>We hope that you’ll find these resources useful. Let us know about your thoughts on AR application development in the comments section.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.androidkit.com/developing-augmented-reality-applications-for-android/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Announcing AndroidBook Version 2.0</title>
		<link>http://www.androidkit.com/announcing-androidbook-version-2-0</link>
		<comments>http://www.androidkit.com/announcing-androidbook-version-2-0#comments</comments>
		<pubDate>Mon, 15 Nov 2010 09:07:47 +0000</pubDate>
		<dc:creator>adit</dc:creator>
				<category><![CDATA[Download]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Sourcebits]]></category>
		<category><![CDATA[AndroidBook]]></category>

		<guid isPermaLink="false">http://www.androidkit.com/?p=269</guid>
		<description><![CDATA[<p>Sourcebits Technologies Pvt. Ltd. is thrilled to announce the second version of its groundbreaking Facebook application for Android – AndroidBook – out now on the Android Market!</p>
<p>AndroidBook delivers the complete Facebook experience in a vastly superior mobile interface optimized&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>Sourcebits Technologies Pvt. Ltd. is thrilled to announce the second version of its groundbreaking Facebook application for Android – AndroidBook – out now on the Android Market!</p>
<p>AndroidBook delivers the complete Facebook experience in a vastly superior mobile interface optimized specifically for the legion of Android-based handsets and hardware configs.</p>
<p>Speed, reliability, and best-in-class user interface are the AndroidBook keywords. Switch seamlessly between status updates, viewing video in the News Feed, uploading and browsing photos, and posting comments on friends’ Walls. You’re never more than a tap or two from where you’re going next.<br />
Version 2.0 also brings some crucial new features and updates to the table:<br />
1. Intelligent notifications<br />
2. Improved Friend Finder<br />
3. Upload and caption photos direct from camera or gallery<br />
4. Easy password retrieval<br />
5. Watch videos without ever leaving the app<br />
AndroidBook boasts powerful functionality and hands down the best user experience for Facebook on Android – far better than even the ‘official’ app. For Android-toting Facebook mavens, AndroidBook is the clear choice.<br />
Learn more about AndroidBook at the following URL:<br />
<a href="http://www.spoonjuice.com/androidbook" target="_blank"> http://www.spoonjuice.com/androidbook</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.androidkit.com/announcing-androidbook-version-2-0/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android Push Notifications Tutorial (link)</title>
		<link>http://www.androidkit.com/android-push-notifications-tutorial-link</link>
		<comments>http://www.androidkit.com/android-push-notifications-tutorial-link#comments</comments>
		<pubDate>Tue, 12 Oct 2010 13:01:06 +0000</pubDate>
		<dc:creator>cary</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.androidkit.com/?p=265</guid>
		<description><![CDATA[<p><a href="http://blog.boxedice.com/2010/10/07/android-push-notifications-tutorial/">Boxed Ice</a>&#8216;s David Mytton posts a comprehensive tutorial for Android push notifications.  Worth a bookmark for budding Android developers.</p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.boxedice.com/2010/10/07/android-push-notifications-tutorial/">Boxed Ice</a>&#8216;s David Mytton posts a comprehensive tutorial for Android push notifications.  Worth a bookmark for budding Android developers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.androidkit.com/android-push-notifications-tutorial-link/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android Activity Classes Explained in Detail</title>
		<link>http://www.androidkit.com/android-activity-classes-explained-in-detail</link>
		<comments>http://www.androidkit.com/android-activity-classes-explained-in-detail#comments</comments>
		<pubDate>Wed, 29 Sep 2010 14:35:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Activity Classes]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[basic]]></category>

		<guid isPermaLink="false">http://www.androidkit.com/?p=258</guid>
		<description><![CDATA[<p>As a fledgling Android developer one of the first things you&#8217;ll need to do is get your head around Activity Classes. We can&#8217;t overstate the importance of this. A sharp, fluid understanding of how each class interacts with each other&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>As a fledgling Android developer one of the first things you&#8217;ll need to do is get your head around Activity Classes. We can&#8217;t overstate the importance of this. A sharp, fluid understanding of how each class interacts with each other class, and the end result for end users will not only speed along your project dev time, but open up new possibilities for your programming. So let&#8217;s take a look at these in some detail.</p>
<ul>
<li>onCreate(): This is called when the activity first starts up. You can use it to perform one-time initialization such as launching the user interface. onCreate() utilizes one parameter that is either null or state information previously saved by the onSaveInstanceState( ) method, discussed below.</li>
<li>onStart(): This indicates the activity is about to be displayed to the user.</li>
<li>onResume(): This is called when the user can start interacting with the activity. This is a good place to start animations and music.</li>
<li>onRestart(): If this is called, it indicates your activity is being redisplayed to the user from a stopped state.</li>
<li>onFreeze(): Allows you to save your current state when one activity is being paused and another one resumes to interact with the user. After being paused, the system may at any time need to stop (or even outright kill) your application in order to claim resources for the current foreground activity. If this should happen, the state you supply here will later be recalled with onCreate(), when the user starts a new instance of your activity.</li>
<li>onPause(): This runs when the activity is about to go into the background, usually because another activity has been launched in front of it. This is where you should save your program&#8217;s persistent state, such as a database record being edited.</li>
<li>onStop(): This is called when your activity is no longer visible to the user and it won&#8217;t be needed for a while. If memory is tight, onStop() may never be called (the system may simply terminate your process).</li>
<li>onDestroy(): This is called right before your activity is destroyed. If memory is tight, onDestroy( ) may never be called (the system may simply terminate your process).</li>
<li>onSaveInstanceState(Bundle): Android calls this method to allow the activity to save per-instance states, such as a cursor position within a text field. Usually you won&#8217;t need to override it because the default implementation saves the state for user interface controls automatically.</li>
<li>onRestoreInstanceState(Bundle): This is called when the activity is being reinitialized from a state previously saved by the onSaveInstanceState() method. The default implementation restores the state of your user interface.</li>
</ul>
<p>I hope this brings you up to speed on Android Activity Classes. Be sure to have a thorough look at the attached diagram below (click &#8211;&gt; full size) for a concrete overview of what we&#8217;ve been discussing here. The more familiar you are with Activity Classes and how and they affect the end user experience, the more successful your Android apps development will be.</p>
<p>If you have any questions or requests re: Android apps dev, drop us a line via <a href="http://www.sourcebits.com/contact">the contact form</a> at mothership Sourcebits and we&#8217;ll get back to you as soon as we can, perhaps even posting a tutorial here on these pages.</p>
<p>Best of luck,<br />
Sudhir N Kamath<br />
Sr. QA Engineer<br />
Sourcebits Technologies, Ltd.</p>
<div id="attachment_261" class="wp-caption aligncenter" style="width: 251px"><a href="http://www.androidkit.com/wp-content/uploads/2010/09/Android_Activity-Class_Lifecycle.png"><img class="size-medium wp-image-261" title="Android_Activity Class_Lifecycle" src="http://www.androidkit.com/wp-content/uploads/2010/09/Android_Activity-Class_Lifecycle-241x300.png" alt="" width="241" height="300" /></a><p class="wp-caption-text">Learn it, Live it, Reap ze glory.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.androidkit.com/android-activity-classes-explained-in-detail/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Access Android Application Database from an Emulator</title>
		<link>http://www.androidkit.com/access-android-application-database-from-an-emulator</link>
		<comments>http://www.androidkit.com/access-android-application-database-from-an-emulator#comments</comments>
		<pubDate>Thu, 08 Jul 2010 15:11:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[command prompt]]></category>
		<category><![CDATA[database access]]></category>
		<category><![CDATA[emulator]]></category>
		<category><![CDATA[SQLite 3.0]]></category>

		<guid isPermaLink="false">http://www.androidkit.com/?p=249</guid>
		<description><![CDATA[<p>If you’re reading this then you probably already know that Android provides full support for <a href="http://www.sqlite.org/">SQLite</a> databases. So any database(s) you create will be accessible by name to any class in an Android application, just not outside the application.&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>If you’re reading this then you probably already know that Android provides full support for <a href="http://www.sqlite.org/">SQLite</a> databases. So any database(s) you create will be accessible by name to any class in an Android application, just not outside the application. The Android SDK includes an SQLite 3.0 database tool that allows you to browse table contents, run SQL commands, and perform other useful functions on SQLite databases. Here I would like to share how we can access the SQLite database from an emulator.</p>
<p><strong>Step 1</strong>: 	Create a database-using application:</p>
<p>For example, as follows:</p>
<p>Application: TestDatabase</p>
<p>Package Name: com.android.TestDatabase</p>
<p>Database Name: TestingDatabase</p>
<p>Table Name: TestingTable</p>
<p><em> </em></p>
<p><strong>Step 2</strong>: 	Launch the application to create a database for the application.</p>
<p><em> </em></p>
<p><strong>Step 3</strong>: 	Open a command prompt. For example, on Windows, go to Start &gt; Run and type &#8220;cmd&#8221;</p>
<p><em> </em></p>
<p><strong>Step 4</strong>: 	Navigate to the tools folder in the Android SDK.</p>
<p><em> </em></p>
<p><strong>Step 5</strong>: 	Input the following at the command prompt:</p>
<pre>d:\android-sdk\tools&gt;adb shell

# cd data/data

# cd com.android.TestDatabase

# cd databases

# sqlite3 TestingDatabase;

sqlite3 TestingDatabase

SQLite3 version x.x.x

Enter ".help" for instructions

sqlite&gt;</pre>
<p><em> </em></p>
<p><strong>Step 6</strong>: 	From here you can fire your queries.</p>
<p>For example:</p>
<pre>sqlite&gt; select * from TestingTable;</pre>
<p><em> </em></p>
<p><strong>Step 7</strong>: 	To exit, press ctrl+c</p>
<p><em> </em></p>
<p><strong>Step 8</strong>: 	Then you can check the directories inside the folder.</p>
<p>For example, let’s check all the databases created in the folder &#8220;databases&#8221;</p>
<p>Type:</p>
<pre># cd databases

# ls

ls

TestingDatabase</pre>
<p>Thanks for reading, and I hope this helps.  If you have any questions about this specific tutorial or any other issues re: coding for Android, drop us a line any time from our contact page!</p>
<p><em> </em></p>
<p><em> </em></p>
<p>Nirav Shah<br />
Software Engineer<br />
Sourcebits Tech Pvt Ltd.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.androidkit.com/access-android-application-database-from-an-emulator/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Loading Images from Remote Server over HTTP on a Separate Thread</title>
		<link>http://www.androidkit.com/loading-images-from-remote-server-over-http-on-a-separate-thread</link>
		<comments>http://www.androidkit.com/loading-images-from-remote-server-over-http-on-a-separate-thread#comments</comments>
		<pubDate>Fri, 28 May 2010 12:58:45 +0000</pubDate>
		<dc:creator>binil</dc:creator>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[developers]]></category>

		<guid isPermaLink="false">http://www.androidkit.com/?p=236</guid>
		<description><![CDATA[<p>by Binil Thomas</p>
<p>Whenever a user launches an Android application, a thread called &#8220;main&#8221; is automatically created. This main thread, also called the UI thread, is crucial since it’s responsible for dispatching events to various widgets, including the drawing events.&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>by Binil Thomas</p>
<p>Whenever a user launches an Android application, a thread called &#8220;main&#8221; is automatically created. This main thread, also called the UI thread, is crucial since it’s responsible for dispatching events to various widgets, including the drawing events. For careless Android developers, this single thread can be the overarching reason for poor app performance. With so much riding on a single thread performing long operations like network access or database queries, any interference on this thread will block up the entire user interface. No events can be dispatched – including drawing events – while long operations are underway, and from the user&#8217;s perspective, the application appears hung. Even worse, if the UI thread is blocked for more than a few seconds (about 5 seconds currently) the user will encounter the dreaded &#8220;application not responding&#8221; (ANR) dialog.</p>
<p>BaseAdapter is an Adapter object that acts as a bridge between an AdapterView and the underlying data for that view. The Adapter provides access to specific data points and is also responsible for making a View for each point in the data set. So, taking the example of downloading an image over HTTP, there may be some slowdown in our application with the Main UI thread getting blocked for more than a few seconds, and users might be presented with the ANR dialog. To avoid this situation I have some suggestions:</p>
<p>1. Use ExecuterService (Thread pool)<br />
2. Use AsynTask<br />
3. Use SoftReference Drawable Object<br />
4. Create the ListView first, then download images<br />
5. Make use of OnScrollListener Interface</p>
<p>I’ve written a sample application to help Android developers visualize this implementation.</p>
<p>Here we have AbastractListAdapter, an extension of BaseAdapterClass:</p>
<pre>public abstract class AbstactListAdapter extends BaseAdapter {
	public AbstactListAdapter(Context context) {
		this.context = context;
	}
	public abstract void setScrollStatus(boolean scroll);
	public abstract void scrollIdle(AbsListView view);
}</pre>
<p>There are two methods of implementation for Class ListAdapterScrollListener and Onscrollistner.</p>
<pre>public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {
		adapter.setScrollStatus(true);
	}
public void onScrollStateChanged(AbsListView view,intSrollState) {
		switch (scrollState) {
		case OnScrollListener.SCROLL_STATE_IDLE:
			adapter.scrollIdle(view);
			break;
		case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
			adapter.setScrollStatus(true);
			break;
		case OnScrollListener.SCROLL_STATE_FLING:
			adapter.setScrollStatus(true);
			break;
		}
}</pre>
<p>In my onCreate method I set up and configure the list view to load the views and set the listner for Scroll.</p>
<pre>public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Adapter mAdapter=new Adapter(this);
        setListAdapter(mAdapter);
        getListView().setOnScrollListener(new 		ListAdapterScrollListener(mAdapter));
      }</pre>
<p>I use an Adapter class to extend AbstractAdapterClass and implement BaseAdapter, both of which help to load images when scrolling is idle.</p>
<p>The image is loaded in a separate threadpool. I have used Executerservice and assign a threadpool to download images. This method employs a runnable which will extend Assigntask. This ImageLoader class has a subclass, workerthread, which extends Assyntask and implements runnables. This class uses ExecutorService, and assigns 5 threads to do the work. Other implementations of this kind launch a separate thread per image, meaning that the network connection will become clogged with any image load. Assigning the task to the workerthread subclass and using onprogressupdate to notify the adapter to display the image reduces the burden.</p>
<p>You’ll notice the use of SoftReference here. While this appears to work well, I haven’t done any significant load or performance testing, so it may not be necessary. Since bitmap/drawable objects require memory, and Android supports 16mb of heap, it’s better to classify those objects as SoftReference objects. SoftReferences pointing to softly reachable objects are guaranteed to be cleared before the VM triggers an OutOfMemoryError.  This can be written as follows:</p>
<pre> public class ImageLoader {

private class WorkerThread extends AsyncTask implements Runnable{
		public WorkerThread(String url,int pos) {
			this.url=url;
			intex=pos;
			}
		@Override
		protected void onProgressUpdate(Void... values) {
			mAdapter.notifyDataSetChanged();
			super.onProgressUpdate(values);
		}
		@Override
		public void run() {
			Cache.put(intex,new SoftReference(readDrawableFromNetwork(this.url)));
			publishProgress();
		}
	}

	public Drawable getDrawble(int pos)
	{
		SoftReference mReference=Cache.get(pos);;
		if(mReference!=null)
			return mReference.get();
		else
			return null;
	}

/*method to get Image if already or to start new task to download*/
	public void loadImage(int First,int Last) {
			try{
					_exec = Executors.newFixedThreadPool(5);
				for(int pos=First;pos&lt;=Last;pos++){
					if(Cache.containsKey(pos)){
						if(Cache.get(pos).get()==null)
							_exec.execute(new  WorkerThread(Dataset.mStrings[pos],pos));
					}else{
						_exec.execute(new  WorkerThread(Dataset.mStrings[pos],pos));
					}
				}
			}catch (Exception e) {
				_exec.shutdown();
			}

	}//end of method

	private static Drawable readDrawableFromNetwork(String url ) {
	   Write code here to downlaod image from network.
	}//end of method
}</pre>
<p>And that’s it!</p>
<p>For your reference, the code has been packaged for you to download and inspect <a href="http://www.androidkit.com/wp-content/uploads/2010/05/ImageDownload.zip">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.androidkit.com/loading-images-from-remote-server-over-http-on-a-separate-thread/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Writing Portable Android Applications</title>
		<link>http://www.androidkit.com/writing-portable-android-applications</link>
		<comments>http://www.androidkit.com/writing-portable-android-applications#comments</comments>
		<pubDate>Wed, 21 Apr 2010 02:45:33 +0000</pubDate>
		<dc:creator>cary</dc:creator>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[handset differentiation]]></category>
		<category><![CDATA[screen resolution]]></category>

		<guid isPermaLink="false">http://www.androidkit.com/?p=218</guid>
		<description><![CDATA[<p><strong>(Binil Thomas)</strong></p>
<p>Anyone with significant time in mobile application development understands the challenges of writing portable applications. There are tons of reasons for this, but probably the biggest hurdles we face are:</p>
<ul>
<li>Varying screen sizes</li>
<li>Varying screen resolutions</li>
<li>Varying</li></ul><p>&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p><strong>(Binil Thomas)</strong></p>
<p>Anyone with significant time in mobile application development understands the challenges of writing portable applications. There are tons of reasons for this, but probably the biggest hurdles we face are:</p>
<ul>
<li>Varying screen sizes</li>
<li>Varying screen resolutions</li>
<li>Varying hardware configurations</li>
<li>Varying media formats; such as for images, audio, video</li>
<li>Varying input methods; e.g. touch screen, T9 key pad, qwerty keypad</li>
<li>Non-standard, device-specific hardware keys</li>
</ul>
<p>And so on and so forth &gt;_&lt;</p>
<p>Android engineers, anticipating the witches brew of OEM handsets they would encounter, took steps to try and alleviate the situation by standardizing some key features:</p>
<ul>
<li>A very rich widget set that can scale according to needs</li>
<li>Standardized way of implementing custom widgets</li>
<li>Standardized user interface conventions for touch screen devices</li>
<li>Standardized image capture formats {still buggy from time to time}</li>
<li>Standardized mechanism for sharing code across different components; such as user interface elements, fixed content or a specific activity</li>
<li>Standardized on a base set of hardware keys; e.g. Home, Back, End, and Trackball</li>
</ul>
<p>Above notwithstanding, with screen sizes and resolutions still very much device dependent {see: <a href="http://www.t-mobileg1.com/">T-Mobile G1</a>, <a href="http://www.motorola.com/Consumers/US-EN/Consumer-Product-and-Services/Mobile-Phones/Motorola-DROID-US-EN?localeId=33 ">Motorola Droid</a>, <a href="http://www.google.com/phone/?hl=en&amp;s7e=">Google Nexus One</a>, HTC Hero and so on}, creating a consistent UI that both looks good and works well on all platforms has been a slog. For Android developers or those just interested in Android application development, here we present a method and a design pattern that can be utilized to achieve precisely that. The focus points are as follows:</p>
<ul>
<li>Understand the functionality that needs to be replicated per device. This can be represented by a Java interface to achieve, for example, scaled UI elements across varying screen sizes and resolutions.</li>
<li>Separate device-specific features into device-specific implementations. For example, each phone {including from the same manufacturer} might have different hardware keys, or even different keypads (such as T9, QWERTY, or SureType). If an application is to work on different phones with different input mechanisms, it must take into account these differences when implementing.</li>
<li>A Class Factory that can intelligently instantiate the device-specific components of multiple handset designs.</li>
</ul>
<p>Let’s take for example the case of displaying a splash screen at application launch. Here we address the issue of supporting for multiple devices. The first act of separating the functionality begins with this interface:</p>
<pre>

public interface SplashableScreen {
<p style="padding-left: 30px;">public void showSplashImage(ImageView mView);
<p style="padding-left: 30px;">public void startSpalshing() throws Exception;
<p style="padding-left: 30px;">public void SetSplashDuration(int time);

}
</pre>
<p>Any screen that can be shown as a splash has the functionality as described by the methods indicated.</p>
<p>A device-specific implementation / screen-specific implementation can be written as follows:</p>
<pre>

public class SplashScrren_320_480 implements SplashableScreen{
<p style="padding-left: 30px;">public void showSplashImage(ImageView mView){
<p style="padding-left: 60px;">// Write code speficic to this resolution.
<p style="padding-left: 30px;">}

}
</pre>
<p>And a proper implementation can be instantiated and used as follows:</p>
<pre>
<p style="padding-left: 30px;">public class SplashFactory{
<p style="padding-left: 60px;">public static SplashableScreen getSplashScreen(){
<p style="padding-left: 60px;">// Given a device metrics, instantiate appropriate class and return.
<p style="padding-left: 60px;">}
<p style="padding-left: 30px;">}
</pre>
<p>We’re pleased to offer the full code for this useful application for download <a href="http://www.androidkit.com/wp-content/uploads/2010/04/SplashScreen.zip" target="_self">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.androidkit.com/writing-portable-android-applications/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>AndroidBook Now available in Android Market</title>
		<link>http://www.androidkit.com/androidbook-now-available-in-android-market</link>
		<comments>http://www.androidkit.com/androidbook-now-available-in-android-market#comments</comments>
		<pubDate>Fri, 28 Aug 2009 14:11:46 +0000</pubDate>
		<dc:creator>rohit</dc:creator>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Sourcebits]]></category>
		<category><![CDATA[Facebook App for Android]]></category>

		<guid isPermaLink="false">http://www.androidkit.com/?p=213</guid>
		<description><![CDATA[<p><a href="http://www.cyrket.com/package/com.sourcebits.androidbook">AndroidBook</a> after a month of intensive bug fixing sessions is again available in Android Market. We are sure there are few more bugs that we need to fix, but we did not want our users to keep on waiting. Rest&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cyrket.com/package/com.sourcebits.androidbook">AndroidBook</a> after a month of intensive bug fixing sessions is again available in Android Market. We are sure there are few more bugs that we need to fix, but we did not want our users to keep on waiting. Rest assured, this build is far far better then the last one we put up in the Android Market. We look forward to your feedback and comments on this build.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.androidkit.com/androidbook-now-available-in-android-market/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>AndroidBook – The Android Facebook – soon to be released.</title>
		<link>http://www.androidkit.com/androidbook-%e2%80%93-the-android-facebook-%e2%80%93-soon-to-be-released</link>
		<comments>http://www.androidkit.com/androidbook-%e2%80%93-the-android-facebook-%e2%80%93-soon-to-be-released#comments</comments>
		<pubDate>Mon, 01 Jun 2009 09:10:33 +0000</pubDate>
		<dc:creator>Shesh</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA["Social Media"]]></category>
		<category><![CDATA["Social Networking"]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[AndroidBook]]></category>
		<category><![CDATA[Facebook]]></category>

		<guid isPermaLink="false">http://www.androidkit.com/?p=158</guid>
		<description><![CDATA[<p> </p>
<p></p>
<p class="MsoNormal">Android facebook users, you don’t have to feel left out of the <a title="AndroidKit - AndroidBook" href="http://www.facebook.com" target="_blank">facebook</a> <span> </span>juggernaut <span> </span>anymore – you get the same easy to use, popular facebook that is making waves&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves /> <w:TrackFormatting /> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF /> <w:LidThemeOther>EN-IN</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> <w:SplitPgBreakAndParaMark /> <w:DontVertAlignCellWithSp /> <w:DontBreakConstrainedForcedTables /> <w:DontVertAlignInTxbx /> <w:Word11KerningPairs /> <w:CachedColBalance /> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math" /> <m:brkBin m:val="before" /> <m:brkBinSub m:val="&#45;-" /> <m:smallFrac m:val="off" /> <m:dispDef /> <m:lMargin m:val="0" /> <m:rMargin m:val="0" /> <m:defJc m:val="centerGroup" /> <m:wrapIndent m:val="1440" /> <m:intLim m:val="subSup" /> <m:naryLim m:val="undOvr" /> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"   DefSemiHidden="true" DefQFormat="false" DefPriority="99"   LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Normal" /> <w:LsdException Locked="false" Priority="9" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="heading 1" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" /> <w:LsdException Locked="false" Priority="39" Name="toc 1" /> <w:LsdException Locked="false" Priority="39" Name="toc 2" /> <w:LsdException Locked="false" Priority="39" Name="toc 3" /> <w:LsdException Locked="false" Priority="39" Name="toc 4" /> <w:LsdException Locked="false" Priority="39" Name="toc 5" /> <w:LsdException Locked="false" Priority="39" Name="toc 6" /> <w:LsdException Locked="false" Priority="39" Name="toc 7" /> <w:LsdException Locked="false" Priority="39" Name="toc 8" /> <w:LsdException Locked="false" Priority="39" Name="toc 9" /> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption" /> <w:LsdException Locked="false" Priority="10" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Title" /> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font" /> <w:LsdException Locked="false" Priority="11" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtitle" /> <w:LsdException Locked="false" Priority="22" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Strong" /> <w:LsdException Locked="false" Priority="20" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Emphasis" /> <w:LsdException Locked="false" Priority="59" SemiHidden="false"    UnhideWhenUsed="false" Name="Table Grid" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" /> <w:LsdException Locked="false" Priority="1" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="No Spacing" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 1" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 1" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 1" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 1" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" /> <w:LsdException Locked="false" Priority="34" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" /> <w:LsdException Locked="false" Priority="29" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Quote" /> <w:LsdException Locked="false" Priority="30" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 1" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 1" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 1" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 1" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 1" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 2" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 2" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 2" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 2" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 2" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 2" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 2" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 2" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 3" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 3" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 3" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 3" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 3" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 3" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 3" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 3" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 3" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 4" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 4" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 4" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 4" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 4" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 4" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 4" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 4" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 4" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 5" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 5" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 5" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 5" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 5" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 5" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 5" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 5" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 5" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 6" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 6" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 6" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 6" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 6" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 6" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 6" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 6" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 6" /> <w:LsdException Locked="false" Priority="19" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" /> <w:LsdException Locked="false" Priority="21" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" /> <w:LsdException Locked="false" Priority="31" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" /> <w:LsdException Locked="false" Priority="32" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" /> <w:LsdException Locked="false" Priority="33" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Book Title" /> <w:LsdException Locked="false" Priority="37" Name="Bibliography" /> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" /> </w:LatentStyles> </xml><![endif]--> <!--[if gte mso 10]><br />
<mce:style><!   /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-qformat:yes; 	mso-style-parent:""; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin-top:0cm; 	mso-para-margin-right:0cm; 	mso-para-margin-bottom:10.0pt; 	mso-para-margin-left:0cm; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-fareast-language:EN-US;} --></p>
<p><!--[endif]--></p>
<p class="MsoNormal">Android facebook users, you don’t have to feel left out of the <a title="AndroidKit - AndroidBook" href="http://www.facebook.com" target="_blank">facebook</a> <span> </span>juggernaut <span> </span>anymore – you get the same easy to use, popular facebook that is making waves on the iPhone, on your Android.</p>
<p class="MsoNormal"><a rel="attachment wp-att-159" href="http://www.androidkit.com/?attachment_id=159"><img class="alignnone size-medium wp-image-159" title="home_newsfeeds" src="http://www.androidkit.com/wp-content/uploads/2009/06/home_newsfeeds-200x300.png" alt="home_newsfeeds" width="190" /></a> <a rel="attachment wp-att-160" href="http://www.androidkit.com/androidbook-%e2%80%93-the-android-facebook-%e2%80%93-soon-to-be-released/home_notifications"><img class="alignnone size-medium wp-image-160" title="home_notifications" src="http://www.androidkit.com/wp-content/uploads/2009/06/home_notifications-200x300.png" alt="home_notifications" width="190" /></a></p>
<p class="MsoNormal">The Design follows the same popular features of facebook you are used to, and far superior to the clones that are a dime a dozen on the android market.</p>
<p class="MsoNormal">Of course you have to use certain features like registering for an account and editing your profile settings on the popular facebook website , but this app comes very close to the home grown iPhone app. Actually, it beats it in looks and some features of user-intuitiveness.</p>
<p class="MsoNormal"><a rel="attachment wp-att-161" href="http://www.androidkit.com/androidbook-%e2%80%93-the-android-facebook-%e2%80%93-soon-to-be-released/profile_walls"><img class="alignnone size-medium wp-image-161" title="profile_walls" src="http://www.androidkit.com/wp-content/uploads/2009/06/profile_walls-200x300.png" alt="profile_walls" width="190" /></a> <a rel="attachment wp-att-162" href="http://www.androidkit.com/androidbook-%e2%80%93-the-android-facebook-%e2%80%93-soon-to-be-released/profile_photos"><img class="alignnone size-medium wp-image-162" title="profile_photos" src="http://www.androidkit.com/wp-content/uploads/2009/06/profile_photos-200x300.png" alt="profile_photos" width="190" /></a></p>
<p class="MsoNormal">Facebook opened up its API for 3<sup>rd</sup> party development, saying they were not interested to pursue other platforms after having developed an in-house version for the iPhone. RIM engineers also collaborated with Facebook to develop one for the blackberry.<span> </span>One is not aware of the reason why this step motherly treatment for Android, but it is. This could be due to Google going the MySpace way, but it is true that Facebook has even stopped building their API in java since mid 2008.</p>
<p class="MsoNormal"><a rel="attachment wp-att-163" href="http://www.androidkit.com/androidbook-%e2%80%93-the-android-facebook-%e2%80%93-soon-to-be-released/profile_photos_gallery"><img class="alignnone size-medium wp-image-163" title="profile_photos_gallery" src="http://www.androidkit.com/wp-content/uploads/2009/06/profile_photos_gallery-200x300.png" alt="profile_photos_gallery" width="190" /></a> <a rel="attachment wp-att-164" href="http://www.androidkit.com/androidbook-%e2%80%93-the-android-facebook-%e2%80%93-soon-to-be-released/friends_friendslist"><img class="alignnone size-medium wp-image-164" title="friends_friendslist" src="http://www.androidkit.com/wp-content/uploads/2009/06/friends_friendslist-200x300.png" alt="friends_friendslist" width="190" /></a></p>
<p class="MsoNormal">Facebook has not opened up its API fully. It is still holding on to Chat and Inbox APIs. <span> </span>A lot of Android and 3<sup>rd</sup> party apps out there are only catering to obtaining News Feeds, friend -lists from Facebook and sending SMSs in the form of status updates, and thats about it!.</p>
<p class="MsoNormal"><a rel="attachment wp-att-165" href="http://www.androidkit.com/androidbook-%e2%80%93-the-android-facebook-%e2%80%93-soon-to-be-released/chat_onlinefriend"><img class="alignnone size-medium wp-image-165" title="chat_onlinefriend" src="http://www.androidkit.com/wp-content/uploads/2009/06/chat_onlinefriend-200x300.png" alt="chat_onlinefriend" width="190" /></a> <a rel="attachment wp-att-166" href="http://www.androidkit.com/androidbook-%e2%80%93-the-android-facebook-%e2%80%93-soon-to-be-released/chat_onlinechat"><img class="alignnone size-medium wp-image-166" title="chat_onlinechat" src="http://www.androidkit.com/wp-content/uploads/2009/06/chat_onlinechat-200x300.png" alt="chat_onlinechat" width="190" /></a></p>
<p class="MsoNormal">AndroidBook has broken the barrier, it is the closest you can get to the iPhone app developed by Facebook. We did it the tough way – but we did it!. This despite the fact that facebook for iPhone is a homegrown application, which had access to the closed facebook APIs.</p>
<p class="MsoNormal"><a rel="attachment wp-att-167" href="http://www.androidkit.com/androidbook-%e2%80%93-the-android-facebook-%e2%80%93-soon-to-be-released/inbox_compose"><img class="alignnone size-medium wp-image-167" title="inbox_compose" src="http://www.androidkit.com/wp-content/uploads/2009/06/inbox_compose-200x300.png" alt="inbox_compose" width="190" /></a> <a rel="attachment wp-att-168" href="http://www.androidkit.com/androidbook-%e2%80%93-the-android-facebook-%e2%80%93-soon-to-be-released/inbox_friendssearch"><img class="alignnone size-medium wp-image-168" title="inbox_friendssearch" src="http://www.androidkit.com/wp-content/uploads/2009/06/inbox_friendssearch-200x300.png" alt="inbox_friendssearch" width="190" /></a></p>
<p class="MsoNormal" style="text-align: left;"><strong>Features of AndroidBook:</strong></p>
<ul>
<li><!--[if !supportLists]-->Login – Login to Facebook, and provide link to Facebook website for Sign Up</li>
</ul>
<p class="MsoListParagraphCxSpMiddle" style="text-align: left;"><strong>Home:</strong></p>
<ul>
<li><!--[if !supportLists]-->News Feeds (Status Updates and Links)</li>
<li><!--[if !supportLists]-->Notifications (Updates to Photos)</li>
<li><!--[if !supportLists]-->Requests (Friend requests)</li>
</ul>
<p class="MsoListParagraphCxSpMiddle" style="text-align: left;"><strong>Profile:</strong></p>
<ul>
<li><!--[if !supportLists]--> Wall (Compose status updates on wall)</li>
<li><!--[if !supportLists]-->Info (Information of Logged in User)</li>
<li><!--[if !supportLists]-->Photos, Take, Replace and Upload to personal Album.</li>
</ul>
<p class="MsoListParagraphCxSpMiddle" style="text-align: left;"><strong>Friends:</strong></p>
<ul>
<li><!--[if !supportLists]-->Friends Search and Friends Profile</li>
</ul>
<p class="MsoListParagraphCxSpMiddle" style="text-align: left;"><strong>Chat:</strong></p>
<ul>
<li><!--[if !supportLists]-->Chat with Available friends</li>
</ul>
<p class="MsoListParagraphCxSpMiddle" style="text-align: left;"><strong>E-mail: </strong></p>
<ul>
<li><!--[if !supportLists]--><!--[endif]-->Inbox (Select, Compose, Reply <span> </span>and Send)</li>
<li>Sent <span> </span>(Delete)</li>
<li>Updates (Events Notifications)</li>
</ul>
<p>Take Photo, Cancel, Replace or<span> </span>Save photo (store locally or upload to personal album)<br />
Logout</p>
]]></content:encoded>
			<wfw:commentRss>http://www.androidkit.com/androidbook-%e2%80%93-the-android-facebook-%e2%80%93-soon-to-be-released/feed</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>ADC 2 is here to rock the world of Android Developers again!</title>
		<link>http://www.androidkit.com/adc-2-is-here-to-rock-the-world-of-android-developers-again</link>
		<comments>http://www.androidkit.com/adc-2-is-here-to-rock-the-world-of-android-developers-again#comments</comments>
		<pubDate>Thu, 28 May 2009 11:53:16 +0000</pubDate>
		<dc:creator>Shesh</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA["Developers Challenge" ADC "ADC 2"]]></category>
		<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://www.androidkit.com/?p=151</guid>
		<description><![CDATA[<p><a title="AndroidKit - ADC 2" href="http://code.google.com/android/adc/" target="_blank">ADC 2</a> has been announced at the Google site. When Android was announced on 5 November, 2007, Google also announced a $10 million Android Developer Challenge, split into two separate $5 million events. ADC 1 with a $5 million prize&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p><a title="AndroidKit - ADC 2" href="http://code.google.com/android/adc/" target="_blank">ADC 2</a> has been announced at the Google site. When Android was announced on 5 November, 2007, Google also announced a $10 million Android Developer Challenge, split into two separate $5 million events. ADC 1 with a $5 million prize money attracted 1700 entries and 50 winners. <a title="AndroidKit - ADC 2" href="http://code.google.com/android/adc/" target="_blank">ADC 2</a> has a prize kitty of $1,925,000 split amongst 30 winners . Can we expect an ADC 3 for the remaining $3,075,000 ?.</p>
<p>Compared to investments of Apple, which has a $100 million fund to seed iPhone applications, and RIM, which has $150 million fund to seed Blackberry applications, the Google investment is a far cry away.</p>
<p>Judging for ADC 2 is different from ADC 1 in that there will be 30 winners against the 50 last year, and 45% of weightage for an application is decided by the community vote and 55% by the judges.<br />
It is mandatory to submit applications that run on Android 1.5 and be in English, and those that are unpublished and non-upgraded.</p>
<p>ADC2 will have two rounds of judging, the first round results in 200 apps total(in 10 categories), that will proceed to the second round. Out of which 30 entries will be winners with 3 entries within the 30 picking up the prizes in the overall winners category.</p>
<p>The contest is expected to start in August 09 and winning entries declared by November 09. We could see a drop in the Android market uploads, as the opportunity cost of waiting is pretty high. We could also see a host of entries in the Lite version (Full-featured with expiry time), so popular applications could potentially rake in money in both places (ADC 2 and The Android Market).</p>
<p>One bone of contention is the &#8216;Supposed ban on Open Source apps &#8216; <a title="AndroidKit - ADC 2" href="http://andblogs.net/2009/05/adc2-announced-but-theres-a-catch/comment-page-1/" target="_blank">My comments</a> here.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.androidkit.com/adc-2-is-here-to-rock-the-world-of-android-developers-again/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Early experience with the Android 1.5 SDK</title>
		<link>http://www.androidkit.com/early-experience-with-the-android-15-sdk</link>
		<comments>http://www.androidkit.com/early-experience-with-the-android-15-sdk#comments</comments>
		<pubDate>Wed, 29 Apr 2009 14:06:51 +0000</pubDate>
		<dc:creator>Shesh</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.androidkit.com/?p=143</guid>
		<description><![CDATA[<p>The <a title="AndroidKit" href="http://developer.android.com/sdk/1.5_r1/index.html" target="_blank">Android 1.5 SDK r1</a> has been released by the Google team and it was hardly any wait from the early look SDK that came out 2 weeks ago.<br />
Of course, the feature-set mentioned in the&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>The <a title="AndroidKit" href="http://developer.android.com/sdk/1.5_r1/index.html" target="_blank">Android 1.5 SDK r1</a> has been released by the Google team and it was hardly any wait from the early look SDK that came out 2 weeks ago.<br />
Of course, the feature-set mentioned in the beta is there, and the documentation is updated.</p>
<p>More details on <a title="AndroidKit" href="http://developer.android.com/guide/developing/tools/avd.html" target="_blank">creation of AVDs</a> and <a title="AndroidKit" href="http://developer.android.com/sdk/android-1.5.html" target="_blank">version notes</a> detailing the usage of minSDKVersion for developers.</p>
<p>Compiling our source with a build target of 1.1, went smoothly and hardly any change in code was needed for a build target of 1.5. However, moving to build target of Android 1.5 would not suffice for a project that used Maps, we had to select the &#8216;Google APIs&#8217; build target (understandable as the maps package was moved out).  Respective Deployment targets were selected for running the apk in the emulator.</p>
<p>It was a joy to see the soft-keys come up when I hit the text box, I have to admit!.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.androidkit.com/early-experience-with-the-android-15-sdk/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Plateau &#8211; where every enthusiastic gamer should reach&#8230;</title>
		<link>http://www.androidkit.com/the-plateau-where-every-enthusiastic-gamer-should-reach</link>
		<comments>http://www.androidkit.com/the-plateau-where-every-enthusiastic-gamer-should-reach#comments</comments>
		<pubDate>Tue, 28 Apr 2009 11:37:12 +0000</pubDate>
		<dc:creator>Shesh</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Arcade]]></category>
		<category><![CDATA[Challenge]]></category>
		<category><![CDATA[Game]]></category>
		<category><![CDATA[Plateau]]></category>
		<category><![CDATA[Puzzle]]></category>

		<guid isPermaLink="false">http://www.androidkit.com/?p=134</guid>
		<description><![CDATA[<p><a title="AndroidKit - The Plateau" href="http://www.sourcebits.com/android/theplateau" target="_blank">The Plateau </a>- A multi-level puzzle that will challenge you and take you to a different plane, has just been released on the Android.<br />
Already a winner in iPhone and rated <a title="AndroidKit - The Plateau" href="http://wireless.ign.com/articles/941/941012p1.html" target="_blank">8.5/10</a> by&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p><a title="AndroidKit - The Plateau" href="http://www.sourcebits.com/android/theplateau" target="_blank">The Plateau </a>- A multi-level puzzle that will challenge you and take you to a different plane, has just been released on the Android.<br />
Already a winner in iPhone and rated <a title="AndroidKit - The Plateau" href="http://wireless.ign.com/articles/941/941012p1.html" target="_blank">8.5/10</a> by IGN wireless games review; on Android, &#8216;The Plateau&#8217; is guaranteed to blow your mind.</p>
<p>&#8216;<a title="AndroidKit - The Plateau" href="http://www.sourcebits.com/android/theplateau" target="_blank">The Plateau</a>&#8216; takes Android&#8217;s touch screen capabilites to a whole new level.<br />
Code is performance optimized, so lag is non-existant as you un-entangle the crossed lines by moving the orbs. To top it all, the background music is bound to leave you in a trance.</p>
<p>There are two modes of &#8216;<a title="AndroidKit - The Plateau" href="http://www.sourcebits.com/android/theplateau" target="_blank">The Plateau</a>&#8216; &#8211; Challenge and Arcade.<br />
In the non-timed Challenge mode, you can leisurely work out each level and thus help build your own strategies.<br />
The strategy skills that you have thus acquired will help you beat the time for each level in the Arcade mode.</p>
<p>Every level has orbs that randomly change their color &#8211; your perceptiveness and responsiveness can help you alter your score to your advantage.<br />
You can resume every level where you ended, you can submit your score and check your position in the high scores list &#8211; fight against yourself or the competition, which you will have in plenty,  i.e.,  if you can let go.</p>
<p>Be warned, this game is highly addictive, and promises to entangle you in its web and launch you to a rarefied atmosphere in outer space.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.androidkit.com/the-plateau-where-every-enthusiastic-gamer-should-reach/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android 1.5 Early Look SDK released</title>
		<link>http://www.androidkit.com/android-15-early-look-sdk-released</link>
		<comments>http://www.androidkit.com/android-15-early-look-sdk-released#comments</comments>
		<pubDate>Wed, 15 Apr 2009 09:22:41 +0000</pubDate>
		<dc:creator>Shesh</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA["Android 1.5"]]></category>
		<category><![CDATA[Cupcake]]></category>

		<guid isPermaLink="false">http://www.androidkit.com/?p=123</guid>
		<description><![CDATA[<p>Touted to power the next Android device, aka &#8220;Android on Steroids&#8221;, the Android Developer Blog has announced the early release of the <a title="AndroidKit" href="http://developer.android.com/sdk/preview/" target="_blank">Android 1.5 SDK</a> ,  which is to be released in its complete glory, to its&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>Touted to power the next Android device, aka &#8220;Android on Steroids&#8221;, the Android Developer Blog has announced the early release of the <a title="AndroidKit" href="http://developer.android.com/sdk/preview/" target="_blank">Android 1.5 SDK</a> ,  which is to be released in its complete glory, to its developers, at the end of the month. For the time being, developers can get-a-hang of the new API, which is drawn from the <a title="AndroidKit" href="http://source.android.com/" target="_blank">Cupcake</a> branch of the Android Open Source project.</p>
<p>Prominent features of the new SDK are :<br />
Speech Recognition, Soft keyboard, Improved accelerometer and Video recording and uploading capability.<br />
A complete list of the <a title="AndroidKit" href="http://developer.android.com/sdk/preview/features.html" target="_blank">Android 1.5 Highlights</a>.</p>
<p>The biggest improvement from a developers perspective is the AVD Concurrency. Developers can now create Android Virtual Devices with different names and work with emulators in parallel. Also, the choice of multiple targets (including Android 1.1 and Android 1.5), means that developers can continue to test their compilations for older targets (1.1 and earlier), but the catch is, you lose network connectivity (known issue in this SDK). So if you are developing an application which uses network access, then you have to wait for the release version of Android 1.5 SDK.</p>
<p>Eclipse developers, will have to uninstall the ADT 0.8 plugin and install the ADT 0.9 plugin to make use of the new SDK.</p>
<p>It is not yet clear if the team has enhanced the code to handle errors such as &#8211; memory overrun that needs &#8216;bitmap recycle&#8217; and &#8216;audio flinger &#8216; when looping sound files, atleast in this release.</p>
<p>For the user, however, the question remains how far the G1 will continue. With the 1.5 SDK onslaught, we are definitely looking at a G3 (as per the API Level). There are inherent limitations to firmware upgrades, as it needs a supporting underlying hardware. Also, with the addition of the soft keypad, can we expect the new device be thinner ?</p>
<p>The G1 device certainly needs more RAM (55MB ? come on guys &#8211; the iPhone 3G will have 128MB, what is Google thinking?)</p>
<p>But for now, it is hoping for rosy days ahead for our favourite platform &#8211; Android.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.androidkit.com/android-15-early-look-sdk-released/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Signing your Android Application</title>
		<link>http://www.androidkit.com/signing-your-android-application</link>
		<comments>http://www.androidkit.com/signing-your-android-application#comments</comments>
		<pubDate>Fri, 03 Apr 2009 08:01:10 +0000</pubDate>
		<dc:creator>Shesh</dc:creator>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Android Signing]]></category>

		<guid isPermaLink="false">http://www.androidkit.com/?p=85</guid>
		<description><![CDATA[<p><span style="color: #00ffbf;"><strong>Generating Your Own Key:</strong></span></p>
<p>If you wish to publish your application to other users, you are required to sign your application with your own personal certificate. You can generate your own certificate by using the keytool.exe that comes with the&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p><span style="color: #00ffbf;"><strong>Generating Your Own Key:</strong></span></p>
<p>If you wish to publish your application to other users, you are required to sign your application with your own personal certificate. You can generate your own certificate by using the keytool.exe that comes with the JDK/bin folder. In most cases, you can tell the SDK build tools how to find keytool by making sure that your JAVA_HOME environment variable is set and that it references a suitable JDK. Alternatively, you can add the JDK version of Keytool to your PATH variable.</p>
<p>To generate your own certificate, issue the following command:</p>
<pre>keytool –genkey –v –keystore sourcebits.keystore –alias CoolApp –keyalg RSA –validity 10000</pre>
<p>The above command generates a certificate named sourcebits.keystore with the key alias sourcebits, generated using the RSA algorithm, and with a validity of 10,000 days (this is the minimum recommended).</p>
<p>You will be prompted for some information:</p>
<p>What is your first and last name?</p>
<p>[unknown]: &lt;enter your first and last name&gt;</p>
<p>What is the name of your organizational unit?</p>
<p>[unknown]: &lt;enter your organizational unit&gt;</p>
<p>What is the name of your organization?</p>
<p>[unknown]: &lt;enter the name of your company&gt;</p>
<p>What is the name of your City or Locality?</p>
<p>[unknown]: &lt;enter the name of your city&gt;</p>
<p>What is the name of your State or Province?</p>
<p>[unknown]: &lt;enter the name of your state&gt;</p>
<p>What is the two-letter country code for this unit?</p>
<p>[unknown]: &lt;enter the two digit country code&gt; e.g for USA it is US.</p>
<p>If you are publishing your application for the Android Market, your keystore must have a validity period that ends after 22 October 2033 (which is the reason greater than 10000 days validity is recommended).</p>
<p>Keytool prompts you to provide passwords for the keystore and key.  It then generates the keystore as a file called sourcebits.keystore. The keystore and key are protected by the passwords you entered. The keystore contains a single key, valid for 10000 days. The alias is a name that you — will use later, to refer to this keystore when signing your application. Secure and protect these two passwords so that only people who are authorized to sign your applications know about them.</p>
<p><span style="color: #00ffbf;"><strong>Signing your Android application:</strong></span></p>
<p>All Android applications must be signed before they are allowed to be deployed onto a device.  Android Market Place has made it mandatory to at-least Self-Sign your app before it is accepted. Unlike other mobile platforms, you need not purchase digital certificates from a certificate authority (CA). Instead, you can self-sign (generate your own personal certificate and use it to sign your Android applications).</p>
<p><strong><span style="color: #00ffbf;">To sign your application manually:</span></strong></p>
<p>Have a project that generates your executable with the name you desire for your application.</p>
<p><strong><span style="color: #00ffbf;">(PAIN POINT: Your signing may fail otherwise). </span></strong></p>
<p>Go to Eclipse, right-click on the project -&gt;Android Tools-&gt;Export Unsigned Application Package and Select the apk file. You will then be asked to select a directory for exporting the application. For convenience you can export the Android package (with the .apk extension) to JDK/bin.</p>
<pre>jarsigner -verbose -keystore sourcebits.keystore CoolApp.apk CoolApp</pre>
<p>When prompted for the password for the keystore, use the password that was supplied during the key generation.</p>
<p>To verify that the application is signed correctly, you can use the –verify option with jarsigner.exe.</p>
<p>To verify that your .apk is signed, you can use a command like this:</p>
<pre>$ jarsigner -verify CoolApp.apk</pre>
<p>If the .apk is signed properly, Jarsigner prints &#8220;jar verified&#8221;. If you want more details, you can try one of these commands:</p>
<pre>$ jarsigner -verify -verbose CoolApp.apk</pre>
<p>or</p>
<pre>$ jarsigner -verify -verbose -certs CoolApp.apk</pre>
<p>The command above, with the –certs option added, the details of the certificate used to sign the application can be seen.</p>
<p><span style="color: #00ffbf;">NOTE:</span></p>
<p>Select strong passwords for the keystore and key.</p>
<p>When you use keytool and jarsigner, <em>do not</em> supply the -storepass and -keypass options at the command line</p>
]]></content:encoded>
			<wfw:commentRss>http://www.androidkit.com/signing-your-android-application/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flashing Firmware Images to the ADP1 Device</title>
		<link>http://www.androidkit.com/flashing-firmware-images-to-the-adp1-device</link>
		<comments>http://www.androidkit.com/flashing-firmware-images-to-the-adp1-device#comments</comments>
		<pubDate>Tue, 31 Mar 2009 13:07:34 +0000</pubDate>
		<dc:creator>Shesh</dc:creator>
				<category><![CDATA[Installation]]></category>

		<guid isPermaLink="false">http://www.androidkit.com/?p=47</guid>
		<description><![CDATA[<p>This post serves to reduce the pain points of developers trying to Upgrade/Downgrade their G1 Firmware by following the HTC Android<strong> <a href="http://www.htc.com/www/support/android/adp.html" target="_blank">support site</a></strong> and various forums for bits and pieces of information and putting it together in one&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>This post serves to reduce the pain points of developers trying to Upgrade/Downgrade their G1 Firmware by following the HTC Android<strong> <a href="http://www.htc.com/www/support/android/adp.html" target="_blank">support site</a></strong> and various forums for bits and pieces of information and putting it together in one place. This post was modified on 30th April 09 to incorporate the 1.5 SDK.</p>
<p>I have added the solutions to the pain points after going through the upgrade process myself, from version 1.0 to 1.1 to 1.5 on an ADP1 device.</p>
<p>From the above HTC support link, download the actual Radio and System image binaries, as well as the fastboot executable, to help you flash the images to your device.</p>
<p>With the above files, you can:</p>
<ul>
<li> Keep your Dev Phone up to date with the latest Android system images</li>
<li> Test your application on multiple Android platform versions, to ensure compatibility</li>
<li> Restore a corrupted device to a factory state</li>
</ul>
<p>When flashing your device, make sure that you follow all of the instructions below, in the order that they are given.</p>
<p>Note that you can flash a system only to a supported device, as described in the following sections.</p>
<p><strong>Overview</strong></p>
<p>The sections below describe two alternative methods that you use to flash your device with a factory Android system image:</p>
<p>    * Flashing the device using an updated recovery image (recovery-image method)</p>
<p>      This approach involves using the adb tool, available in the Android SDK, to copy updated radio and recovery images to the device&#8217;s recovery partition on the SD card. It&#8217;s a straightforward operation that you can run in a Windows, OS X, or Linux environment. If you are an Android application developer, this method of flashing your device is recommended. Note that to use this method, the device must have the original factory bootloader that came with the device (hboot 0.95.3000).</p>
<p>    * Flashing the device using fastboot commands (fastboot method)</p>
<p>      This approach is slightly more complicated and involves using the adb tool to update the radio image and the fastboot tool to flash a system image to the device. Flashing your device in this way is useful if you need to install the radio and system images independently or you are already familiar with fastboot and are using it successfully in your environment. To use this method, your device must have a fastboot-compatible bootloader. Having the original factory bootloader included on ADP devices is not required.</p>
<p>Before you get started, decide which of these two methods is appropriate for you, then follow the instructions below, in the order given. The flashing process for both methods is similar ??the main difference is that the recovery-image method does not require the fastboot tool. Rather than using fastboot to flash a system image to the device, you use adb to copy an updated recovery image to the device. All other steps are the same.</p>
<p><strong>Supported Devices</strong></p>
<p>The system images provided on this page are designed only for installation on devices that meet the following requirements:</p>
<ul>
<li> HTC Dream hardware platform only</li>
<li> Device must include a development bootloader that supports fastboot</li>
</ul>
<p>You cannot flash these system images to other hardware platforms or to versions of HTC Dream hardware that don&#8217;t have a development bootloader that supports fastboot (fastboot is described in the next section). For example, the bootloader on T-Mobile G1 devices (and similar consumer devices) is not a development bootloader and does not support fastboot, so you cannot flash a new system image to those devices.</p>
<p><strong>Get the Tools</strong></p>
<p>To flash a system image to your device, you need a command-line tool called fastboot and the adb tool provided in the Android SDK.</p>
<p>The information of the executables that can be downloaded from the <a href="http://www.htc.com/www/support/android/adp.html" target="_blank"><strong>support site</strong></a> </p>
<p>On OS X and Linux, you can store the fastboot executable anywhere on your machine. On Windows, you must store the fastboot executable where it can find the AdbWinApi.dll file (included with the Android SDK), otherwise it will not work properly.</p>
<p><span style="color: #00FFBF;">The recommended place to store the fastboot executable on Windows is with the other tools in the Android SDK, in the &lt;sdk&gt;/tools directory. On all platforms, you may want to add the location to your PATH, for convenience.</span></p>
<p><span style="color: #00FFBF;">If your command line interface does not recognise fastboot,</span></p>
<p><span style="color: #00FFBF;">On Windows, where &lt;sdk&gt;/tools has been added to path, Click START-&gt;Run. Type ‘cmd’ and click ENTER, In the console type ‘cmd’ and then type ‘fastboot’ and press ENTER</span></p>
<p><span style="color: #00FFBF;">You cannot proceed with the upgrade of the System Image without fastboot, so the above steps are A MUST.</span></p>
<p>If you do not have the Android SDK installed on your local machine, download the latest version from this location and install it:</p>
<p><a title="http://developer.android.com/sdk/1.5_r1/index.html" href="http://developer.android.com/sdk/1.5_r1/index.html" target="_blank">http://developer.android.com/sdk/1.5_r1/index.html</a></p>
<p>Once you install the SDK, the adb tool will be available to you.</p>
<p>If your development machine is running Windows, you should make sure to update your USB driver before continuing. For your convenience, the Android SDK (1.0 r2 or later) includes an updated USB driver that you can install. For more information, see <a title="Setting up a Device for Development" href="http://developer.android.com/guide/developing/device.html#setting-up" target="_blank">Setting up a Device for Development</a> on the Android Developers Site.</p>
<p><strong>Download the Image Packages</strong></p>
<p>To flash a new system image to your device, you need to download two image packages to your local machine.</p>
<ul>
<li> If you are flashing your device using the recovery-image method, you need to download a recovery image package and a radio image package only.</li>
<li> If you are flashing your device using the fastboot method, you need to download a system image package and a radio image package only.</li>
</ul>
<p><strong>Radio Image Download</strong></p>
<p>Each Android platform version is designed to run on top of a specifc version of the radio firmware. Typically, each successive release of the Android platform relies on a newer version of the radio firmware, so whenever you are planning to flash a new system image to your device, whether upgrade or downgrade, you should also update the radio firmware to the version expected by the platform. If you do not update your radio image, the system may encounter problems.</p>
<p>Download the signed radio image packages that you need from <a href="http://www.htc.com/www/support/android/adp.html" target="_blank"><strong>support site</strong></a>. The platform version compatibility of each radio image package is indicated in its filename.</p>
<p>Once you&#8217;ve downloaded a radio image package, you do not need to extract it — you can reference the image package directly from adb commands, as described in the sections below. You can store the radio image package anywhere on your machine, but make sure to store to maintain its version-specific naming.</p>
<p><strong>System Image Download</strong></p>
<p>Download the signed system image packages that you need from <a href="http://www.htc.com/www/support/android/adp.html" target="_blank"><strong>support site</strong></a>. Multiple versions of the Android platform are available, so make sure that you understand what version(s) you need and what version(s) you are downloading.</p>
<p>For development, you should select the lowest possible Android platform version that meets the needs of your applications. For example, if you are working in the Android 1.1 SDK and your application is using APIs introduced in Android 1.1, then you should download the Android 1.1 system image. If you are using the Android 1.1 SDK but your application does not use Android 1.1 APIs, then using Android 1.0 image is sufficient.</p>
<p>For testing, consider downloading all platform versions with which your application is compatible, then running your applications on those platform versions to ensure that they work as designed.</p>
<p>Each system image package is a .zip archive that includes several images that you will flash to your device:</p>
<ul>
<li> A boot image — contains the kernel and initrd.</li>
<li> A recovery image — contains files used for rebuilding/updating the system.</li>
<li> A system image — contains the Android platform/apps of the specified version.</li>
</ul>
<p><span style="color: #00FFBF;">Note that the images in each package are mutually dependent, so you must flash them all to your device together. For example, you should not flash a system image to the device without also flashing the boot and recovery images included in the same image package.</span></p>
<p>Once you&#8217;ve downloaded a system image package, you do not need to extract it — you can reference the image package directly from fastboot commands, as described in the sections below. You can store the system image package anywhere on your machine, but make sure to store to maintain its version-specific naming.</p>
<p><strong>Recovery Image Download</strong></p>
<p>If you are flashing your device using the recovery-image method, download the recovery image package(s) that you need from the list of links in the table above. Currently, a recovery image packages is available only for the Android 1.1 platform version.</p>
<p>Each recovery image package is a .zip archive containing the full contents of a recovery partition, including:</p>
<ul>
<li> A boot image &#8211; contains the kernel and initrd.</li>
<li> A recovery image &#8211; contains files used for rebuilding/updating the system.</li>
<li> A system image &#8211; contains the Android platform/apps of the specified version.</li>
<li> A radio image &#8211; contains the compatible radio firmware.</li>
</ul>
<p>Note that the images in each recovery package are mutually dependent, so you must copy them all to your device together. For example, you should not copy a system image to the device without also copying the boot and recovery images included in the same image package.</p>
<p>Once you&#8217;ve downloaded a recovery image package, you do not need to extract it &#8211; you can reference the image package directly from adb commands, as described in the sections below. You can store the recovery image package anywhere on your machine, but make sure to store to maintain its version-specific naming.</p>
<p><span style="color: #00ffbf;">PAINPOINT: Cannot downgrade to Android 1.1 with recovery package 142608</p>
<p>If you are using the recovery-image method and had previously downloaded and the Android 1.1 recovery package signed-dream_devphone-ota-142608.zip, you should make sure to download the replacement recovery package signed-dream_devphone-ota-142608-b.zip (see the download link at the top of this page).</p>
<p>This is necessary because the recovery package signed-dream_devphone-ota-142608.zip prevents you from downgrading to it from a higher version of the recovery image. Therefore, if you upgrade to the Android 1.5 recovery image, you won&#8217;t be able to downgrade to Android 1.1 unless you use the replacement package signed-dream_devphone-ota-142608-b.zip.</span></p>
<p><strong>Update the Device Radio Firmware</strong></p>
<p>Follow the steps below to update the radio image on the device.</p>
<ol>
<li>Ensure that a SD card is inserted in the device</li>
<li>Boot the device normally</li>
<li>Connect the device to your development machine over USB.</li>
<li>At a command line, ensure that adb recognizes your device by issuing this command:</li>
<li>$ adb devices<br />
You should see your device in the console output generated by the command</li>
<li>Use the adb push command to copy the contents of the radio image package to the update.zip archive on the device&#8217;s SD card:</li>
<li>$ adb push &lt;radio-image-package&gt;.zip /sdcard/update.zipThe command prints the number of bytes copied and the elapsed time, then completes. However, note that the files are still being copied in the background, so wait a minute or two before continuing. If you continue too soon and terminate the operation before it is complete, you will get a &#8220;bad update.zip&#8221; error later, when you try to install the update. To ensure that the entire radio image package is copied before you continue, use this command:
<p>$ adb shell sync</p>
<p>When sync returns, all of the data has been copied to the device.<br />
<span style="color: #00ffbf;">PAIN POINT: I never got a ! icon following step 8 from the Support site. And without completing the steps below, the   installation is NOT complete.   Turn off your Phone:Press ‘Menu’ to go to Main Screen with Wallpaper.Keep the ‘Call end’ button pressed till you get the Phone options, and select Power Off option. Select OK to shut down.</span></li>
<li><span style="color: #00ffbf;">Hold the home key and power key to boot and enter the recovery mode. When the device enters recovery mode, it displays a &#8220;!&#8221; icon.</span></li>
<li>With the recovery console displayed, open the sliding keyboard and hold down the ALT+l key combination to enable log output in the recovery console and continue.</li>
<li>Next, hold down the ALT+s key combination to install the update. An &#8220;installing update&#8221; icon and progress bar are displayed<strong><span style="color: #00ffbf;"> </span></strong><span style="color: #00ffbf;">(keep holding the ALT+s combination) — when the progress bar completes, the installation is finished.</span></li>
<li>Press the HOME-BACK key combination to write the radio image, update the firmware, and automatically reboot. Note that if you do not use HOME-BACK at this point, the device will not load the updated radio image. After writing the radio image, the device shows a &#8220;updating firmware&#8221; icon for a few seconds and then automatically reboots in normal mode.</li>
</ol>
<p>After the device reboots normally, you can update the system image, as described in the next section.</p>
<p><span style="color: #00ffbf;">To check the radio image version, you can start the device in fastboot mode (see below). If you still find the old image version, your update was not complete.</span></p>
<p><strong>Copy the Recovery Image Package to the Device</strong><br />
For the recovery-image method only, after you&#8217;ve successfully updated the radio firmware, the next (and final) step is using the adb tool to copy the recovery image package to the device SD card. (If you are using the fastboot method, you do not need to copy a recovery image to the device &#8211; see Flash the System Image Package to the Device instead.)</p>
<p>follow the steps below to update the recovery image on the device.</p>
<ol>
<li>Ensure that a SD card is inserted in the device</li>
<li>Boot the device normally</li>
<li>Connect the device to your development machine over USB.</li>
<li>At a command line, ensure that adb recognizes your device by issuing this command:</li>
<li>$ adb devices<br />
You should see your device in the console output generated by the command</li>
<li>Use the adb push command to copy the contents of the recovery image package to the update.zip archive on the device&#8217;s SD card:</li>
<li>$ adb push &lt;recovery-image-package&gt;.zip /sdcard/update.zipThe command prints the number of bytes copied and the elapsed time, then completes. However, note that the files are still being copied in the background, so wait a minute or two before continuing. If you continue too soon and terminate the operation before it is complete, you will get a &#8220;bad update.zip&#8221; error later, when you try to install the update. To ensure that the entire recovery image package is copied before you continue, use this command:
<p>$ adb shell sync</p>
<p>When sync returns, all of the data has been copied to the device.</p>
<p><span style="color: #00ffbf;">PAIN POINT: I never got a ! icon following step 8 from the Support site. And without completing the steps below, the   installation is NOT complete.   Turn off your Phone:Press ‘Menu’ to go to Main Screen with Wallpaper.Keep the ‘Call end’ button pressed till you get the Phone options, and select Power Off option. Select OK to shut down.</span></li>
<li><span style="color: #00ffbf;">Hold the home key and power key to boot and enter the recovery mode. When the device enters recovery mode, it displays a &#8220;!&#8221; icon.</span></li>
<li>With the recovery console displayed, open the sliding keyboard and hold down the ALT+l key combination to enable log output in the recovery console and continue.</li>
<li>Next, hold down the ALT+s key combination to install the update. An &#8220;installing update&#8221; icon and progress bar are displayed<strong><span style="color: #00ffbf;"> </span></strong><span style="color: #00ffbf;">(keep holding the ALT+s combination) — when the progress bar completes, the installation is finished.</span></li>
<li>Press the HOME-BACK key combination to write the recovery image, update the firmware, and automatically reboot. Note that if you do not use HOME-BACK at this point, the device will not load the updated recovery image. After writing the recovery image, the device shows a &#8220;updating firmware&#8221; icon for a few seconds and then automatically reboots in normal mode.</li>
</ol>
<p>After the device reboots normally, the operation is complete.</p>
<p><strong>Flash the System Image to the Device</strong><br />
For the fastboot method only, after you&#8217;ve successfully updated the radio firmware, the next (and final) step is using the fastboot tool to flash the system image package to the device. Note that you should always update the radio image whenever you update the Android system image on your device. (If you are using the recovery-image method, you do not need to flash the system image package to the device &#8211; see Copy the Recovery Image Package to the Device instead.)</p>
<p>Follow the steps below to flash a system image package to your device:</p>
<ol>
<li>Boot the device in fastboot mode.<span style="color: #00ffbf;">PAIN POINT: Hold the Camera button and the power button at the same time when powering on, the phone will boot into Boot Loader Mode.Make sure the display on the phone changes from &#8220;Serial0&#8243; to &#8220;FASTBOOT&#8221;. If it doesn&#8217;t, try pressing the back button.</span><span style="color: #00ffbf;">The device is now in fastboot mode and is ready to receive fastboot commands. (I have had success doing this with usb plugged in the whole time, but others haven’t. If you have trouble, try it w/ usb unplugged until you see the skateboards screen.).</span>If you want to exit fastboot mode at this point, you can hold down the keys <span style="color: #00ffbf;">MENU+Call Start + Call End together</span>.<br />
Note that the bootloader screen may vary across devices.<br />
<span style="color: #00ffbf;">For Android Dev Phone devices, the bootloader screen shows an image of skateboarding robots.</span><strong><span style="color: #00ffbf;"> </span></strong>Other devices may show a different image or color pattern. In all cases, the bootloader screen shows the text &#8220;FASTBOOT&#8221; when in fastboot mode. The bootloader also shows the radio version.</li>
<li>Connect the device to your development machine over USB, if it isn&#8217;t currently connected.
<ul>
<li>USBClass_ff&amp;SubClass_42&amp;Prot_03</li>
<li>USBClass_ff&amp;SubClass_42</li>
<li>USBClass_ff</li>
</ul>
</li>
<p><span style="color: #00ffbf;">From your computer command line type &gt; fastboot devices.(Keep the emulator off, and the device should be indicated:<br />
List of devices attached<br />
HTXXXXXXXXXX device</span></p>
<p><span style="color: #00ffbf;">PAIN POINT: Device is not seen in fastboot mode.</span></p>
<p><span style="color: #00ffbf;">(NOTE: Check the USB device in Computer Manager when the phone IS IN fastboot mode. The computer sees the phone in fastboot mode as a different device than the phone in normal mode)</span></p>
<p>When the Device is in fastboot mode:</p>
<p><span style="color: #00ffbf;">If it asks you to install drivers,</span> then go ahead and use the same usb drivers that you used to get adb working. You can skip the rest of the instructions. Fastboot should be working for you now.<br />
<span style="color: #00ffbf;">If it doesn&#8217;t ask you to install a driver, you need to figure out if the correct driver is loaded already.</span><br />
Right click on My Computer, and click Manage, then go to the device manager</p>
<p>If you see an &#8220;ADB Interface&#8221; category at/near the top, with &#8220;HTC Dream&#8221; under it, then you&#8217;re good to go. Fastboot should be working for you.</p>
<p>In the device manager, go down to &#8220;Universal Serial Bus Controllers&#8221;, and see if you have at least one &#8220;USB Mass Storage device&#8221;. If you have multiple ones, you&#8217;ll need to go through each to find the correct one.</p>
<p>To find the correct one, right click on the USB Mass Storage device and click Properties. Go to the Details tab. In the combo box at the top that says &#8220;Device Instance Id&#8221;, bring up the pull down and choose &#8220;Compatible Ids&#8221;. If that is the correct device, then you will see 3 entries:</p>
<p>Once you find the correct device, go to the driver tab, and click &#8220;Update Driver&#8221;. Choose &#8220;No, not this time&#8221;, then &#8220;Install from a list or specific location&#8221;, then &#8220;Don&#8217;t search, I will choose the driver to install&#8221;, and then choose the same usb driver that you used to get adb to work (most probably located in the &lt;sdk&gt;/usb_drivers or its sub-folder)</p>
<p><span style="color: #00ffbf;">PAIN POINT: If you don&#8217;t see an &#8220;ADB Interface&#8221; category, then it&#8217;s likely that windows loaded the USB Mass Storage driver for it automatically OR If the ADB Interfaces category is seen, but ADB devices/fastboot devices command is not able to list the device.</span></p>
<p><span style="color: #00ffbf;">Unplug all your USB devices, and plug only the G1 device,</span></p>
<p><span style="color: #00ffbf;">Then Uninstall the</span></p>
<p><span style="color: #00ffbf;">ADB Interface-&gt;HTC Dream Composite ADB Interface (if present).</span></p>
<p><span style="color: #00ffbf;">USB Serial Bus Controllers-&gt;USB Composite Device</span></p>
<p><span style="color: #00ffbf;">USB Serial Bus Controllers -&gt;USB Mass Storage Device</span></p>
<p><span style="color: #00ffbf;">Now Use the USB cord to plug in the G1 Device to your computer, You will be prompted for drivers. Choose to “Install from a list or specific location&#8221;, then &#8220;Don&#8217;t search, I will choose the driver to install&#8221;, and then choose the same usb driver that you used to get adb to work (most probably located in the &lt;sdk&gt;/usb_drivers or its sub-folder). </span></p>
<p>After<strong> </strong>that&#8217;s done, you should be good to go. Open a command prompt and type fastboot devices and it should list the phone.</p>
<p>Note that, rather than using separate fastboot commands to erase the userdata and cache partitions, as described in the previous steps, you can simply supply the -w option when flashing the system image, which has the same result.</p>
<li> Next, use this fastboot command to flash the contents of the image package to the device:</li>
<li>$ fastboot update &lt;imagepackage&gt;.zip [-w]   With this command, fastboot copies all of the images in &lt;system-image-package&gt;.zip to the appropriate partitions on the device. During the process, it prints status messages to the command shell. Depending on your bootloader version, fastboot may also print status messages to the bootloader screen.When all image are copied to the device successfully, fastboot displays a success message.<span style="color: #00ffbf;">PAIN POINT: Even though I had completed a successful radio image update, and had the proper bootloader version 0.95.3000, I was not able to successfully update the System Image.</span><span style="color: #00ffbf;">Unzip the System image and extract these files to your &lt;sdk&gt;/tools and flash the boot.img, recovery.img and system.img individually:</span>
<pre>$fastboot flash boot boot.img
$fastboot flash recovery recovery.img
$fastboot flash system system.img</pre>
<p><span style="color: #00ffbf;">You may want erase the contents of the userdata partition, by using this fastboot command:</span></p>
<p><code>$ fastboot erase userdata</code></p>
<p><span style="color: #00ffbf;">This will remove all of the installed applications and their data, but it is a useful step when debugging because it ensures a clean execution environment for the application. Erasing the user data may also be necessary when you are flashing a lower (downgrade) platform version to your device. However, it is not strictly necessary to erase the userdata partition when upgrading to a higher (upgrade) platform version, which is the typical use-case in consumer devices.</span></p>
<p><span style="color: #00ffbf;">You may also want to erase the cache partition, using this fastboot command:</span></p>
<p><code>$ fastboot erase cache</code></li>
<li>Reboot the device. In most cases, fastboot should reboot the device automatically after copying the image files.<strong><span style="color: #00ffbf;"> </span></strong><span style="color: #00ffbf;"><br />
If necessary, you can reboot the device manually using these fastboot commands:<br />
</span><code>$ fastboot reboot </code>or<code> $ fastboot reboot-bootloader</code>You can also reboot from the device from the fastboot mode, by holding down the key combination <span style="color: #00ffbf;">MENU+Call Start + Call End.</span>For information about other fastboot commands, use<code>$ fastboot</code></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.androidkit.com/flashing-firmware-images-to-the-adp1-device/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Steps to Install and UnInstall .apk file on Android G1 Device</title>
		<link>http://www.androidkit.com/steps-to-install-and-uninstall-apk-file-on-android-g1-device</link>
		<comments>http://www.androidkit.com/steps-to-install-and-uninstall-apk-file-on-android-g1-device#comments</comments>
		<pubDate>Tue, 31 Mar 2009 11:48:04 +0000</pubDate>
		<dc:creator>Shesh</dc:creator>
				<category><![CDATA[Installation]]></category>

		<guid isPermaLink="false">http://www.androidkit.com/?p=41</guid>
		<description><![CDATA[<p><strong>Currently the following operating systems are supported:</strong></p>
<ul>
<li>Windows XP or Vista</li>
<li>Mac OS X 10.4.8 or later (x86 only)</li>
<li>Linux (Linux Ubuntu Dapper Drake)</li>
</ul>
<p><strong>The following sections are covered:</strong></p>
<ol>
<li>Installing the .apk file on a new G1</li></ol><p>&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p><strong>Currently the following operating systems are supported:</strong></p>
<ul>
<li>Windows XP or Vista</li>
<li>Mac OS X 10.4.8 or later (x86 only)</li>
<li>Linux (Linux Ubuntu Dapper Drake)</li>
</ul>
<p><strong>The following sections are covered:</strong></p>
<ol>
<li>Installing the .apk file on a new G1 device</li>
<li>Installing the .apk file on a device where section 1 has already been followed for steps 1 to 5</li>
<li>Uninstalling the .apk file from the G1 device before installing the same .apk again.</li>
<li>Uninstalling the .apk file (from the Device or Emulator) using adb shell .</li>
</ol>
<p><strong>Section 1: Installing the .apk file on a new G1 Device:</strong></p>
<ol>
<li>Installing The Android SDK on your computer.
<ul>
<li>First you will need to download the Android SDK pack .zip archive, once downloaded find a suitable installation location on your machine and extract the zipped files.</li>
<li>Please note: This installation location will be referred to as $ANDROID_SDK_PATH in the following sections.</li>
<li>Alternatively you can add /tools to your root path which will prevent the need to specify the full path to the tools directory along with enabling you to run Android Debug Bridge (adb) along with other command line tools.</li>
</ul>
</li>
<li>To add /tools to System PATH:<strong><br />
</strong><strong>Windows XP / Vista</strong></p>
<ul>
<li>Right click on the My Computer icon and select the properties tab.</li>
<li> Select the Advanced tab and click the Environment Variables button.</li>
<li> In the new dialog box double-click on Path (located under System Variables) and type in the full path location to the tools directory.</li>
</ul>
<p>Alternately, create a System Variable, called ANDROID_SDK_PATH and append %ANDROID_SDK_PATH%\tools to your System PATH variable.</p>
<p><strong>Linux</strong></p>
<ul>
<li> Edit the ~/.bash_profile or ~/.bashrc files looking for a line that sets the PATH variable.</li>
<li> Add the full path location to your $ANDROID_SDK_PATH/tools location for the PATH variable.</li>
<li> If no PATH line exists you can add the line by typing the following:</li>
<li> Export PATH=${PATH}:&lt;path to your $ANDROID_SDK_PATH /tools&gt;</li>
</ul>
<p><strong>Mac OS X</strong></p>
<ul>
<li> In the home directory locate the .bash_profile and locating the PATH variable add the location to your $ANDROID_SDK_PATH /tools folder.</li>
</ul>
</li>
<li>Connect the G1 device to the computer through the USB port. (If connecting for the first time, User is prompted to install the drivers in which case, point to $ANDROID_SDK_PATH/usb_driver, the drivers will get installed.)</li>
<li>You might have to change your settings to permit apps that don&#8217;t come from the Google Market by going to the G1 home screen and choosing MENU &gt; Settings &gt; Applications &gt; Unknown Sources.</li>
<li>Turn USB debugging ON on your phone, On your G1 go to the home screen, press MENU &gt; Settings &gt; Applications &gt; Development, then enable USB debugging.</li>
<li>From Command line on your computer enter<br />
‘adb install &lt;APK_FILE_PATH&gt;&lt;APK_FILE&gt;’<br />
(e.g. adb install C:/AndroidApps/NightStand.apk)</li>
<li>Check the MENU from the home screen on the G1 for the installed applications icon.</li>
</ol>
<p><strong>Section 2: Installing the .apk file on a device where section 1 has already been followed for steps 1 to 5</strong></p>
<ul></ul>
<ol>
<li>Follow steps 6 and 7 of Section 1.</li>
</ol>
<ul></ul>
<p><strong>Section 3: Uninstalling the .apk file from the G1 device before installing the same .apk again.</strong></p>
<ol>
<li>In the G1 Phone, Go to Applications Menu -&gt;Settings-&gt;Manage Applications.</li>
<li>Select the application which you want to Uninistall, and click on the ‘Uninstall’ button.</li>
<li>Follow steps 6 and 7 of Section 1.</li>
</ol>
<p><strong>Section 4: Uninstalling the .apk file (from the Device or Emulator) using adb shell.</strong></p>
<p><strong>There is an adb uninstall command which always shows Failure!!!</strong></p>
<p><strong>Using adb shell :</strong><br />
<strong>Important: </strong>The device has to be unplugged from USB if you are trying to uninstall from the emulator, else emulator should not be open and device needs to be plugged in the USB of the PC if you are trying to uninstall from the G1 Device. If either of them are not connected the adb shell command will not work</p>
<p>Go to the shell and making sure adb is in PATH:</p>
<p>Go to shell (from cmd-&gt;adb shell or directly through a terminal)</p>
<p>#</p>
<p>#cd data<br />
#cd app<br />
#cd ls</p>
<p>You will get a list of installed application with the complete package name of the package containing the main activity. e.g com.company.product.apk</p>
<p>#rm com.company.product.apk</p>
<p>#cd ls</p>
<p>You will not find the application &#8211; you just removed it!.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.androidkit.com/steps-to-install-and-uninstall-apk-file-on-android-g1-device/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
	</channel>
</rss>

