Tuesday, April 21, 2009

Widgets on Android: Simple, powerful and beautifully formed

Today I have Google Joy and more specifically Android Joy. I was reading the Android Developers Blog and the latest article was on the topic of Widgets.

I reached the end of the article and set about creating my own Android home screen widget. It had to go off to Twitter, retrieve the latest status update for @flashy1980, a colleague and good friend, then display it on my home screen. In a period of time less than or equal to 20 minutes I was wondering around the office with a slightly inane grin on my face, showing off my first Android widget.

Some say I'm biased, and I am, I really am, but I love Android. I'm off to play some more with the Widgets API now. Source code for Google's example Widget that I based mine on is here

NB: you need version 1.5 of the Android SDK to create widgets and they only run on a device with a 1.5 firmware. I've installed the 5.0.2Hr3 firmware from the Sapphire-Port-Dream project. Many thanks to @Haykuro for all his firmware efforts.

Tuesday, April 14, 2009

The increasing complexity of mobile app stores, a developers view


Can manufacturers learn from the success of others, or do they always think they can do bigger and better? Apple innovated a beautifully simple end to end business model with a single piece of hardware running objective C apps. The genius of the iPhone app store is in its simplicity, 1 phone, 1 screen size, 1 feature set, 1 integrated way of purchasing and it was preinstalled on all devices from early on.

The second store to open up was the Android Market, it's based on the Apple model and is initially successful. It remains to be seen if this initially simple concept can stand up to the oncoming added complexity of new Android devices being launched with different hardware specs. Certainly Android developers will need to better consider screen resolution and whether a device has a 3D chip, a hardware keyboard, touchscreen or a trackball. It is all starting to get a little more complicated.

Then Blackberry joined the game. The Blackberry AppWorld is a trickier proposition for developers. There are 4 main different screen resolutions to worry about and the Storm of course is touchscreen while the other devices aren't, some have GPS some don't.

Nokia is now almost ready to go live with its offering. Looking at the Ovi store, it is a whole new level of complexity for the poor developer. For a start the uploads can be: Flash, Themes, Ringtones, WRT Widgets, Java apps or Symbian apps. Each of which work on some phones but not on others and for each type there are multiple screen resolutions, operating system varients, feature sets and signing requirements. On top of all of that the Ovi store isn't preinstalled on any devices yet, although the N97 is very likely to be the first.

From simple to complex in 4 steps. I hope no one else has an even more complicated model up their sleeves. What if Nokia had gone for an N97 only app store, pre-installed on all N97's from launch? A simple proposition that is easy to understand. Build up the base and then expand into a thriving environment on other devices. It remains to be seen if the Ovi store will attract the fanactical user base required to breathe life into it and motivate developers to get coding. Personally I think it will grow slowly and survive only due to being presintalled on a lot of high volume devices over the coming year, we shall see.

Monday, March 30, 2009

Android (G1) Market Model: Low-volume Low-cost?


I absolutely love developing for the Android platform, I've never felt this way about any other platform. But what if that just isn't enough; In a market where the 'Top 100 Most Popular Games' doesn't contain a single paid game, is there money to be made? Is the userbase sufficient and willing enough to support a developer? is the Market growing fast enough to contribute to ongoing revenues? Here are my frank and open findings based on 3 applications I've made available in the Market over the past 6 weeks:


Case 1 - Shoot the Ducks


Shoot the Ducks is a simple game that's quick to play and looks pretty good. First round is based on the classic 'Duck Hunt', then second round is target practise and then skeet shooting, etc... It took 12-24 hours to developer and I launched it into the Market at a discounted rate for the first 100 installs of £0.50, increasing to £0.79 after that.

Revenues after all fees
Day 1 - £32.94
Day 2 - £36.70
Day 3 - £28.65
Day 4 - £15.60
Day 5 - £6.05
...
Day 9 - £3.30
Day10 - £6.80
Total so far £144.99

Lesson 1
As expected there is an intial peak while the game is in the top 10 Most Recent games. What wasn't expected was an ongoing revenue stream of around £5.00 per day after the app had dropped down the charts. Slow and steady with Low-volume Low-cost. If this revenue keeps up as new Android devices are launched, takeup increases and paid Markets open in other countries, there is hope yet.

An optimistic model would show a developer with 10 games in the Market averaging £5 per day per app. Multiplying that up you have £50 per day, £1500 per month, £18250 per year. I appreciate that isn't up to the standards of some of the iPhone Appstore stories, but it is better than a kick in the nuts for a months work. Of course it still remains to be seen whether 'Shoot the Ducks' is still generating revenue outside of its first month.


Case 2 - Ultimate Stopwatch & Timer


