Gyuri Grell

sharing my wisdom with the world




train tracks
Flickr photo by _fLeMmA_

It has been a long couple of months from before Thanksgiving straight through Christmas and New Years and I was very busy during those times. I didn't get a whole lot done on anything Android related, including working much on my first app to be published to the Android Market, titled Grandma Jong.

Now I'm back on track, and put in a lot of work over the last week or so into getting it ready for a beta test. I'll post here when it is ready, but in the meantime, here are a couple screenshots:

Main menu

Choose a level

Main gameplay

Completed the level

Barcamp DC photo by jgarberI'm really excited about attending the third local BarCamp in DC tomorrow! Yep, we're already on our third one here locally (not to mention all the others happening in the Baltimore-Washington D.C. area). I'm planning on co-presenting on Android development with Zvi Band. I'll be showing a simple graphical app with animation and touch screen input.

I'm also using this opportunity to launch the first in a series of articles on Android development, gradually improving this simple app into something useable in a real app involving animations and graphics. Stay tuned, I'll be posting the first article here sometime next week.

Google WaveI have 5 Google Wave invites available. First 5 comments below will receive the invites. Remember to include your email address!

 

[EDIT: All gone. I'll post again if I get any more.]

Android donutVersion 1.6 of the Android SDK has been released to developers. Though this isn't a major release, there are quite a few tasty updates that I'm looking forward to (both as a user and a developer).

For users, updates include:

  • Quick search box - The Android search mechanism has been redesigned to be able to search across multiple data sources including bookmarks, history, contacts, web, etc. It also is smart enough to bubble up the more commonly used results.
  • The camera, camcorder and gallery have been simplified and made quite a bit faster than before.
  • VPN support has been added.
    • L2TP/IPSEC pre-shared key based VPN
    • L2TP/IPsec certificate based VPN
    • L2TP only VPN
    • PPTP only VPN
  • A bettery usage indicator which shows you how much each of your running apps is consuming so that you can stop those that kill your battery.
  • Better accessibility support.
  • A much improved Android Market that addresses many of the concerns that users and developers had with the market. These changes also help discoverability and doesn't hide paid apps.

For developers:

  • An API to handle the expanded search framework used by then quick search box.
  • A new multi-lingual text to speech engine called Pico. It allows any Android application to "speak" a string of text with an accent that matches the language, and supports English (American & British), French, Italian, German and Spanish.
  • A new gestures API for creating and reusing gestures, and associating it with actions.
  • Extended support for varying screen resolutions and densities. This will become more important as WVGA and QVGA devices come to market.
  • Telephony support for CDMA
  • A newer version of OpenCore media engine with additional codec support and improved buffering.

 

I came across this interesting discussion yesterday regarding WVGA supporting coming in the Donut (1.6) version of Android OS. It looks like there will be a lot of work cut out for developers because we'll need to support Cupcake (1.5) which is standardized on HVGA, and Donut which will now start supporting not only various resolutions, but also various screen densities. As developers, we'll need to consider our layouts on various screens to make sure the look their best. Thankfully, there will be some built-in support for scaling layouts and images to ease the transition.

There is a blog post being written on the topic of different screen sizes, and we have gone through round after round of work on the underlying model of the platform and how to best explain the way this works, which is
reflected in the doc.

As a side note, Al Sutton of AndAppStore.com has prepared a build of the 1.6 SDK and eclipse plugin to help test out the features coming in the next revision. We'll need all the head start we can get to implement these new features. I've played around with this a bit, and like some of the new features coming to the eclipse plugin. I'll write more about these later.

AndroLib.com is a third-party website (not run by Google) that presents a nice display of all the apps available in the Android Market. They have been crunching some statistics about what kinds of apps are available and the number of downloads they have. One interesting bit of information is that at least 25% of the apps have less than 50 downloads! Goes to show that it isn't enough to just upload your app to a mobile market and expect millions of downloads; you really need to get the word out about what you're doing, what your apps are and why people should download yours.

Here are the slides for my introductory presentation on the Android platform and some useful links to Android related sites.

 


Books

Sample Code & Graphics

  • apps-for-android is a set of 10 simple projects from the Android team.
  • shelves is a larger application from a Google developer with examples of custom lists and animations.
  • astrid is a full-featured todo list application that has been published to the Android market.
  • Android GUI PSD is a Photoshop file for mocking up Android GUIs.
  • Android Snippets - code snippets for common actions
  • Web view of Android framework source

Tutorials

Forums

Blogs

SmartphonesIt's about time I started writing again, so I'll fill you in what I've been working on in my spare time over the last couple of months. Back in the day when I started iconoclast software, I developed several games for a touchscreen platform that was at the time found in airports, bars, etc. Ever since those were published, I've been dreaming of porting them to a mobile platform. At first I started out porting to .NET so I could get it on Windows Mobile PDAs at the time. Today, PDAs are pretty much gone, replaced by far better smart phones, and I've had to redirect my vision a bit. While working for IBM, I was unable to do any work in my spare time (due to contractual reasons), but now I'm free to do as I please. I feel like I missed the boat on the big rush to the iPhone platform once they allowed native apps, yet it still remains a more than viable platform. For now though, I've got my eyes on the Android platform, they new upstart that will most likely grow to be even bigger than the iPhone. I also chose to start with Android for a couple reasons:

  • It uses Java which is very close to C# which is what I use in my day to day development. 
  • It is really starting to grow and explode now (with at least 18 handsets expected by the end of the year), so I'm trying to get in on the ground floor.
  • Can do development on any platform I choose (Windows, Linux, Mac). I don't currently own a Mac, so I don't need to spend the money on it initially.

For the past month I've been reading up on Android from a bunch of blogs, and the ever helpful set of books from CommonsWare author Mark Murphy (the best $35 I've spent on a set of books). More recently, Motorola has made a huge bet on Android at is putting out a lot of resources for developers with their MOTODEV program. It is really great to see a company get behind a great product like Android and put out something of true value to the community. Starting in August, I really got into porting the first game and have been working hard on that ever since. I'm trying to have it ready in time to submit it to the Android Developer Challenge 2 by the end of the month. It'll be close, but hopefully I can pull it off. I'll be posting more about it on my business site, trickybits.com. trickybits as a company will focus on producing high quality applications for mobile platforms, starting with Android initially. From what I've heard, Android is sorely lacking high quality apps, and I definitely intend to help fill that gap.

