<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8201408602985348854</id><updated>2012-01-28T01:16:48.169-06:00</updated><title type='text'>Life with Android</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>40</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-3435568793241910506</id><published>2010-06-03T20:48:00.005-05:00</published><updated>2010-06-03T20:56:08.196-05:00</updated><title type='text'>Android C2DM</title><content type='html'>Google recently announced a new feature for Android called C2DM.  If you don't know what this feature is I suggest you watch the keynote from I/O day 2.  You can read more about what C2DM actually is &lt;a href="http://code.google.com/android/c2dm/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Developers were given a chance to sign up to trail this new feature.  Naturally I applied and this morning I received an email stating I had been accepted.  The email mentions the account will be ready in the next day or so.  Looks like I will need to wait until at least the weekend to play around with the feature.&lt;br /&gt;&lt;br /&gt;Below is a copy of the email I received for my invite.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Thank you for your interest in Android C2DM. We've accepted your&lt;br /&gt;application for the trial. We added the role account you requested to our&lt;br /&gt;list, and you can start using it to send messages to Android 2.2 devices&lt;br /&gt;in the next day or so.&lt;br /&gt;&lt;br /&gt;For more information, you can read our documentation and sample code at&lt;br /&gt;http://code.google.com/android/c2dm/.&lt;br /&gt;&lt;br /&gt;If you have questions or feedback, please visit the group at&lt;br /&gt;http://groups.google.com/group/android-c2dm&lt;br /&gt;&lt;br /&gt;If you want to change the role account used for sending messages you can&lt;br /&gt;reply to this email.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;AC2DM Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-3435568793241910506?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/3435568793241910506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=3435568793241910506' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/3435568793241910506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/3435568793241910506'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2010/06/android-c2dm.html' title='Android C2DM'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-4046540423761492245</id><published>2010-05-21T19:30:00.006-05:00</published><updated>2010-05-22T09:57:04.433-05:00</updated><title type='text'>Android 2.2 aka Froyo</title><content type='html'>For any developers who have been living under a rock for the past couple of days you may not know that Google have released the &lt;a href="http://developer.android.com/intl/fr/sdk/android-2.2.html"&gt;Froyo sdk&lt;/a&gt;.  &lt;br /&gt;&lt;br /&gt;Go and download it, plus make sure you check out all the exciting new features.  Froyo is know as API level 8.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-4046540423761492245?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/4046540423761492245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=4046540423761492245' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/4046540423761492245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/4046540423761492245'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2010/05/android-22-aka-froyo.html' title='Android 2.2 aka Froyo'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-3186559395312833402</id><published>2010-05-10T19:54:00.009-05:00</published><updated>2010-05-10T20:16:57.534-05:00</updated><title type='text'>DigiFrame</title><content type='html'>Yesterday I released a new application to Android Market called DigiFrame.  DigiFrame is a simple application that streams Flickr photos directly to your Live Wallpaper (sorry pre 2.1 users).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_47eddakI50c/S-iv1e5zgRI/AAAAAAAAAHs/r7XwD54zajM/s1600/sunset.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 192px; height: 320px;" src="http://3.bp.blogspot.com/_47eddakI50c/S-iv1e5zgRI/AAAAAAAAAHs/r7XwD54zajM/s320/sunset.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5469815080804909330" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can view random images or even images related to a specific genre ie cars, sports, android etc...  This evening I added support for Flickr accounts so you can view your own public photos or even other people's photos.&lt;br /&gt;&lt;br /&gt;I'm not much of a photographer myself so I enjoy viewing the random results however viewing your photos can be quite satisfying.  As you can see, the random search can return some interesting results.&lt;br /&gt;&lt;br /&gt;The application is still in BETA so if you have any suggestions please contact me.  Like wise if you find any bugs definitely let me know so I can fix them.  One person reported they would like to skip photos so I added a doubletap feature to the settings screen.  If you don't like the current photo simply doubletap the screen and a new photo will be displayed.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_47eddakI50c/S-iv8WWRYkI/AAAAAAAAAH0/1pft4BDUOac/s1600/random.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 192px; height: 320px;" src="http://1.bp.blogspot.com/_47eddakI50c/S-iv8WWRYkI/AAAAAAAAAH0/1pft4BDUOac/s320/random.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5469815198767473218" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Support for other photo sites such as Picasa are coming soon.  Along with an updated feature set for the Settings screen.&lt;br /&gt;&lt;br /&gt;Finally I know the images don't scale to fit the entire screen.  This is an area I'm currently debating how to handle.  Personally I prefer the current letter box effect so I may add an option that allows you to choose the desired scaling method.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-3186559395312833402?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/3186559395312833402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=3186559395312833402' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/3186559395312833402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/3186559395312833402'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2010/05/digiframe.html' title='DigiFrame'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_47eddakI50c/S-iv1e5zgRI/AAAAAAAAAHs/r7XwD54zajM/s72-c/sunset.png' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-4094122542638387285</id><published>2010-05-01T09:36:00.006-05:00</published><updated>2010-05-01T14:42:24.805-05:00</updated><title type='text'>Android Market Spam</title><content type='html'>Anyone who uses Android Market is well aware of the people who release 20 versions of essentially the same product.  One example is releasing a sports application for each team in the competition instead of bundling them all together into one application.  These people relentlessly release updates effectively burying any other product in the "Just in" category.  I enjoy browsing "Just in" but damn I get finger scroll-itis when one of the offending parties releases ALL their products at once.&lt;br /&gt;&lt;br /&gt;Well it seems we have reached a new low of spam in Android Market.  One particular group have decided to spam market comments of other applications.  If you have used Android Market recently you will have no doubt seen these comments.  I have little faith Google will actually do anything but even if they do it is too late since the product is now in etched into the top 10.&lt;br /&gt;&lt;br /&gt;I firmly believe they should remove them from the Market for a certain time frame, maybe a week.  Clear their ranking so they can work themselves up fairly like the rest of us.  But like any issue with Android Market the matter will have no official response.  Even a simple "We are working on fixing x, y, z" would be helpful but don't hold your breath.&lt;br /&gt;&lt;br /&gt;Now I am not one who usually rants since Android Market is a work in progress.  I can understand technical issues take time to fix but this type of spam needs to be dealt with a swift blow.  If not we'll see a whole slew of others following suit very soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-4094122542638387285?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/4094122542638387285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=4094122542638387285' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/4094122542638387285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/4094122542638387285'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2010/05/android-market-spam.html' title='Android Market Spam'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-7193403506627145196</id><published>2010-04-22T17:05:00.021-05:00</published><updated>2010-04-22T22:04:41.225-05:00</updated><title type='text'>Android: DDMS and filtering Logcat output</title><content type='html'>One of the most useful tools in any Android developers arsenal is &lt;a href="http://developer.android.com/intl/fr/guide/developing/debug-tasks.html"&gt;logcat&lt;/a&gt;.  Type "adb shell logcat" from the command line and you will be presented with a stream of messages.  This isn't particularly useful if you want to filter out all the noise and concentrate on your application logs.  However, it is useful for viewing what other applications are doing.  It can often be quite interesting to run applications and watch logcat.  When Google first released the ADC tool allowing Android users to vote on ADC II competition entries, there was plenty of interesting output to say the least.&lt;br /&gt;&lt;br /&gt;Google have provided an &lt;a href="http://developer.android.com/intl/fr/sdk/eclipse-adt.html"&gt;ADT plugin&lt;/a&gt; if you are developing for Eclipse (you may have installed this during the SDK installation). Once you have the ADT plugin installed, click in the top right corner on the plus icon near where it says "Java".   Select "other" and you will be presented with a list of options.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_47eddakI50c/S9EDz5bAITI/AAAAAAAAAGU/JL0Cc5d0Ok8/s1600/eclipse_ddms.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 166px;" src="http://3.bp.blogspot.com/_47eddakI50c/S9EDz5bAITI/AAAAAAAAAGU/JL0Cc5d0Ok8/s320/eclipse_ddms.png" alt="" id="BLOGGER_PHOTO_ID_5463152013099409714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Select "DDMS" from the list and you will have a new view available to  you.  You can move the panes around to suit your personal preference.  Below is a snapshot of my setup.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_47eddakI50c/S9EEAZYP78I/AAAAAAAAAGc/MXfynlRVmeI/s1600/eclipse_ddms_view.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 166px;" src="http://4.bp.blogspot.com/_47eddakI50c/S9EEAZYP78I/AAAAAAAAAGc/MXfynlRVmeI/s320/eclipse_ddms_view.png" alt="" id="BLOGGER_PHOTO_ID_5463152227836227522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can also launch this tool directly from the command line.  Type "ddms" from the command line and you will see the &lt;a href="http://developer.android.com/intl/fr/guide/developing/tools/ddms.html"&gt;DDMS&lt;/a&gt; tool start (providing you have setup Android correctly on your host machine).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_47eddakI50c/S9EEHwrTZAI/AAAAAAAAAGk/YinPOSmgBbg/s1600/cmd_ddms_view.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 149px;" src="http://2.bp.blogspot.com/_47eddakI50c/S9EEHwrTZAI/AAAAAAAAAGk/YinPOSmgBbg/s320/cmd_ddms_view.png" alt="" id="BLOGGER_PHOTO_ID_5463152354349245442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you would like a thorough understanding of how to use the tool I suggest you read the &lt;a href="http://developer.android.com/intl/fr/guide/developing/tools/ddms.html"&gt;DDMS documentation&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now we have DDMS running lets go back to our original purpose, filtering out the logcat noise.  In the logcat pane you will see a '+' icon.  Click on this to bring up the log filter.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_47eddakI50c/S9EGYNgUgUI/AAAAAAAAAG0/aYue0QWUDcM/s1600/dalvikvm_log_filter.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 199px;" src="http://4.bp.blogspot.com/_47eddakI50c/S9EGYNgUgUI/AAAAAAAAAG0/aYue0QWUDcM/s320/dalvikvm_log_filter.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5463154835988971842" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Give the filter a name and fill out the attributes you want to select from the logcat output.  In our example we are going to grab all the "dalvikvm" messages.  You will now have a new tab in the logcat view to select.  This tab will only display messages that meet your criteria.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_47eddakI50c/S9EHE7eySJI/AAAAAAAAAG8/R_2bfoy6eyU/s1600/filter_dalvikvm.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 165px;" src="http://1.bp.blogspot.com/_47eddakI50c/S9EHE7eySJI/AAAAAAAAAG8/R_2bfoy6eyU/s320/filter_dalvikvm.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5463155604244809874" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After playing around with the phone for a couple of minutes our dalvikvm tab now shows output.  If we cycle back to the main logcat tab we can see all the messages except anything that matches our selection criteria.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_47eddakI50c/S9EHaaBxVRI/AAAAAAAAAHE/LnpfUNSOIb4/s1600/filter_log.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 165px;" src="http://2.bp.blogspot.com/_47eddakI50c/S9EHaaBxVRI/AAAAAAAAAHE/LnpfUNSOIb4/s320/filter_log.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5463155973221864722" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;While developing, I will have logcat running in full screen on one of my monitors.  This allows me to keep an eye on what the system is doing.  Make sure before you release to clean up all your logcat output.  An easy solution to this is create a final boolean such as DEBUG_MODE that you can set to true/false before compiling.  We have all been guilty of releasing products that output something they shouldn't.  This simple feature goes a long way to cleaning that up.  Not to mention is makes live much easier by only have to change a single value before releasing your application into the wild.&lt;br /&gt;&lt;br /&gt;final static boolean DEBUG_MODE = false;&lt;br /&gt;&lt;br /&gt;if (DEBUG_MODE) Log.i(LOG_TAG,"Load level: " + mLevel);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Having a logcat filter setup for your application will not only stop your messages getting lost amongst the system output.  It will also allow you to quickly tell if you are producing any logcat output before releasing to market.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-7193403506627145196?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/7193403506627145196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=7193403506627145196' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/7193403506627145196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/7193403506627145196'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2010/04/android-ddms-and-formatting-logcat.html' title='Android: DDMS and filtering Logcat output'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_47eddakI50c/S9EDz5bAITI/AAAAAAAAAGU/JL0Cc5d0Ok8/s72-c/eclipse_ddms.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-5322445196410534273</id><published>2010-04-19T22:39:00.008-05:00</published><updated>2010-04-21T07:17:58.404-05:00</updated><title type='text'>Google Analytics for Android</title><content type='html'>Did you know &lt;a href="http://code.google.com/apis/analytics/docs/tracking/mobileAppsTracking.html"&gt;Google Analytics&lt;/a&gt; supports mobile?&lt;br /&gt;&lt;br /&gt;Didn't think so, most developers aren't aware this powerful tool even exists for mobile.  Here are the steps to implement the most basic feature of Google Analytics for Mobile.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1.&lt;/span&gt; Download the Google Analytics library for &lt;a href="http://code.google.com/apis/analytics/docs/tracking/mobileAppsTracking.html#versioning"&gt;Android&lt;/a&gt;.  Direct link to current version &lt;a href="http://dl.google.com/gaformobileapps/GoogleAnalyticsAndroid_0.7.zip"&gt;0.7&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2&lt;/span&gt;. &lt;a href="http://www.google.com/analytics/sign_up.html"&gt;Sign up&lt;/a&gt; for Google Analytics if you don't already have an account.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3.&lt;/span&gt; Create a new UA, also known as a &lt;a href="http://code.google.com/apis/analytics/docs/concepts/gaConceptsAccounts.html#webProperty"&gt;Web property ID&lt;/a&gt;.  Once you are signed into Google Analytics you will see a drop down list in the top right corner.  From the list, select "Create new account" and follow the steps provided.  Google documentation suggests "using a fake but descriptive   website URL (e.g. &lt;code&gt;http://mymobileapp.mywebsite.com&lt;/code&gt;)".  Whatever you choose is entirely up to you.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_47eddakI50c/S85rBeLDgdI/AAAAAAAAAGE/iwMzjdYlQWo/s1600/Analytics_Dashboard.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 142px;" src="http://1.bp.blogspot.com/_47eddakI50c/S85rBeLDgdI/AAAAAAAAAGE/iwMzjdYlQWo/s320/Analytics_Dashboard.png" alt="" id="BLOGGER_PHOTO_ID_5462421071070462418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4. Write down your UA.  This will be generated after you complete step 3.  If you forget to write it down you can view the UA by selecting the product from your analytics home screen.&lt;br /&gt;&lt;br /&gt;5.  Add the Google Analytics library to your Android project.  In Eclipse right click on your project (control + click for OSX) and select Properties.  Choose Java Build Path and then select the Libraries tab.  Then you will need to select the Add External JARs button and navigate to where you saved the library on your computer.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:85%;"&gt;Note: The exact steps may vary depending on OS and what version of Eclipse you are running.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_47eddakI50c/S85ragBfujI/AAAAAAAAAGM/vU_LI8czx7E/s1600/Eclipse_external_library.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 239px;" src="http://2.bp.blogspot.com/_47eddakI50c/S85ragBfujI/AAAAAAAAAGM/vU_LI8czx7E/s320/Eclipse_external_library.png" alt="" id="BLOGGER_PHOTO_ID_javascript:void(0)5462421501063969330" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;6. Add the following permissions to your AndroidManifest.xml file.&lt;br /&gt;android.permission.INTERNET &amp; android.permission.ACCESS_NETWORK_STATE&lt;br /&gt;&lt;br /&gt;7.  Here is the very basic logic of implementing analytics.&lt;br /&gt;&lt;br /&gt;Declare our Analytics object&lt;br /&gt;public GoogleAnalyticsTracker mAnalyticsTracker;&lt;br /&gt;&lt;br /&gt;Obtain tracker instance and start in manual mode, usually done in onCreate(Bundle savedInstanceState)&lt;br /&gt;mAnalyticsTracker = GoogleAnalyticsTracker.getInstance();&lt;br /&gt;mAnalyticsTracker.start("insert_UA", this);&lt;br /&gt;&lt;br /&gt;You can also start the tracker with a dispatch interval by specifying a seconds parameter.  The following code will dispatch request every 60s.&lt;br /&gt;mAnalyticsTracker.start("insert_UA", 60, this);&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Note: don't forget to substitute insert_UA with your actual UA account.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Google documentation suggests using trackPageView as the best way to track which areas of your application are being viewed by users.&lt;br /&gt;&lt;br /&gt;Say we want to track when the users view the help screen, we simply pass HelpScreen.&lt;br /&gt;mAnalyticsTracker.trackPageView("/HelpScreen");&lt;br /&gt;&lt;br /&gt;If we want to track when users viewed the highscore screen we would call&lt;br /&gt;mAnalyticsTracker.trackPageView("/HighscoreScreen");&lt;br /&gt;&lt;span class="pln"&gt;&lt;/span&gt;&lt;span class="pun"&gt;&lt;/span&gt;&lt;br /&gt;The string value passed to trackPageView is entirely up to you.  It makes sense to give them obvious names because when you view the Analytics dashboard you want to make it simple to understand.&lt;br /&gt;&lt;br /&gt;If you start the tracker in manual mode you will need to call dispatch() to fire off the tracking events.  This call is not required if you passed a time interval to the start call.&lt;br /&gt;mAnalyticsTracker.dispatch();&lt;br /&gt;&lt;br /&gt;Finally, remember to stop the tracker when you no longer need it's services.&lt;br /&gt;mAnalyticsTracker.stop();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Once you have gone through your application and implemented tracking  on the desired screens, kick back and relax while analytics does it magic.  From my experience the analytics dashboard is updated daily, if anyone has a definitive answer please let me know.  After a couple of days you will have clear indication of what areas of your application are most frequented visited.&lt;br /&gt;&lt;br /&gt;You may be in for a surprise as to what your users are actually doing.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The analytics download includes a sample Android project as well for you  to check out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-5322445196410534273?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/5322445196410534273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=5322445196410534273' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/5322445196410534273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/5322445196410534273'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2010/04/google-analytics-for-android.html' title='Google Analytics for Android'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_47eddakI50c/S85rBeLDgdI/AAAAAAAAAGE/iwMzjdYlQWo/s72-c/Analytics_Dashboard.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-2435238972223526307</id><published>2010-04-19T19:50:00.006-05:00</published><updated>2010-04-19T19:58:46.233-05:00</updated><title type='text'>Amazed 2 Free</title><content type='html'>Amazed 2 is now available in Android Market for free.  The free version is ad supported while the the non-ad version is still available for 99cents.&lt;br /&gt;&lt;br /&gt;Amazed 2 was originally released on 15th June.  The 99c version has done alright, although nothing spectacular.  If I had more spare time it would definitely be worthwhile implementing some updates I have written(untested though), but for now I am relegated to bug fixes.&lt;br /&gt;&lt;br /&gt;Hopefully the ad supported version can spur some life into the title and give me an opportunity to keep the game fresh.  I am using &lt;a href="http://www.mobclix.com/"&gt;Mobclix&lt;/a&gt; for my ad provider.  If they work out for me, I will write-up a follow up post on how to implement them in your own applications.  Likewise if they don't work out I will let you know why.&lt;br /&gt;&lt;br /&gt;If you have any feedback for Amazed 2 please get in contact.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-2435238972223526307?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/2435238972223526307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=2435238972223526307' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/2435238972223526307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/2435238972223526307'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2010/04/amazed-2-free.html' title='Amazed 2 Free'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-5314729645901460913</id><published>2010-04-17T16:48:00.006-05:00</published><updated>2010-04-17T17:07:12.310-05:00</updated><title type='text'>Device Seeding Program for Top Android Market Developers</title><content type='html'>Google have been kind enough to provide free Android devices to Android developers who meet their selection criteria.  The criteria being 3.5 star or higher rating and more than 5,000 unique downloads.  I received my email from Google on March 4th, with the actual device arriving on 24th which is great service for a free product.&lt;br /&gt;&lt;br /&gt;While most developers already have a device you can never have to many.  It is always useful to have a couple of devices running different OS versions as well as different screen resolutions.  The emulator will only get you so far, being able to test your application on a variety of devices is always the best option.&lt;br /&gt;&lt;br /&gt;I was lucky enough to receive a Nexus One (very glad because I already have a Droid).  Below are a few pictures from when my device arrived.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_47eddakI50c/S8oum_dPVtI/AAAAAAAAAFk/S39mgv4p9s8/s1600/nexus_one_a.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_47eddakI50c/S8oum_dPVtI/AAAAAAAAAFk/S39mgv4p9s8/s320/nexus_one_a.jpg" alt="" id="BLOGGER_PHOTO_ID_5461228745544128210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_47eddakI50c/S8outgdAzzI/AAAAAAAAAFs/AgCS7zj28wg/s1600/nexus_one_b.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_47eddakI50c/S8outgdAzzI/AAAAAAAAAFs/AgCS7zj28wg/s320/nexus_one_b.jpg" alt="" id="BLOGGER_PHOTO_ID_5461228857480761138" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_47eddakI50c/S8ouzC34oBI/AAAAAAAAAF0/pYyP6qs2WoA/s1600/nexus_one_c.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_47eddakI50c/S8ouzC34oBI/AAAAAAAAAF0/pYyP6qs2WoA/s320/nexus_one_c.jpg" alt="" id="BLOGGER_PHOTO_ID_5461228952619622418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_47eddakI50c/S8ou4FB5rjI/AAAAAAAAAF8/QvJEeQt5JeQ/s1600/nexus_one_d.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_47eddakI50c/S8ou4FB5rjI/AAAAAAAAAF8/QvJEeQt5JeQ/s320/nexus_one_d.jpg" alt="" id="BLOGGER_PHOTO_ID_5461229039097851442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is a great good will gesture by Google towards developers.  Thank you very much Google.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-5314729645901460913?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/5314729645901460913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=5314729645901460913' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/5314729645901460913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/5314729645901460913'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2010/04/device-seeding-program-for-top-android.html' title='Device Seeding Program for Top Android Market Developers'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_47eddakI50c/S8oum_dPVtI/AAAAAAAAAFk/S39mgv4p9s8/s72-c/nexus_one_a.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-7621915874340117740</id><published>2010-04-11T08:32:00.006-05:00</published><updated>2010-04-11T08:55:32.699-05:00</updated><title type='text'>Android Developer Day - Dallas</title><content type='html'>Yesterday I attended the Android Developer Day in Dallas.  While it was mainly geared towards people just starting out with Android it was great to meet some fellow Dallas Android developers.  Being new to the area I don't really know anyone so yesterday was very beneficial as a networking tool.  All the speakers were knowledgeable with the platform and very  friendly.  Overall it was a great day and I'm definitely looking forward to  future events.&lt;br /&gt;&lt;br /&gt;As a bonus we all got free Android t-shirts.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_47eddakI50c/S8HR4F-v2EI/AAAAAAAAAFc/qL28VjsGyxA/s1600/devdaydallas.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_47eddakI50c/S8HR4F-v2EI/AAAAAAAAAFc/qL28VjsGyxA/s320/devdaydallas.jpg" alt="" id="BLOGGER_PHOTO_ID_5458874984957990978" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Thanks to the following sponsors for making yesterdays event possible&lt;br /&gt;&lt;a href="http://cohabitat.us/"&gt;CoHabitat&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.athlete360.com/"&gt;athlete360&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.verizon.com/"&gt;Verizon&lt;/a&gt;&lt;br /&gt;&lt;a href="http://androidswag.com/"&gt;AndroidSwag&lt;/a&gt;&lt;br /&gt;&lt;a href="http://keyringapp.com/"&gt;Key Ring&lt;/a&gt;&lt;br /&gt;Challenge &lt;span style="font-size:85%;"&gt;(sorry don't have website)&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.teksystems.com/"&gt;TEK Systems&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;After speaking with a few people it is obvious I should blog more.  It  is actually harder than I thought to construct meaningful posts.  So for  the next few weeks I have set myself a goal of blogging more  frequently.&lt;br /&gt;&lt;br /&gt;We'll see how that pans out......&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-7621915874340117740?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/7621915874340117740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=7621915874340117740' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/7621915874340117740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/7621915874340117740'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2010/04/android-developer-day-dallas.html' title='Android Developer Day - Dallas'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_47eddakI50c/S8HR4F-v2EI/AAAAAAAAAFc/qL28VjsGyxA/s72-c/devdaydallas.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-2974934058319591889</id><published>2010-03-28T09:32:00.000-05:00</published><updated>2010-03-28T09:53:22.102-05:00</updated><title type='text'>Match.com</title><content type='html'>At the end of last year I changed jobs.  One of the complications with doing this is obtaining a new Visa so I can legally live and work in the United States.  After a holiday back home in Australia while waiting for USCIS to process the paperwork I was finally able to return to the United States at the beginning of February.&lt;br /&gt;&lt;br /&gt;Since my return I have been working on the new Android application at Match.com.  On Thursday 25th after roughly 2 months of development we launched the beta version to market.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_47eddakI50c/S69qXmvXH4I/AAAAAAAAAFM/slUBQDBnS9Q/s1600/market_01.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 214px; height: 320px;" src="http://3.bp.blogspot.com/_47eddakI50c/S69qXmvXH4I/AAAAAAAAAFM/slUBQDBnS9Q/s320/market_01.jpg" alt="" id="BLOGGER_PHOTO_ID_5453694627537690498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This has been a complete 180 from my previous employment working at Hands-On Mobile.  While I worked on some applications my primary focus was on game development.  After working on licensed titles such as Guitar Hero, World Poker Tour, Call of Duty, Hulk it is welcome change to work on something "you own".&lt;br /&gt;&lt;br /&gt;If we want to add a new feature, we can.  If we want to trial something, we can.  The turn around is much faster than having to ask a 3rd party for permission before doing something.  This allows development ("me") to spend more time working on real features instead of replacing minor elements to keep someone else happy.&lt;br /&gt;&lt;br /&gt;Don't get me wrong I loved working on games but after 5 years it is a welcome change to try something new.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_47eddakI50c/S69qd3v-8lI/AAAAAAAAAFU/Evyg2L0cVJY/s1600/market_02.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 214px; height: 320px;" src="http://3.bp.blogspot.com/_47eddakI50c/S69qd3v-8lI/AAAAAAAAAFU/Evyg2L0cVJY/s320/market_02.jpg" alt="" id="BLOGGER_PHOTO_ID_5453694735182918226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The official release of Match.com for Android is coming soon!&lt;br /&gt;&lt;br /&gt;Don't worry, we are not releasing this to market and forgetting about it.  We will continue to improve the application and add new features.  If you have any feedback about the application please get in  contact and I will see that your voice is heard.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-2974934058319591889?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/2974934058319591889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=2974934058319591889' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/2974934058319591889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/2974934058319591889'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2010/03/matchcom.html' title='Match.com'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_47eddakI50c/S69qXmvXH4I/AAAAAAAAAFM/slUBQDBnS9Q/s72-c/market_01.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-5419322985873291907</id><published>2010-03-23T20:19:00.000-05:00</published><updated>2010-03-23T21:11:24.471-05:00</updated><title type='text'>Android TextView and HTML</title><content type='html'>Recently I wanted to display a &lt;a href="http://developer.android.com/reference/android/widget/TextView.html"&gt;TextView&lt;/a&gt; with a clickable link.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_47eddakI50c/S6ls8t26mHI/AAAAAAAAAFE/TLrqKhPMaQs/s1600-h/ss_04.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 214px; height: 320px;" src="http://4.bp.blogspot.com/_47eddakI50c/S6ls8t26mHI/AAAAAAAAAFE/TLrqKhPMaQs/s320/ss_04.png" alt="" id="BLOGGER_PHOTO_ID_5452008614266574962" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Let's setup a simple &lt;a href="http://developer.android.com/reference/android/widget/TextView.html"&gt;TextView&lt;/a&gt; and add a link.&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;mTextSample = (TextView) findViewById(R.id.textSample);&lt;br /&gt;String text = "Visit my blog jtomlinson.blogspot.com";&lt;br /&gt;mTextSample.setText(text);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_47eddakI50c/S6lpM7_dU5I/AAAAAAAAAEU/eRBPLrD1L6c/s1600-h/ss_01.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 214px; height: 320px;" src="http://4.bp.blogspot.com/_47eddakI50c/S6lpM7_dU5I/AAAAAAAAAEU/eRBPLrD1L6c/s320/ss_01.png" alt="" id="BLOGGER_PHOTO_ID_5452004494891897746" border="0" /&gt;&lt;/a&gt;The result is pure text displayed on screen.  Android has no idea we want  to display a clickable link.&lt;br /&gt;&lt;br /&gt;This wasn't acceptable.  I wanted people to be able to launch the url directly by clicking on the link.  The next step was to use &lt;a href="http://developer.android.com/reference/android/text/util/Linkify.html"&gt;Linkify&lt;/a&gt;, a great feature for adding clickable links to text.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;mTextSample = (TextView) findViewById(R.id.textSample);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;String text = "Visit my blog jtomlinson.blogspot.com";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;mTextSample.setText(text);&lt;br /&gt;//jmt: pattern we want to match and turn into a clickable link&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;Pattern pattern = Pattern.compile("jtomlinson.blogspot.com");&lt;br /&gt;//jmt: prefix our pattern with http://&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;Linkify.addLinks(mTextSample, pattern, "http://");&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_47eddakI50c/S6lqeQsM37I/AAAAAAAAAEk/T0_VfqYB4l4/s1600-h/ss_02.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 214px; height: 320px;" src="http://1.bp.blogspot.com/_47eddakI50c/S6lqeQsM37I/AAAAAAAAAEk/T0_VfqYB4l4/s320/ss_02.png" alt="" id="BLOGGER_PHOTO_ID_5452005892017676210" border="0" /&gt;&lt;/a&gt;Now we are getting somewhere.  Our link is clickable and the user is taken directly to the url using the browser.  This is the most basic example of &lt;a href="http://developer.android.com/reference/android/text/util/Linkify.html"&gt;Linkify&lt;/a&gt;.  &lt;a href="http://developer.android.com/resources/articles/wikinotes-linkify.html"&gt;WikiNotes&lt;/a&gt; is an example from Google that discusses more detailed use of &lt;a href="http://developer.android.com/reference/android/text/util/Linkify.html"&gt;Linkify&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Our next step is to tidy up the view by removing the url and allow the user to click on "blog" to launch the browser.&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;mTextSample = (TextView) findViewById(R.id.textSample);&lt;br /&gt;String text ="Visit my &lt;a href="http://jtomlinson.blogspot.com/"&gt;blog&lt;/a&gt;"&lt;br /&gt;mTextSample.setText(text);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Note: blogspot has marked up my text string, you can see the actual string in the screen shot below.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_47eddakI50c/S6lrLqEE2QI/AAAAAAAAAEs/lOl9QNrKB9I/s1600-h/ss_03.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 214px; height: 320px;" src="http://2.bp.blogspot.com/_47eddakI50c/S6lrLqEE2QI/AAAAAAAAAEs/lOl9QNrKB9I/s320/ss_03.png" alt="" id="BLOGGER_PHOTO_ID_5452006671922813186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Again this doesn't quite work straight away.  We need to tweak our text slightly so Android understands we want to display HTML.&lt;br /&gt;&lt;br /&gt;All we need to do is update our setText method to include &lt;a href="http://developer.android.com/reference/android/text/Html.html#fromHtml%28java.lang.String%29"&gt;Html.fromHtml&lt;/a&gt;.  This method will style our text based on the HTML tags.  Not all tags are included so make sure you test first.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;//jmt: style our text based on html tags&lt;br /&gt;mTextSample.setText(Html.fromHtml(text));&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_47eddakI50c/S6lr8-Dm5yI/AAAAAAAAAE0/2w3uG3vQmO0/s1600-h/ss_04.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 214px; height: 320px;" src="http://1.bp.blogspot.com/_47eddakI50c/S6lr8-Dm5yI/AAAAAAAAAE0/2w3uG3vQmO0/s320/ss_04.png" alt="" id="BLOGGER_PHOTO_ID_5452007519103149858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Perfect, now we have our &lt;a href="http://developer.android.com/reference/android/widget/TextView.html"&gt;TextView&lt;/a&gt; looking exactly how we want it.    There is only one problem, if we try to click the link nothing happens.&lt;br /&gt;&lt;br /&gt;We have one last line of code to write.  This informs Android we have a link that we would like to open when selected.&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;mTextSample.setMovementMethod(LinkMovementMethod.getInstance());&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When clicked, the browser is launched and the user is taken to the specified url.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_47eddakI50c/S6lskod--II/AAAAAAAAAE8/03VjxOLBN3w/s1600-h/ss_05.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 214px; height: 320px;" src="http://4.bp.blogspot.com/_47eddakI50c/S6lskod--II/AAAAAAAAAE8/03VjxOLBN3w/s320/ss_05.png" alt="" id="BLOGGER_PHOTO_ID_5452008200502966402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here are the 4 lines of code required to display a clickable link&lt;br /&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;mTextSample = (TextView) findViewById(R.id.textSample);&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;mTextSample.setMovementMethod(LinkMovementMethod.getInstance());&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;String text = "Visit my &lt;a href="http://www.blogger.com/%27http://jtomlinson.blogspot.com%27"&gt;blog&lt;/a&gt;";&lt;br /&gt;mTextSample.setText(Html.fromHtml(text));&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-5419322985873291907?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/5419322985873291907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=5419322985873291907' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/5419322985873291907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/5419322985873291907'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2010/03/textview-and-html.html' title='Android TextView and HTML'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_47eddakI50c/S6ls8t26mHI/AAAAAAAAAFE/TLrqKhPMaQs/s72-c/ss_04.png' height='72' width='72'/><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-5388174715385080257</id><published>2010-03-23T19:18:00.000-05:00</published><updated>2010-03-23T19:26:59.554-05:00</updated><title type='text'>Blog is back</title><content type='html'>After some blogging absence due to unforeseen circumstances I'm back.  I am once again free to blog about my Android exploits.&lt;br /&gt;&lt;br /&gt;I even found time to re-release Amazed 2 with some scaling tweaks to account for the larger screen resolutions we are starting to see on devices.  Amazed 2 should have really done this from the beginning but I was lazy due to only having 320x480 devices available.&lt;br /&gt;&lt;br /&gt;I know I've said it before but I plan to post more frequently from now on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-5388174715385080257?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/5388174715385080257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=5388174715385080257' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/5388174715385080257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/5388174715385080257'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2010/03/blog-is-back.html' title='Blog is back'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-5344306980148730922</id><published>2009-08-04T13:45:00.000-05:00</published><updated>2009-08-04T13:51:43.930-05:00</updated><title type='text'>San Francisco Android User Group</title><content type='html'>On August 25th I will be in San Francisco to present at the&lt;a href="http://www.sfandroid.org/calendar/10879399/"&gt; local Android User Group&lt;/a&gt;.  The topic is "Learn what it takes to make a good Android app great - at our August meetup".  Over the weekend I started work on my presentation and drew up some random notes.  Much of the presentation will be focused around the small 1% items that many people over look.  Individually these items may not appear important but once you start to combine them they really add the finishing touches to your application.&lt;br /&gt;&lt;br /&gt;I will also be discussing social network integration, an area I have been working exclusively on recently (shakes first at Facebook for not having and official client like iPhone).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ps, yes I really need to post more.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-5344306980148730922?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/5344306980148730922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=5344306980148730922' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/5344306980148730922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/5344306980148730922'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2009/08/san-francisco-android-user-group.html' title='San Francisco Android User Group'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-4743658843354925041</id><published>2009-07-15T23:40:00.000-05:00</published><updated>2009-07-15T23:56:11.510-05:00</updated><title type='text'>10,000 and counting</title><content type='html'>This moring Amazed 2 Lite had its 10,000th download, taking a month to reach the milestone.  The application now resides in the 10,000 ~ 50,000 category and averages a few hundred downloads per day.  If only the paid version was doing these kinds of numbers.  Currently the paid version is just under the 500 download mark.  Nothing special but Android is still growing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-4743658843354925041?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/4743658843354925041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=4743658843354925041' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/4743658843354925041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/4743658843354925041'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2009/07/10000-and-counting.html' title='10,000 and counting'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-4377932208214747411</id><published>2009-07-13T21:40:00.000-05:00</published><updated>2009-07-13T22:44:29.662-05:00</updated><title type='text'>First Review</title><content type='html'>&lt;a href="http://www.androidtapp.com/"&gt;Android Tapp&lt;/a&gt; is the first website (that I know of) to &lt;a href="http://www.androidtapp.com/amazed-2/"&gt;review&lt;/a&gt; Amazed 2.  To be honest I was a bit nervous and wasn't sure what to expect.  To my surprise they seemed quite impressed with the game and gave it 4.1 out of 5.&lt;br /&gt;&lt;br /&gt;Thanks to the folks over at Android Tapp for taking the time to review the application :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-4377932208214747411?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/4377932208214747411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=4377932208214747411' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/4377932208214747411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/4377932208214747411'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2009/07/first-review.html' title='First Review'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-6890901762983137571</id><published>2009-06-26T13:03:00.000-05:00</published><updated>2009-06-26T13:16:40.663-05:00</updated><title type='text'>Kitten Cannon</title><content type='html'>Sure has been a busy couple of weeks, yesterday &lt;a href="http://www.handson.com/"&gt;we&lt;/a&gt; released &lt;a href="http://www.cyrket.com/package/com.handson.kittencannon"&gt;Kitten Cannon&lt;/a&gt; on Android for only 99cents.&lt;br /&gt;&lt;br /&gt;I have picked up a few new tricks lately which is to be expected when working with any new platform, especially UI look and feel.  Look out for more fun time wasters on the Android platform over the coming months.&lt;br /&gt;&lt;br /&gt;Here are a couple of in-game screenshots.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img200.imageshack.us/img200/8202/kc01.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 480px; height: 320px;" src="http://img200.imageshack.us/img200/8202/kc01.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img13.imageshack.us/img13/6335/kc02.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 480px; height: 320px;" src="http://img13.imageshack.us/img13/6335/kc02.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-6890901762983137571?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/6890901762983137571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=6890901762983137571' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/6890901762983137571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/6890901762983137571'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2009/06/kitten-cannon.html' title='Kitten Cannon'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-2969135273089880587</id><published>2009-06-23T20:26:00.000-05:00</published><updated>2009-06-23T20:33:30.515-05:00</updated><title type='text'>Amazed 2 Featured</title><content type='html'>Google have just added Amazed 2 as a &lt;a href="http://www.android.com/market/featured.html#app=amazed2"&gt;featured application&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The lite version is doing quite well with just over 4,000 downloads and an average of 4 stars.  I am logging all the high score data for the online leaderboard, after a couple of weeks I will be able to provide some interesting data on actual game usage.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-2969135273089880587?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/2969135273089880587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=2969135273089880587' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/2969135273089880587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/2969135273089880587'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2009/06/amazed-2-featured.html' title='Amazed 2 Featured'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-6402629156947531519</id><published>2009-06-16T00:05:00.000-05:00</published><updated>2009-06-16T00:14:28.721-05:00</updated><title type='text'>Amazed 2 Screenshots</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_47eddakI50c/SjcqHG5D9aI/AAAAAAAAAEI/R3e6OoPeank/s1600-h/level14.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 214px;" src="http://1.bp.blogspot.com/_47eddakI50c/SjcqHG5D9aI/AAAAAAAAAEI/R3e6OoPeank/s320/level14.png" alt="" id="BLOGGER_PHOTO_ID_5347789384123151778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_47eddakI50c/SjcqDbMGrvI/AAAAAAAAAEA/1G9AS1xBdu4/s1600-h/level15b.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 214px;" src="http://1.bp.blogspot.com/_47eddakI50c/SjcqDbMGrvI/AAAAAAAAAEA/1G9AS1xBdu4/s320/level15b.png" alt="" id="BLOGGER_PHOTO_ID_5347789320852254450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_47eddakI50c/Sjcp9skTY2I/AAAAAAAAAD4/ojMZ6mTpRhI/s1600-h/level16.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 214px;" src="http://3.bp.blogspot.com/_47eddakI50c/Sjcp9skTY2I/AAAAAAAAAD4/ojMZ6mTpRhI/s320/level16.png" alt="" id="BLOGGER_PHOTO_ID_5347789222437938018" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_47eddakI50c/Sjcp51bAnoI/AAAAAAAAADw/vkHbUAc6PCc/s1600-h/level18.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 214px;" src="http://1.bp.blogspot.com/_47eddakI50c/Sjcp51bAnoI/AAAAAAAAADw/vkHbUAc6PCc/s320/level18.png" alt="" id="BLOGGER_PHOTO_ID_5347789156095401602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_47eddakI50c/Sjcp1dW_0LI/AAAAAAAAADo/tMHNQT6M-v0/s1600-h/level22.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 214px;" src="http://2.bp.blogspot.com/_47eddakI50c/Sjcp1dW_0LI/AAAAAAAAADo/tMHNQT6M-v0/s320/level22.png" alt="" id="BLOGGER_PHOTO_ID_5347789080916644018" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-6402629156947531519?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/6402629156947531519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=6402629156947531519' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/6402629156947531519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/6402629156947531519'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2009/06/amazed-2-screenshots.html' title='Amazed 2 Screenshots'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_47eddakI50c/SjcqHG5D9aI/AAAAAAAAAEI/R3e6OoPeank/s72-c/level14.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-8069121989409261602</id><published>2009-06-15T00:52:00.000-05:00</published><updated>2009-06-15T00:54:14.249-05:00</updated><title type='text'>Amazed 2 Release</title><content type='html'>Finally Amazed 2 has been released.  What seemed like months of hibernation is now over and the full version is available on Android Market for $1.99.&lt;br /&gt;&lt;br /&gt;The lite edition which has 6 levels with both classic and blackout modes is available for free.  Screen shots will be posted tomorrow evening.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-8069121989409261602?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/8069121989409261602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=8069121989409261602' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/8069121989409261602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/8069121989409261602'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2009/06/amazed-2-release.html' title='Amazed 2 Release'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-6613752998731239583</id><published>2009-04-20T10:48:00.000-05:00</published><updated>2009-04-28T09:21:31.586-05:00</updated><title type='text'>Android SDK 1.5</title><content type='html'>In case you were unaware, Google have released a preview SDK for the upcoming 1.5 release (incorrectly referred too as cupcake, but that is another story).  Xavier Ducrohet posted about the release on the official &lt;a href="http://android-developers.blogspot.com/2009/04/getting-ready-for-android-15.html"&gt;Android blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;After a week using the SDK it looks very promising, one of the biggest inclusions is the onscreen keyboard.  The preview SDK doesn't have a sample project, I will attempt to put something together later in the week showing a simple example.&lt;br /&gt;&lt;br /&gt;edit: No need for me to write anything about the keyboard, the Android team have posted an article on the &lt;a href="http://android-developers.blogspot.com/2009/04/creating-input-method.html"&gt;official blog.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-6613752998731239583?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/6613752998731239583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=6613752998731239583' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/6613752998731239583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/6613752998731239583'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2009/04/android-sdk-15.html' title='Android SDK 1.5'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-7133510434881208774</id><published>2009-03-02T11:06:00.000-06:00</published><updated>2009-03-02T11:15:30.760-06:00</updated><title type='text'>I want to keep the screen ON</title><content type='html'>I have seen numerous methods describing how to keep the screen on, all using the &lt;a href="http://developer.android.com/reference/android/os/PowerManager.WakeLock.html"&gt;PowerManager.WakeLock API&lt;/a&gt;.  You don't want to access WakeLock too often because it will drain the battery, so why not take the easy approach and let Android do it for you.&lt;br /&gt;&lt;br /&gt;Simply call &lt;a href="http://developer.android.com/reference/android/view/View.html#setKeepScreenOn%28boolean%29"&gt;setKeepScreenOn(true)&lt;/a&gt; from your View class or any clas that inheriets from View.&lt;br /&gt;&lt;br /&gt;Yes I am serious, it is a single line of code to keep the back light on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-7133510434881208774?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/7133510434881208774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=7133510434881208774' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/7133510434881208774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/7133510434881208774'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2009/03/i-want-to-keep-screen-on.html' title='I want to keep the screen ON'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-8942233474361198162</id><published>2009-02-19T23:14:00.001-06:00</published><updated>2009-02-19T23:36:35.259-06:00</updated><title type='text'>Guitar Hero World Tour</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_47eddakI50c/SZ49o4X3Y6I/AAAAAAAAACY/In6VCZtiG_w/s1600-h/Axel_StarPower.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px; height: 300px;" src="http://3.bp.blogspot.com/_47eddakI50c/SZ49o4X3Y6I/AAAAAAAAACY/In6VCZtiG_w/s320/Axel_StarPower.jpg" alt="" id="BLOGGER_PHOTO_ID_5304745183625569186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Paid applications are finally available on Android.  Should be an interesting few weeks as more apps become available and users get a chance to setup Google Checkout accounts and start purchasing.&lt;br /&gt;&lt;br /&gt;I guess I can now finally talk about Guitar Hero World Tour.  I will be biased and recommend everyone take a look at it.    I believe this is the first real time multiplayer game available on Android.  This is another first for the platform, the other being "Amazed" the first accelerometer game available.&lt;br /&gt;&lt;br /&gt;To the right screenshot from version available on the market.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Below I have posted various mock-up's gathered from around the internet.    As you can tell none of these are close to the official version.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_47eddakI50c/SZ4-HZtKhkI/AAAAAAAAACo/y_LpZ0Niao8/s1600-h/sGuitarHero_Android.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 158px;" src="http://4.bp.blogspot.com/_47eddakI50c/SZ4-HZtKhkI/AAAAAAAAACo/y_LpZ0Niao8/s320/sGuitarHero_Android.jpg" alt="" id="BLOGGER_PHOTO_ID_5304745707969349186" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_47eddakI50c/SZ4-WaqUk4I/AAAAAAAAACw/YfFF5Rs_kW0/s1600-h/guitarhero.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 163px;" src="http://2.bp.blogspot.com/_47eddakI50c/SZ4-WaqUk4I/AAAAAAAAACw/YfFF5Rs_kW0/s320/guitarhero.jpg" alt="" id="BLOGGER_PHOTO_ID_5304745965923898242" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here is a mock-up on the HTC Magic,  I must say the phone itself looks great.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_47eddakI50c/SZ4-jWjSWsI/AAAAAAAAAC4/52sulshwshM/s1600-h/android-gh.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 207px;" src="http://4.bp.blogspot.com/_47eddakI50c/SZ4-jWjSWsI/AAAAAAAAAC4/52sulshwshM/s320/android-gh.jpg" alt="" id="BLOGGER_PHOTO_ID_5304746188158950082" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-8942233474361198162?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/8942233474361198162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=8942233474361198162' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/8942233474361198162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/8942233474361198162'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2009/02/guitar-hero-world-tour.html' title='Guitar Hero World Tour'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_47eddakI50c/SZ49o4X3Y6I/AAAAAAAAACY/In6VCZtiG_w/s72-c/Axel_StarPower.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-187959578189916715</id><published>2009-01-22T16:35:00.000-06:00</published><updated>2009-01-22T17:30:13.938-06:00</updated><title type='text'>Where is my sd card?</title><content type='html'>Today I was testing how to detect if the sd card was present or not.  The most obvious way to do this would be to create a &lt;a href="http://code.google.com/android/reference/java/io/File.html"&gt;File&lt;/a&gt; and point it to /sdcard.&lt;span style="font-weight: bold;font-size:85%;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;File mFile = new File(/sdcard/mydir);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Next you would check if the file &lt;a href="file:///Users/jtomlinson/android-sdk/current/docs/reference/java/io/File.html#exists%28%29"&gt;exists()&lt;/a&gt;, &lt;a href="file:///Users/jtomlinson/android-sdk/current/docs/reference/java/io/File.html#isDirectory%28%29"&gt;isDirectory()&lt;/a&gt;, &lt;a href="file:///Users/jtomlinson/android-sdk/current/docs/reference/java/io/File.html#canWrite%28%29"&gt;canWrite()&lt;/a&gt; etc... to see if you actually have permission to create and store your data.  However these methods will return true even if the sd card is not present.  It's not until you actually try to write some data that you will see errors.&lt;br /&gt;&lt;br /&gt;The trick to detecting the sd card correctly is to use &lt;a href="http://code.google.com/android/reference/android/os/Environment.html"&gt;android.os.Environment&lt;/a&gt; method &lt;a href="http://code.google.com/android/reference/android/os/Environment.html#getExternalStorageState%28%29"&gt;getExternalStorageState()&lt;/a&gt;.  This will return the current state of external storage, i.e. mounted, unmounted plus many other states.&lt;br /&gt;&lt;br /&gt;So to test if external storage is present we can use the following snippet &lt;span style="font-size:78%;"&gt;(sorry I have no idea how to format code on this blog)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;boolean canSaveExternal = false;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;String storageState = Environment.getExternalStorageState();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;if (&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Environment.MEDIA_MOUNTED.equals(&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;storageState&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;canSaveExternal&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; = true;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;else&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;canSaveExternal&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; = false;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I imagine in the future Android will have various external storage devices so &lt;a href="http://code.google.com/android/reference/android/os/Environment.html#getExternalStorageDirectory%28%29"&gt;getExternalStorageDirectory()&lt;/a&gt; will be useful to know where to save data.&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-187959578189916715?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/187959578189916715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=187959578189916715' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/187959578189916715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/187959578189916715'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2009/01/where-is-my-sd-card.html' title='Where is my sd card?'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-7091940138150770684</id><published>2009-01-12T20:36:00.000-06:00</published><updated>2010-03-23T21:08:35.092-05:00</updated><title type='text'>Amazed 2 BETA released</title><content type='html'>Today I released Amazed 2 BETA to a select group of people.  All of them were kind enough to contact me after playing Amazed saying how much they enjoyed the game.  It is only fitting that these people get to try out Amazed 2 first.&lt;br /&gt;&lt;br /&gt;The most positive new feature received thus far has been the option to resume your game from any level.  The graphics weren't hard to improve on so that has been another bonus.&lt;br /&gt;&lt;br /&gt;Looking forward to more positive and negative feedback.  A full demo of Amazed 2 will be hitting the market soon.  Meanwhile the original Amazed in all its glory is still being downloaded, roughly 125,000 people.  Not bad for something that was designed as a technical demo to show off the Accelerometer feature of the G1.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-7091940138150770684?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/7091940138150770684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=7091940138150770684' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/7091940138150770684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/7091940138150770684'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2009/01/amazed-2-beta-released.html' title='Amazed 2 BETA released'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-2504824400838095444</id><published>2009-01-09T00:24:00.000-06:00</published><updated>2009-03-02T11:20:31.628-06:00</updated><title type='text'>Designing levels is NOT easy.</title><content type='html'>Over the past few days I have been discovering how difficult it is to design levels.  Maybe I should rephrase that, designing GOOD levels is difficult.  I think I have spent more time trying to come up with unique fun levels than I have on coding.  It has been an experience to say the least.  If anyone has some tips or good reading on the subject please let me know.&lt;br /&gt;&lt;br /&gt;Hopefully I will have a demo version ready for next Monday.  It won't be feature complete as I still have a couple of items left on my list to finish off before releasing the full version.  Not to mention I need to finish designing all the levels and then order them via difficulty.  While Amazed was designed as a tech demo that got popular overnight, Amazed 2 has been designed to be a real game from the beginning.  I am looking forward to people's feedback once the demo is ready.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-2504824400838095444?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/2504824400838095444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=2504824400838095444' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/2504824400838095444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/2504824400838095444'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2009/01/designing-levels-is-not-easy.html' title='Designing levels is NOT easy.'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-3728933385599263497</id><published>2009-01-01T20:25:00.000-06:00</published><updated>2009-03-02T11:21:41.846-06:00</updated><title type='text'>Back to work</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_47eddakI50c/SV17jVWbvhI/AAAAAAAAACA/4KXxCTerm9o/s1600-h/g1_voda.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 214px; height: 320px;" src="http://4.bp.blogspot.com/_47eddakI50c/SV17jVWbvhI/AAAAAAAAACA/4KXxCTerm9o/s320/g1_voda.png" alt="" id="BLOGGER_PHOTO_ID_5286517384559705618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;After a month long holiday back home in Australia it is finally time to get back to work.  Being on holiday was great but it meant I could not spend as much time working on Android as I would have liked.  Glad to report the G1 had no issues operating in Australia.&lt;br /&gt;&lt;br /&gt;Yes its been awhile since the last update but with the Market taking off I'm sure you had plenty of other app's to keep you busy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-3728933385599263497?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/3728933385599263497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=3728933385599263497' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/3728933385599263497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/3728933385599263497'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2009/01/back-to-work.html' title='Back to work'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_47eddakI50c/SV17jVWbvhI/AAAAAAAAACA/4KXxCTerm9o/s72-c/g1_voda.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-3977063578197704359</id><published>2008-12-04T22:08:00.000-06:00</published><updated>2010-03-09T07:49:16.107-06:00</updated><title type='text'>Amazed Background</title><content type='html'>You may have noticed a new video has been posted on the Android Developer Blog about  &lt;a href="http://android-developers.blogspot.com/2008/12/behind-apps-amazed.html"&gt;Amazed&lt;/a&gt; .  The article was written awhile back when I first completed the project but it's about time I posted it.  After nearly 80,000 downloads, 3.5/5 average rating and over 60% of people still have the game installed I can say my expectations for the app have been blown out of the water.  What started out life as sample code for other developers has grown to the point where I am writing a sequel to feed the hungry general user.&lt;br /&gt;&lt;br /&gt;When I was younger I received a strange wooden box containing a labyrinth as a present.  The aim was to navigate a marble through the labyrinth by tilting it in various directions.  Needless to say I  was quickly addicted.  I wanted to build a similar style game using the Accelerometer provided by  Android.  Again the aim is to navigate the white marble through a maze to the exit.  The exit area is represented with light blue tiles.  If your marble falls off the paved path into the "void" you will loose a life.  The marble follows whatever direction the device is tilted, for example tilting  the device left will cause the marble to roll left.&lt;br /&gt;&lt;br /&gt;In its current state the game has 10 levels with progressive difficulty.  You will notice the marble can hover over the edge of the void, it won't fall off the paved path until half the marble is over the edge.  Pressing the back key will exit the application from any screen.  Only portrait mode is currently supported, in landscape mode a message is displayed asking you to rotate the screen  back to portrait mode.&lt;br /&gt;&lt;br /&gt;Amazed is available now as on open source project on &lt;a href="http://code.google.com/p/apps-for-android/"&gt;apps-for-android&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;AmazedAcitivity is a custom &lt;a href="http://code.google.com/android/reference/android/app/Activity.html"&gt;Activity&lt;/a&gt; which serves as the entry point into the application.  Upon starting, AmazedView is initialized, given focus and then displayed to the user.&lt;br /&gt;&lt;br /&gt;AmazedView is a custom &lt;a href="http://code.google.com/android/reference/android/view/View.html"&gt;View&lt;/a&gt; that implements its own &lt;a href="http://code.google.com/android/reference/android/view/View.html#onDraw%28android.graphics.Canvas%29"&gt;onDraw&lt;/a&gt; using &lt;a href="http://code.google.com/android/reference/android/graphics/Canvas.html"&gt;Canvas&lt;/a&gt; methods.  Gesture events are handled using &lt;a href="http://code.google.com/android/reference/android/view/View.html#onTouchEvent%28android.view.MotionEvent%29"&gt;onTouchEvent&lt;/a&gt; and &lt;a href="http://code.google.com/android/reference/android/view/View.html#onKeyDown%28int,%20android.view.KeyEvent%29"&gt;onKeyDown&lt;/a&gt; methods.  If the device orientation is changed, this event triggers &lt;a href="http://code.google.com/android/reference/android/view/View.html#onSizeChanged%28int,%20int,%20int,%20int%29"&gt;onSizeChanged&lt;/a&gt; which determines if we are in portrait or landscape mode.  A &lt;a href="http://code.google.com/android/reference/android/hardware/SensorManager.html"&gt;SensorManager&lt;/a&gt; is used to register a custom &lt;a href="http://code.google.com/android/reference/android/hardware/SensorListener.html"&gt;SensorListener&lt;/a&gt; named mSensorAccelerometer.  Registering a &lt;a href="http://code.google.com/android/reference/android/hardware/SensorListener.html"&gt;SensorListener&lt;/a&gt; signifies to the OS that the application would like to be informed when the sensor changes.  In this case Accelerometer values (represented by x,y and z) are reported whenever the device is moved.   Using these values we know which direction the marble should be rolling to coincide with the users movement of the device.  It is important to note you should always unregister listeners when you no longer require their service.&lt;br /&gt;&lt;br /&gt;The Marble class represents the marble drawn in the maze.  The x,y co-ordinate are tracked so we know where the marble should be drawn as well as other useful information such as the number of lives.  At the moment the marble is drawn using the &lt;a href="http://code.google.com/android/reference/android/graphics/Canvas.html"&gt;Canvas&lt;/a&gt; method &lt;a href="http://code.google.com/android/reference/android/graphics/Canvas.html#drawCircle%28float,%20float,%20float,%20android.graphics.Paint%29"&gt;drawCircle&lt;/a&gt;.  If you possess any form of graphical talent I would recommend creating a custom &lt;a href="http://code.google.com/android/reference/android/graphics/Bitmap.html"&gt;Bitmap&lt;/a&gt; for a more &lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 17px; border-collapse: collapse; white-space: pre; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;aesthetically&lt;/span&gt; pleasing result.&lt;br /&gt;&lt;br /&gt;The Maze class is used to load and draw each level as the user progresses through the game.  Level data is loaded via an &lt;a href="http://code.google.com/android/reference/java/io/InputStream.html"&gt;InpustStream&lt;/a&gt;, the actual level data can be found in the /assets directory.  Level data is loaded via the &lt;a href="http://code.google.com/android/reference/android/content/res/AssetManager.html"&gt;AssetManager&lt;/a&gt; &lt;a href="http://code.google.com/android/reference/android/content/res/AssetManager.html#open%28java.lang.String%29"&gt;open(String fileName)&lt;/a&gt;  method.  If you open up one of the level text files you will see list of numbers.  These numbers correspond to a tile type, currently the 3 tile types are PATH_TILE, VOID_TILE and EXIT_TILE.  When drawing the maze the application knows if the tile value is 0 then it should draw a PATH_TILE, if the value is 1 draw a VOID_TILE and if the value 2 draw an EXIT_TILE tile.  The comma's and whitespace in the level file are present so us humans can read the file without too much trouble.  You can actually alter the level data and create your own custom levels with out any code changes, provided you adhere to the MAZE_COLS and MAZE_ROWS attributes.  Both the path and exit tiles are custom &lt;a href="http://code.google.com/android/reference/android/graphics/Bitmap.html"&gt;Bitmaps&lt;/a&gt; drawn using &lt;a href="http://code.google.com/android/reference/android/graphics/Canvas.html#drawBitmap%28android.graphics.Bitmap,%20float,%20float,%20android.graphics.Paint%29"&gt;drawBitmap&lt;/a&gt; while the exit tile is a simple black square drawn using &lt;a href="http://code.google.com/android/reference/android/graphics/Canvas.html#drawRect%28android.graphics.Rect,%20android.graphics.Paint%29"&gt;drawRect&lt;/a&gt; after setting up a &lt;a href="http://code.google.com/android/reference/android/graphics/Rect.html"&gt;Rect&lt;/a&gt; with the correct parameters.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-3977063578197704359?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/3977063578197704359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=3977063578197704359' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/3977063578197704359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/3977063578197704359'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2008/12/amazed-background.html' title='Amazed Background'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-2597340381386470202</id><published>2008-11-26T22:23:00.000-06:00</published><updated>2010-03-23T21:06:47.947-05:00</updated><title type='text'>Amazed V2</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_47eddakI50c/SS3MeQFq5DI/AAAAAAAAAB4/Bi8Flcz-SkE/s1600-h/splash.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 214px; height: 320px;" src="http://3.bp.blogspot.com/_47eddakI50c/SS3MeQFq5DI/AAAAAAAAAB4/Bi8Flcz-SkE/s320/splash.png" alt="" id="BLOGGER_PHOTO_ID_5273095558807610418" border="0" /&gt;&lt;/a&gt;Been awhile since my last update but its worth it.  Here is the first screen shot of the sequel to Amazed.   As you can see it already looks much nicer and its only going to get better.  I have fixed the 2 most common complaints; backlight turning off and not being able to save your progress.  A few new goodies have been thrown in for good measure.  More screenshots to come once I finish designing the new levels.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-2597340381386470202?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/2597340381386470202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=2597340381386470202' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/2597340381386470202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/2597340381386470202'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2008/11/amazed-v2_26.html' title='Amazed V2'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_47eddakI50c/SS3MeQFq5DI/AAAAAAAAAB4/Bi8Flcz-SkE/s72-c/splash.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-7058122026221239097</id><published>2008-11-17T22:10:00.000-06:00</published><updated>2009-03-02T11:23:29.950-06:00</updated><title type='text'>Amazed: 50,000 downloads</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_47eddakI50c/SSGXeQbJl3I/AAAAAAAAABw/OKBf2KWOcVg/s1600-h/Amazed50k.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 214px; height: 320px;" src="http://2.bp.blogspot.com/_47eddakI50c/SSGXeQbJl3I/AAAAAAAAABw/OKBf2KWOcVg/s320/Amazed50k.png" alt="" id="BLOGGER_PHOTO_ID_5269659585060902770" border="0" /&gt;&lt;/a&gt;Due to work recently, I haven't done as much programming in my spare time as I would like too.   It's been awhile since I even checked how many times Amazed has been downloaded.  Well to my surprise this morning Amazed had reached the next tier 50,000 ~ 250,000 downloads.  So I logged into the Market back-end and the exact number is just shy of 54,000.  Not bad for a simple open sourced game that lacks decent graphics.&lt;br /&gt;&lt;br /&gt;For everyone who has been emailing me about an update.  Yes I am still working on an update.  Once I have some new graphics I will post a teaser screen shot.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-7058122026221239097?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/7058122026221239097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=7058122026221239097' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/7058122026221239097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/7058122026221239097'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2008/11/amazed-50000-downloads.html' title='Amazed: 50,000 downloads'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_47eddakI50c/SSGXeQbJl3I/AAAAAAAAABw/OKBf2KWOcVg/s72-c/Amazed50k.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-3868644507027956773</id><published>2008-11-13T03:18:00.000-06:00</published><updated>2009-03-02T11:22:26.655-06:00</updated><title type='text'>Nothing New</title><content type='html'>Unfortunately that thing you call a job has taken over all my spare time recently but at least it involves me using Android on a daily basis.  Due to work commitments I haven't been able to make any updates to any of my side projects.  Sometimes its good to take a week off, sit back and have a re-think. I've come up with some new ideas to implement into Amazed v2 (still thinking of name) as well as ideas for some other games.&lt;br /&gt;&lt;br /&gt;People are still downloading Amazed from the Market, thanks for all the emails.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-3868644507027956773?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/3868644507027956773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=3868644507027956773' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/3868644507027956773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/3868644507027956773'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2008/11/nothing-new.html' title='Nothing New'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-2007568463393987268</id><published>2008-11-06T23:50:00.000-06:00</published><updated>2009-03-02T11:25:31.118-06:00</updated><title type='text'>Poker League</title><content type='html'>Since arriving in America last year I have been learning all about &lt;a href="http://en.wikipedia.org/wiki/Texas_hold-em"&gt;Texas Hold 'em&lt;/a&gt;.  At work we have a league going where people play for points instead of money.  This keeps its fun as well as encouraging new people to have a go.&lt;br /&gt;&lt;br /&gt;The existing tracking system involved a wiki page and an excel spreadsheet.  I thought this would be a perfect project to play around with databases and native widgets in Android.  Until now most of my Android experience has been gaming related which revolves around drawing everything yourself.  It would be a welcomed change to use native widgets and xml to build an application.&lt;br /&gt;&lt;br /&gt;Creating a basic menu system was very easy.  Most of my time has been spent learning what attributes I can use in the xml files.  I will post some screen shots after I clean up the design, at the moment everything is black with white text.&lt;br /&gt;&lt;br /&gt;Once I have it fully working the next step will be to interface with a remote database so anyone can view the poker league results.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-2007568463393987268?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/2007568463393987268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=2007568463393987268' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/2007568463393987268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/2007568463393987268'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2008/11/poker-league.html' title='Poker League'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-7013882084471180897</id><published>2008-11-01T13:43:00.000-05:00</published><updated>2010-03-23T21:06:09.915-05:00</updated><title type='text'>Amazed V2</title><content type='html'>I've decided to bite the bullet and re-write my Accelerometer game from scratch.  I have received so many great suggestions it was getting difficult too merely "patch" Amazed.  So with a fresh new design built from the ground up and much needed improved graphics, Amazed V2 is born (working title name).&lt;br /&gt;&lt;br /&gt;I did have an update ready for release on the Market, however with the current Market bug (comments/info disappears) I decided against this and will release a sequel.  After writing the first Accelerometer game could we see the first official Android sequel?&lt;br /&gt;&lt;br /&gt;First version is planned for release in a couple of weeks, mid November.&lt;br /&gt;&lt;br /&gt;Here are some of the new features&lt;br /&gt;* Save/Resume&lt;br /&gt;* Larger maps&lt;br /&gt;* Top 5 Fastest times per level&lt;br /&gt;* Enemy characters&lt;br /&gt;&lt;br /&gt;I have more features planned but don't want to spoil the surprise too much.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-7013882084471180897?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/7013882084471180897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=7013882084471180897' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/7013882084471180897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/7013882084471180897'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2008/11/amazed-v2.html' title='Amazed V2'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-6383751981286936484</id><published>2008-10-30T19:30:00.000-05:00</published><updated>2009-03-02T11:25:56.957-06:00</updated><title type='text'>Market Back-end update</title><content type='html'>&lt;div class="editAppRow"&gt;&lt;div class="gwt-Label editAppHeaderNoCenter"&gt;&lt;div class="gwt-Label tableheader"&gt;We now have a new option for our market applications, "All Current and Future Locations".  This makes live easier by only having to tick one box.&lt;br /&gt;&lt;br /&gt;Publishing options&lt;/div&gt;Locations&lt;/div&gt;&lt;span class="editAppData"&gt;&lt;div class="listingForm"&gt;&lt;span class="gwt-CheckBox"&gt;&lt;input checked="checked" tabindex="0" id="gwt-uid-3" type="checkbox"&gt;&lt;label for="gwt-uid-3"&gt;All Current and Future Locations&lt;/label&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="gwt-CheckBox"&gt;&lt;input name="UNITED_STATES" tabindex="0" id="gwt-uid-4" type="checkbox"&gt;&lt;label for="gwt-uid-4"&gt;United States&lt;/label&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="gwt-CheckBox"&gt;&lt;input name="UNITED_KINGDOM" tabindex="0" id="gwt-uid-5" type="checkbox"&gt;&lt;label for="gwt-uid-5"&gt;United Kingdom&lt;/label&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The UK launch doesn't appear to be as successful as the US, at least in regards to news available.  All the early birds must already have their Android fix.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-6383751981286936484?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/6383751981286936484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=6383751981286936484' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/6383751981286936484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/6383751981286936484'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2008/10/market-back-end-update.html' title='Market Back-end update'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-4449001538916778219</id><published>2008-10-28T21:12:00.000-05:00</published><updated>2008-10-29T10:33:35.486-05:00</updated><title type='text'>UK Launch</title><content type='html'>If you have an app up on the Market you will have received an email informing you of the upcoming UK launch. If you want your app available to UK customers you need to log into the market back end and select the new check box that has appeared.  As more countries release Android phones I imagine you will have a seperate option for each country.&lt;br /&gt;&lt;br /&gt;&lt;div class="editAppTable"&gt;&lt;div class="gwt-Label tableheader"&gt;Publishing options&lt;/div&gt;&lt;div class="editAppRow"&gt;&lt;div class="gwt-Label editAppHeaderNoCenter"&gt;Locations&lt;/div&gt;&lt;span class="editAppData"&gt;&lt;span class="gwt-CheckBox"&gt;&lt;input checked="checked" name="UNITED_STATES" tabindex="0" id="gwt-uid-3" type="checkbox"&gt;&lt;label for="gwt-uid-3"&gt;United States&lt;/label&gt;&lt;/span&gt;&lt;span class="gwt-CheckBox"&gt;&lt;input checked="checked" name="UNITED_KINGDOM" tabindex="0" id="gwt-uid-4" type="checkbox"&gt;&lt;label for="gwt-uid-4"&gt;United Kingdom&lt;br /&gt;&lt;br /&gt;You will also need to select the check box that acknowledges you give permission to release your application outside of the United States.&lt;br /&gt;&lt;/label&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="gwt-CheckBox"&gt;&lt;input checked="checked" tabindex="0" id="gwt-uid-8" type="checkbox"&gt;&lt;label for="gwt-uid-8"&gt;I acknowledge that my software application may be subject to United States export laws, regardless of my location or nationality. I agree that I have complied with all such laws, including any requirements for software with encryption functions. I hereby certify that my application is authorized for export from the United States under these laws. &lt;a href="http://www.google.com/support/androidmarket/bin/answer.py?answer=113770" target="_blank"&gt;[Learn More]&lt;/a&gt;&lt;/label&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Here is a copy of the email for anyone who is interested.&lt;br /&gt;&lt;br /&gt;"Hello Android Developer,&lt;br /&gt;&lt;br /&gt;Congratulations on having your application on Android Market. We hope you&lt;br /&gt;have been receiving many downloads of your app and some good feedback as&lt;br /&gt;well. As announced by T-Mobile earlier this month, Android Market will&lt;br /&gt;also launch in the UK on October 30th at 7am GMT. So beginning Wednesday&lt;br /&gt;evening PDT, apps will be shown on the G1 devices in the UK. By default,&lt;br /&gt;any application currently in Market will be shown in both the US and the&lt;br /&gt;UK Markets.&lt;br /&gt;&lt;br /&gt;Please be sure to do the following between 8am PDT and 5pm PDT on&lt;br /&gt;Wednesday October 29th if you do not want your app in both the UK and the&lt;br /&gt;US Markets.&lt;br /&gt;&lt;br /&gt;Go to &lt;a href="http://market.android.com/publish" target="_blank"&gt;http://market.android.com/&lt;wbr&gt;publish&lt;/a&gt;, edit your application(s) and&lt;br /&gt;simply uncheck the box for the location you do not want your app to appear&lt;br /&gt;in.&lt;br /&gt;&lt;br /&gt;Please look at your EULA again and make sure that it will work for the UK.&lt;br /&gt;&lt;br /&gt;And again if you want your app to be in both the US and the UK Markets you&lt;br /&gt;do not need to do anything.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;&lt;br /&gt;The Android Market team"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-4449001538916778219?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/4449001538916778219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=4449001538916778219' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/4449001538916778219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/4449001538916778219'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2008/10/uk-launch.html' title='UK Launch'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-292098048104880209</id><published>2008-10-28T18:26:00.000-05:00</published><updated>2010-03-23T21:11:44.979-05:00</updated><title type='text'>Android Clipping</title><content type='html'>Today is a good day, I finally solved my simple clipping issue.  While the issue was simple I had been neglecting it for some unknown reason.  Well this afternoon I decided today was the day to face it.  Often for sprites you will have an animation strip containing multiple images, however you only want to display a single frame not the whole image.  Clipping allows you to specify a particular region on the screen to draw too, anything outside the region will not be shown to the user.&lt;br /&gt;&lt;br /&gt;I needed clipping to behave just like J2ME. In J2ME you can continually modify the clip as many times as you like.  The code below will draw 2 rectangles on a white background.&lt;br /&gt;&lt;br /&gt;public void paint (Graphics g) {&lt;br /&gt;    g.setClip(0, 0, canvasWidth, canvasHeight);&lt;br /&gt;    g.setColor(WHITE);&lt;br /&gt;    g.fillRect(0,0, canvasWidth, canvasHeight);&lt;br /&gt;&lt;br /&gt;    g.setClip(0, 0, 100, 100);&lt;br /&gt;    g.setColor(MAGENTA);&lt;br /&gt;    g.fillRect(0, 0, 100, 100);&lt;br /&gt;&lt;br /&gt;    g.setClip(100, 100, 50, 50);&lt;br /&gt;    g.setColor(GREEN);&lt;br /&gt;    g.fillRect(100, 100, 50, 50);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;My first attempt in Android many moons ago (actually over a year ago) involved me being naive and not fully reading the docs.  I was continually saving the current clip and restoring it everytime I wanted to modify the clip.  Here is some sample code.&lt;br /&gt;&lt;br /&gt;public void onDraw (Canvas canvas) {&lt;br /&gt;    //jmt: save our current clip&lt;br /&gt;    canvas.save(Canvas.CLIP_SAVE_FLAG);&lt;br /&gt;    //jmt: clear the screen&lt;br /&gt;    canvas.clipRect(0, 0, mCanvasWidth, mCanvasHeight);&lt;br /&gt;    mPaint.setColor(Color.WHITE);&lt;br /&gt;    mPaint.setStyle(Paint.Style.FILL);&lt;br /&gt;    canvas.drawRect(0, 0, mCanvasWidth, mCanvasHeight, mPaint);&lt;br /&gt;    //jmt restore clip to previous state&lt;br /&gt;    canvas.restore();&lt;br /&gt;&lt;br /&gt;    //jmt: save our current clip&lt;br /&gt;    canvas.save(Canvas.CLIP_SAVE_FLAG);&lt;br /&gt;    //jmt: draw our animation&lt;br /&gt;    canvas.clipRect(x, y, x + FRAME_WIDTH, y + FRAME_HEIGHT);&lt;br /&gt;    canvas.drawBitmap(mAnimation, x - (mCurretFrame * FRAME_WIDTH) , y, mPaint);&lt;br /&gt;    //jmt: restore clip to previous state&lt;br /&gt;    canvas.restore();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Needless to say on more complex games this would soon become an issue.  Fast forward to today where I knew there had to be a better method.  So I started reading the documentation and suprise suprise (well it wasn't really a surprise) I found a better way of handling clipping.  Let me introduce you to &lt;a href="http://code.google.com/android/reference/android/graphics/Region.Op.html"&gt;Region.OP&lt;/a&gt;, this marvel allows me to modify the clip in the same manner as J2ME and thus save a lot of work.  The previous code snippet now looks like this&lt;br /&gt;&lt;br /&gt;public void onDraw (Canvas canvas) {&lt;br /&gt;    //jmt: clear the screen&lt;br /&gt;    canvas.clipRect(0, 0, mCanvasWidth, mCanvasHeight, Region.Op.REPLACE);&lt;br /&gt;    mPaint.setColor(Color.WHITE);&lt;br /&gt;    mPaint.setStyle(Paint.Style.FILL);&lt;br /&gt;    canvas.drawRect(0, 0, mCanvasWidth, mCanvasHeight, mPaint);&lt;br /&gt;&lt;br /&gt;    canvas.clipRect(x, y, x + FRAME_WIDTH, y + FRAME_HEIGHT, Region.Op.REPLACE);&lt;br /&gt;    canvas.drawBitmap(mAnimation, x - (mCurretFrame * FRAME_WIDTH) , y, mPaint);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Now all my animations are displayed correctly and I have less code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-292098048104880209?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/292098048104880209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=292098048104880209' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/292098048104880209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/292098048104880209'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2008/10/clipping.html' title='Android Clipping'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-56442437109416418</id><published>2008-10-27T21:37:00.001-05:00</published><updated>2008-10-27T21:44:47.754-05:00</updated><title type='text'>Market Bug</title><content type='html'>I am sitting here in frustration.  I have a new build of "Amazed" to upload however the Market backend gives the following warning&lt;span style="font-weight: bold;"&gt; "Upgrading this application will cause its ratings and comments in Android Market to disappear temporarily. We are working on this issue and previous comments and ratings should reappear soon."&lt;/span&gt;  I really don't want all my comments and download numbers to disappear.  Looks like I will just have to wait until the Market is fixed.&lt;br /&gt;&lt;br /&gt;Changes from v2.0.1 -&gt; v2.0.2&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I fixed the level 2 crash bug, previously if you went straight down the screen the application would crash.  &lt;/li&gt;&lt;li&gt;The screen now stays on, I had set my screen timeout to 10minutes so I never experienced the pain of the screen going off half way through a level, oops. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Another new feature is random vibrations, provides quite the challenge when you are navigating through small pathways.&lt;/li&gt;&lt;li&gt;I played around with the speed characteristics like people suggested but the game jut doesn't feel the same.  Since the screen is so small it became very difficult to make the marble's acceleration and its current speed work well together.  I will look into it again another time.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-56442437109416418?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/56442437109416418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=56442437109416418' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/56442437109416418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/56442437109416418'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2008/10/market-bug.html' title='Market Bug'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-3025329992306256481</id><published>2008-10-27T10:03:00.000-05:00</published><updated>2008-10-28T21:18:16.387-05:00</updated><title type='text'>Run, Androidsss are coming........</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_47eddakI50c/SQXaSdymRfI/AAAAAAAAABA/7CBtkrqVxSI/s1600-h/miniandroid_g1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 240px; height: 320px;" src="http://3.bp.blogspot.com/_47eddakI50c/SQXaSdymRfI/AAAAAAAAABA/7CBtkrqVxSI/s320/miniandroid_g1.jpg" alt="" id="BLOGGER_PHOTO_ID_5261851750421644786" border="0" /&gt;&lt;/a&gt;Have you heard about the mini Android?  Apparently these critters have been spotted running around various locations trying to steal G1's, be on the look out!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_47eddakI50c/SQXY_YetYwI/AAAAAAAAAAo/QJ-sqyfU1FY/s1600-h/superandroid"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 240px; height: 320px;" src="http://2.bp.blogspot.com/_47eddakI50c/SQXY_YetYwI/AAAAAAAAAAo/QJ-sqyfU1FY/s320/superandroid" alt="" id="BLOGGER_PHOTO_ID_5261850323066905346" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As if mini-android's weren't enough, check out this giant version standing guard outside a Google building.  This green monster stands almost 2 stories tall watching over his faithful servants.   The phantom guardian appeared one day last week without any warning.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-3025329992306256481?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/3025329992306256481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=3025329992306256481' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/3025329992306256481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/3025329992306256481'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2008/10/run-androidsss-are-coming.html' title='Run, Androidsss are coming........'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_47eddakI50c/SQXaSdymRfI/AAAAAAAAABA/7CBtkrqVxSI/s72-c/miniandroid_g1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-5236198244784748278</id><published>2008-10-26T12:24:00.001-05:00</published><updated>2008-10-26T12:29:45.734-05:00</updated><title type='text'>48hrs &amp; 10,000 downloads later</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_47eddakI50c/SQSotP6JngI/AAAAAAAAAAg/bcIi94mHHBw/s1600-h/10k.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 214px; height: 320px;" src="http://4.bp.blogspot.com/_47eddakI50c/SQSotP6JngI/AAAAAAAAAAg/bcIi94mHHBw/s320/10k.png" alt="" id="BLOGGER_PHOTO_ID_5261515759993593346" border="0" /&gt;&lt;/a&gt;wow, G1 users love to download.  My first app has been up less than two days and it already hit 10k in downloads.&lt;br /&gt;&lt;br /&gt;Average rating is not too bad at 3.5/5.  Considering this is a simple demo to show off the accelerometer feature most people have been pretty understanding.  I will be working on some updates today and plan to release v2.1.0 on Wednesday.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-5236198244784748278?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/5236198244784748278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=5236198244784748278' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/5236198244784748278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/5236198244784748278'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2008/10/48hrs-10000-downloads-later.html' title='48hrs &amp; 10,000 downloads later'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_47eddakI50c/SQSotP6JngI/AAAAAAAAAAg/bcIi94mHHBw/s72-c/10k.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-4249534408069449643</id><published>2008-10-25T01:12:00.000-05:00</published><updated>2009-03-02T11:26:56.207-06:00</updated><title type='text'>Amazed: feedback</title><content type='html'>Firstly, thank you for all the feedback most of which has been positive.  I know the graphics are simple and people like to look at "nice" things but I write code for a living.  My graphical ability ends with drawing stick figures, I'm sure a 3yr old with a crayon could do a better job.&lt;br /&gt;&lt;br /&gt;Don't forget you can use the "Send email to developer" link to provide feedback.  I have read everything sent thus far and will be releasing an update next week.&lt;br /&gt;&lt;br /&gt;I apologize to the people who found the crash bug on level 2.  This was the first item I fixed, nice find!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-4249534408069449643?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/4249534408069449643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=4249534408069449643' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/4249534408069449643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/4249534408069449643'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2008/10/amazed-feedback.html' title='Amazed: feedback'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201408602985348854.post-3144209378996208514</id><published>2008-10-25T00:23:00.000-05:00</published><updated>2009-03-02T11:27:27.790-06:00</updated><title type='text'>First Day</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;Welcome to my first blog post, ever!  Yes I'm sure that's hard to believe in today's computer age but its true.  You have most likely been directed here through my open source game "Amazed", available on Android Market.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;I initially started out writing a simple tester app for the Accelerometer.  After realizing how much fun it was, Amazed was born later that afternoon.  Since then I have cleaned up the code and open sourced the game via the &lt;/span&gt;&lt;a style="font-family: arial;" href="http://code.google.com/p/apps-for-android/"&gt;apps-for-android&lt;/a&gt;&lt;span style="font-family:arial;"&gt; project.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;I hope to have plenty of interesting information (or random, you can decided for yourself) to post about but I would like to keep the first post short and sweet.......&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8201408602985348854-3144209378996208514?l=jtomlinson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jtomlinson.blogspot.com/feeds/3144209378996208514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8201408602985348854&amp;postID=3144209378996208514' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/3144209378996208514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201408602985348854/posts/default/3144209378996208514'/><link rel='alternate' type='text/html' href='http://jtomlinson.blogspot.com/2008/10/first-day.html' title='First Day'/><author><name>Jason Tomlinson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
