Archive for the ‘Android’ Category

Here it is. The Killer Feature from Google.

Thursday, April 28th, 2011

Today Google announced that Video and Voice “chat” is coming to Google Talk on Android. I just got an Acer Iconia Android tablet yesterday, and it already supports this.

Understand what this means – you’ll be able to call and video chat with other Android phones, tables, and anything that can run GMail & GTalk in the browser. No need for a phone carrier. All that you need is network connectivity, which could come in the form of ubiquitous wifi.

Sure other apps are doing something similar. There’s Skype, Qik, Fring, etc., but I already use Google for my phone. Because of that I already have GTalk – built-in. All my contacts are already there. I think only Google can make this ubiquitous. Google Talk is based on an open protocol, so anyone can implement an app that integrates with this service. You also have Google backing the connectivity.

Also remember that not too long ago, Google tied Google Voice to GTalk so you can make phone calls from your PC. Free calls at that. It’s all coming together now.

Google Android Market Licensing Service

Sunday, September 12th, 2010

I was enthused about the announcement of the Android Market Licensing Service.  This is a step in the right direction to fight rampant piracy. You can actually now use a pirated version as an opportunity to sell your app. If someone downloads a pirated version, you can use the licensing service to detect it and direct them to buy the paid version.

However, there are a couple of problems. First of all, the generic version of the licensing code has been crackedTim Bray responded to this with the comment that “100% piracy protection is never possible in any system that runs third-party code…” Quite true. Contrary to this Google blog entry, it’s usually easy to crack. All forms of licensing, unlocking, server-side validation, and tamper detection come down to some point in the code that essentially says:

if (!licensed) { rejectUser(); }

It’s relatively easy to find this “if”. The pirate just has to debug the code, run to the point of rejection, and work backwards. The cracker can change the value of “licensed” or change the “then” branch in the Dalvik code to branch to the point after the “if”. Server-side validation can be circumvented the same way – at some point it all comes back to your code. Once cracked, the pirate can post the .apk online and almost anyone can install it. All of your hard licensing work as a developer has been wasted.

This is the problem with any license check embedded in an app. Once the app has been cracked by one experienced person, it can be distributed to thousands of unexperienced users. We need something harder to crack and near-impossible to distribute. I think the solution lies in Android itself. Android needs to check if the app has been licensed when launching the app. If it hasn’t been, reject the user. Then the potential crack lies in the Android system code. Most people are not going to installed a cracked version of Android.

Sales Resistance: Free and Paid Apps

Sunday, September 12th, 2010

Any time you put an additional step in the sales process, you gain an opportunity to lose a customer. Such is the case with Free and Paid apps. It’s a common freemium pattern in the Google Android Market and Apple App Store.

You’re familiar with the pattern – there’s a Free version of the app that’s restricted and then there’s a Paid version that has all of the features. As a developer, the problem is that you have to maintain two versions of the same app. You have two app store listings. You have to track two sets of stats. It’s difficult if not impossible to track Free to Paid conversions. You can’t tell if your marketing tool (the Free version) is working.

As a customer, you may like the Free version, but find it confusing how to upgrade to the Paid version. Here’s  the typical scenario for the Android Market:

  1. George downloads the Free version of your app.
  2. George uses it for a while and likes it.
  3. You’ve put a “Buy Full/Paid” button somewhere in your app. George clicks it.
  4. George is taken to the Market app and is presented with the single-line app listing. This shows the price and rating. He doesn’t care – he knows what he wants already. He’s made his own rating in his mind. This is the first chance for George to leave the sales process.
  5. George clicks on the app. He sees the description of the app, screenshots, etc. He doesn’t care – he already knows what the app is all about. Second chance for George to leave.
  6. George clicks the “Buy” button.
  7. A list of security permissions is presented. George doesn’t care – he already agreed to them with the Free version. Chance 3 to leave.
  8. George accepts the permissions by clicking “Ok”.
  9. George is taken to Google Checkout. If George doesn’t have a credit card setup already, he must do so now. It’s a fairly cumbursome process. Chance 4 and 5 for George to leave.
  10. George clicks “Buy Now”.
  11. The download starts. George is returned to the app description with a button that says “Cancel Download”. Why? He just purchased it. Chance 6 for George to cancel.
  12. After the download is done, the buttons change to “Open” and “Uninstall”.  Uninstalling at this point grants an automatic refund. Chance 7 for George to leave.
  13. If George clicks “Open”, he’s taken to the Paid version. Good. That’s what we wanted.
  14. But wait…there’s more! George now has to hunt down the Free version of your app and uninstall it. He doesn’t need it anymore. Some users get confused at this point and end up uninstalling/refunding the Paid version on accident.