I'm also working on an introductory presentation on Android, supposedly the first in the area. We'll be putting it on during our next iPhone/Android Developers meetup next Wednesday, Aug. 19th at 6pm. I'm really excited about doing this, as I haven't done a presentation like this in a long time. It should be a good introduction with everything one needs to start writing a simple application. I'll be posting slides and related links on Wednesday.

That's all for now, I'll be posting more interesting tidbits about what I learn about the platform. Feel free to contact me with any questions you may have.

I use Launchy, a great program launcher for Windows and Linux, that indexes your Start menu, icons on the desktop and lets you quickly and easily launch them. It's also smart about letting you type the least amount, and learns as you repeat the same shortcut over and over. I mapped the shortcut key to Windows+Space which is the most convenient for me.

Launchy screenshot

Recently I also installed Google Desktop to be able to search my computer and Outlook quickly and easily. It turns out that GD also maps the Windows+Space key which I never use -- I got used to Ctrl+Ctrl for the GD quick search window.

Google Desktop quick search

Although not as convenient as using the UI to change it, GD does allow some minor tweaking of the keyboard shortcuts via registry settings on Windows. I found the answer here, but I'll summarize:

  1. Exit Google Desktop by clicking the Desktop icon in your system tray and selecting Exit.
  2. Open your registry editor.
  3. In HKEY_CURRENT_USER\Software\Google\Google Desktop\Preferences, create a DWORD value named hot_key_flags.
  4. Double-click the value you've just created and enter the number that corresponds with your preference. Alternatively, you can entirely delete the hot_key_flags entry to enable all Desktop shortcuts.
    Value Meaning
    0 Disable all Desktop shortcuts
    1 Enable only Ctrl-Alt-G
    2 Enable only Windows-G
    3 Enable only Ctrl-Alt-G and Windows-G shortcuts
    4 Enable only Windows-Space
    5 Enable only Windows-Space and Ctrl-Alt-G
    6 Enable only Windows-Space and Windows-G
    7 Enable all Desktop shortcuts
  5. Close the registry editor.
  6. Restart Google Desktop to apply the new settings.