This didn't take too long to build approx 8-12 hrs, but it was designed to be and is regarded as the best Stopwatch / Timer in the Market. I orginally launched it for £0.50. After 2 weeks there had been 12 installs and 8 uninstalls, uninstalling an Android Market application in the first 24 hours results in a full refund. So total revenue after fees was about £1.50.
Not entirly happy with this outcome I decided I may as well make the application free and see what happens. Well what happened next suprised me, the application had 1000+ installs a day for the next few days and is currently at 13031 installs of which 10623 are still installed.

Lesson 2
There were other, very plain stopwatchs in the Market. If there is an app in the store which provides similar functionality to yours for lower cost, then the current G1 userbase won't pay for a nicer UI. However there is a strong demand for free high quality applications, unsuprisingly. Also highlighted by the 37027 installs of another of my free apps, Newton's Cradle.


Case 3 - Latitude Enabler for Root


There is a long and drawn out story behind this application. Check some of my previous Latitiude posts for details. But to nutshell it, T-Mobile UK barred Google Latitude on the T-Mobile G1 in the UK. I discovered a way to reenable it, but the fix only worked if you had "rooted" your G1 (the G1 equivalent to jailbreaking an iPhone, and hilarious to anyone from Austrailia)

Lesson 3
It turns out that G1 owners are a bunch of hackers. There are a lot of 'rooted' G1 phones out there and these guys are more likely to be techies and will pay for useful apps like Wifi Sharing, tethering, VPNs, etc...

In conclusion...
The Android Market is turning around. Paid games are climbing up the charts and I reckon we'll see a paid game break into the top 100 Most Popular Games within the next month. G1 users were slightly spoiled by apps being releassed for free, as payments weren't available in the Market from launch. But users are quickly getting used to the fact that premium content comes at a premium price and are prepared to pay. Developers are settling on relatively low price points, although similar to those found on the iPhone, to try and drive their apps up the Most Popular listings, as that is where the holy grail of seeing 250,000+ installs resides. Top paid games are currently struggling to get 5,000 installs. I'm holding out a lot of hope for some key improvements being made to the Market over the coming months, not least of all a proper website for browsing the apps.

Until then I'll try to exploit the potential of the slow and steady low-volume low-cost model by creating and launching some more quality Android games.

Friday, March 20, 2009

Gadgetshow Flashmob


The Gadgetshow presenters have been testing their abilities to get flashmob's together using different tools. Jason was only allowed to use Twitter and Susie (subs'ed very ably by Gail Porter as Susie was ill, get well soon Susie) used Facebook.

On the day the twitter crowd won out by a large margin, I'm guessing around 150 in the twitter crowd compared to about 15 in the Facebook crowd.

A dance off ensued, all good fun, catch the show on Channel 5 on Monday 27th April at 8:00pm.

Monday, March 09, 2009

Re-enabling Latitude on your rooted UK T-Mobile G1

UPDATE: 10th March 2009 - I've released an application to do all this for you automatically now, it only works on ROOTED G1's and it is availabe in the Android Marketplace as 'Latitude Enabler for Root' and also on GoogleCode latitude_launcher.apk

--------------
Original Post:
--------------
This has all got out of hand now, I became so frustrated with the Latitude situation on my UK RC9 T-Mobile G1 that I resorted to underhand techniques to re enable latitude on it after it disappeared again.

Google Maps is checking for a value in the gservices table, it checks that "maps_enable_friend_finder" has a value of "1". If it is then it shows the Latitude options in the Maps menu.

I added this value into the table on my rooted RC9 G1 and Latitude reappeared. I'll knock up an App today or tomorrow which resets this value and launches Google Maps, so that latitude is always enabled. If you want to do it for yourself now and you're braver than some and happy with words like adb and sql then you need to:

1) Connect your Rooted G1 to your PC via USB and run 'adb shell' (or use the G1 Terminal App no the phone)
2) su
3) cd /data/data/com.android.providers.settings/databases
4) sqlite3 settings.db
5) .dump gservices (to see all your current settings and check if maps_enable_friend_finder already exists)
6) INSERT INTO "gservices" (name,value) VALUES('maps_enable_friend_finder','1');
7) .quit
8) exit

Now the Join Latitude button will be shown in Maps again, no need for a reboot.

If it doesn't appear make sure you have the values
<boolean name="FF_SHOWN" value="true" />
<boolean name="SHOW_MY_FRIENDS" value="true" />

in the file /data/data/com.google.android.apps.maps/shared_prefs/com.google.android.maps.MapsActivity.xml

hope it works and helps some of you out there. I'm off to write an app to do this automatically now.