Whew! George should get a medal or something! This could be much simpler. You create one version of your app. It starts out in restricted/Free mode, but it’s unlockable. Then the scenario could be:

  1. George makes one free download.
  2. George likes it. He clicks “Buy Full”.
  3. George is allowed to pay via carrier billing (simplest) or checkout with any online payment provider he might have.
  4. Android Market allows your app to detect whether it has been unlocked, possibly via an enhancement to the licensing service.
  5. George is returned back to the same app which is now fully featured.

This could also happen incrementally, allowing George to unlock multiple features as he wants them. How ’bout it Google? In-app payments? Simplified payment process? Support for payment methods you already have?

Syrious Blasts! First Release

Saturday, September 4th, 2010

We have made our first release of Syrious Blasts!™, an addicting fast-paced puzzle game for Android devices. The Lite version is free and the Full version is on sale right now for $.99.

Go and grab yours before the price goes up!

AlphaMixr Renamed to Syrious Scramble

Saturday, September 4th, 2010

We have renamed our popular “AlphaMixr” game to Syrious Scramble™. This aligns with our new Syrious Games™ branding.

New name – same addicting game!

AlphaMixr 1.3.1 Released

Friday, July 2nd, 2010

Minor configuration update.

AlphaMixr 1.3.0 Released

Tuesday, June 15th, 2010

AlphaMixr 1.3.0 Full & Lite were released today. AlphaMixr Lite now contains 100 games instead of 20. The time bonus issue has been fixed in both versions.

Getting Nexus One Working with USB on Ubuntu

Saturday, January 9th, 2010

I received my Nexus One on Thursday. It is flat-out fast. I’m really liking it, even if it doesn’t have a physical keyboard like my G1.

I was pretty excited to load my latest development game on it. However I found that the Ubuntu USB settings that I had setup for the G1 didn’t work for the Nexus One, even though they’re both HTC phones. I had setup Linux (Ubuntu 8.04) for the G1 based on these instructions: http://developer.android.com/guide/developing/device.html. As of Jan 9 2010, this page does not have a USB vendor ID for the Nexus One/Google. The “0bb4″ vendor ID for HTC does not work. The Nexus One shows up as “?????????” in adb/Eclipse.

I did some serious Googling for a solution and found two hits with instructions, but they were both saying to use “0bb4″ for the USB vendor ID. That’s what I had and that doesn’t work. I then read an post that said Google updated the Windows SDK USB driver for Nexus One. I downloaded this to one of my Windows boxes and looked at the vendor ID in the .inf file – it is “18D1″ for Nexus One.

In short – follow these instructions:

  1. Follow the instructions at  http://developer.android.com/guide/developing/device.html
  2. Replace the vendor id of “0bb4″ with “18d1″ in /etc/udev/rules.d/51-android.rules. Or add another line that reads:
    SUBSYSTEM=="usb", SYSFS{idVendor}=="18d1", MODE="0666"
  3. Just restarting adb after this didn’t work for me. I had to reboot Ubuntu. That took me a while to figure out.

After the reboot I was up and running. Development cycle times are now much faster because installs are faster.

AlphaMixr Version 1.2.0 Released

Saturday, November 7th, 2009

The new features of this Text Twist-like scrambled word game include an improved dictionary and the ability to view Global High Score maps right on your phone!

If you have an Android phone – especially the new Verizon Droid – you should check out this game. It’s available on the Android Market in a Trial and Full version. More information is available at http://AlphaMixr.net.

AlphaMixr on Sale! Picked as #1 Game!

Thursday, July 23rd, 2009

AlphaMixr, my Android game for T-Mobile G1, et. al. is on sale for $.99 this weekend (through 7/26). You can beat the price – it’s less that a hamburger on the $1 menu at McDonald’s! Get it while it’s hot!

AlphaMixr was picked as the #1 G1 Game or App on this blog.

You can read the review for AlphaMixr at Android Tapp where it got 4 out of 5 droids.  You can also read AlphaMixr user reviews on Cyrket.

You can see screen shots and more information about AlphaMixr at its website: AlphaMixr.net.