Pages

Ads 468x60px

Monday, November 30, 2009

Announcing the Winners of ADC 2

Back in May at Google I/O, we announced ADC 2 -- the second Android Developer Challenge -- to encourage the development of cool apps that delight mobile users. We received many interesting and high-quality applications -- everything from exciting arcade games to nifty productivity utilities. We also saw apps that took advantage of openness of Android to enhance system behavior at a deep level to provide users with a greater degree of customization and utility. We were particularly pleased to see submissions from many smaller and independent developers.

Over the last couple of months, tens of thousands of Android users around the world reviewed and scored these applications. There were many great apps and the scores were very close. Together with our official panel of judges, these users have spoken and selected our winners!

I am pleased to present the ADC 2 winners gallery, which includes not only the top winners overall and in each category, but also all of the applications that made it to the top 200. There are a lot of great applications in addition to the top winners.

Thanks to everyone who submitted applications or helped us judge the entrants. We encourage all developers to submit their applications to Android Market where their app can be downloaded and enjoyed by Android users around the world.

Friday, November 27, 2009

Future of QR Codes-Japan's Colour Code Technologies















TOKYO -Colour Code Technologies showcased their patent-pending QR code innovation at the Mobile Asia Congress in Hong Kong last week.

Their innovative Colour Construct Code (CCC) is capable of storing more than x100 the amount of data of more conventional barcodes by using pixellated colours. Through their technology, QR codes can be used to encode any type of digital data without requiring an internet connection to import information.

Chris Carey, Director at Colour Code, showed me some examples of the kind of content they are converting into QR codes. One of these was the latest single by Japanese rock group, The Tenka (see photo above). By scanning the QR code on the leaflet, the software installed on a mobile phone is capable of converting the data into a song almost instantaneously.

Another advantage is that the Colour Codes can be printed on paper and stickers with inkjet printers, so reducing distribution costs and extending mass market opportunities.

Colour Code is in talks with various Japanese government agencies to use their codes for public services, for example for storing and accessing patient records in hospitals.

QR codes are extremely common in Japan and part of daily life whether you are a visitor at the airport (used at passport control) or a shopper in retail stores (commonly used for promotions).

Colour Code Technologies is therefore well positioned in its home market to deliver the necessary data storage upgrade to QR codes to allow them to meet the data hungry needs of increasingly rich media.

Wednesday, November 25, 2009

iPhone experiences of the Japanese kind


TOKYO-23rd November 2009


Before making my trip to Tokyo, I dutifully researched whether my (unlocked) iPhone would work normally in the land of the rising sun. I read internet blogs, asked friends who lived in Japan and read various on- and off-line guides.

The result was a set of conflicting viewpoints: no, it wouldn’t work at all; yes, it might work if I had the 3G or 3GS model, but only for data (not voice); and maybe it would, but on no accounts would I be able to slot in a Japanese SIM card.

So, when I landed in Japan, I wasn’t sure exactly what to expect. I was, however, able to ascertain immediately what didn’t work. A SIM card I had bought earlier in Hong Kong (and had provided commendable service over there) did not work at all.

Fighting jetlag, I decided to make it over to the nearest cellphone operator shop I could find in Tokyo. Having listened the day earlier to Softbank CEO Masayoshi Son address the Mobile Asia Congress, my autopilot navigated me to the Softbank store.

Inside, my lack of Japanese immediately led to a total inability to conduct any meaningful conversation with the customer service clerk. But, she did call a number from her phone and she connected me to an English-speaking Japanese call centre clerk.

“We are not sure if your European iPhone will work in Japan” was the answer, followed by “If you buy our SIM card, we cannot guarantee it will work”. Not the confidence-inspiring answer I was expecting.

With already 1 million iPhone users in Japan according to Fortune magazine, it is perhaps surprising that the only Japanese cellphone operator to offer the iPhone isn’t sure about network’s SIM compatibility with foreign iPhones. But then again, I mulled as I observed sushi-shaped USB sticks in the neighbouring shop window, things are a little different in Japan.

Oh, and in case you were wondering, my iPhone worked just fine in Japan with my European SIM card –not the cheapest option, but better than paying €50 to rent a Japanese cellphone for 3 days.

Tuesday, November 24, 2009

ADC 2 Public Judging is now closed

Thanks to tens of thousands of Android users around the world who participated in the review of ADC 2 finalist applications, we have now collected sufficient scores to complete Round 2 of public judging.

We are reviewing the final results and will announce the top winners this coming Monday, November 30. Thanks to all who've participated in ADC 2 and good luck to all the finalists.

Wednesday, November 11, 2009

Integrating Application with Intents

Written in collaboration with Michael Burton, Mob.ly; Ivan Mitrovic, uLocate; and Josh Garnier, OpenTable.

OpenTable, uLocate, and Mob.ly worked together to create a great user experience on Android. We saw an opportunity to enable WHERE and GoodFood users to make reservations on OpenTable easily and seamlessly. This is a situation where everyone wins — OpenTable gets more traffic, WHERE and GoodFood gain functionality to make their applications stickier, and users benefit because they can make reservations with only a few taps of a finger. We were able to achieve this deep integration between our applications by using Android's Intent mechanism. Intents are perhaps one of Android's coolest, most unique, and under-appreciated features. Here's how we exploited them to compose a new user experience from parts each of us have.

Designing

One of the first steps is to design your Intent interface, or API. The main public Intent that OpenTable exposes is the RESERVE Intent, which lets you make a reservation at a specific restaurant and optionally specify the date, time, and party size.

Hereʼs an example of how to make a reservation using the RESERVE Intent:

startActivity(new Intent("com.opentable.action.RESERVE",
Uri.parse("reserve://opentable.com/2947?partySize=3")));

Our objective was to make it simple and clear to the developer using the Intent. So how did we decide what it would look like?

First, we needed an Action. We considered using Intent.ACTION_VIEW, but decided this didn't map well to making a reservation, so we made up a new action. Following the conventions of the Android platform (roughly <package-name>.action.<action-name>), we chose "com.opentable.action.RESERVE". Actions really are just strings, so it's important to namespace them. Not all applications will need to define their own actions. In fact, common actions such as Intent.ACTION_VIEW (aka "android.intent.action.VIEW") are often a better choice if youʼre not doing something unusual.

Next we needed to determine how data would be sent in our Intent. We decided to have the data encoded in a URI, although you might choose to receive your data as a collection of items in the Intent's data Bundle. We used a scheme of "reserve:" to be consistent with our action. We then put our domain authority and the restaurant ID into the URI path since it was required, and we shunted off all of the other, optional inputs to URI query parameters.

Exposing

Once we knew what we wanted the Intent to look like, we needed to register the Intent with the system so Android would know to start up the OpenTable application. This is done by inserting an Intent filter into the appropriate Activity declaration in AndroidManifest.xml:

<activity android:name=".activity.Splash" ... >
...
<intent-filter>
<action android:name="com.opentable.action.RESERVE"/>
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="reserve" android:host="opentable.com"/>
</intent-filter>
...
</activity>

In our case, we wanted users to see a brief OpenTable splash screen as we loaded up details about their restaurant selection, so we put the Intent Filter in the splash Activity definition. We set our category to be DEFAULT. This will ensure our application is launched without asking the user what application to use, as long as no other Activities also list themselves as default for this action.

Notice that things like the URI query parameter ("partySize" in our example) are not specified by the Intent filter. This is why documentation is key when defining your Intents, which weʼll talk about a bit later.

Processing

Now the only thing left to do was write the code to handle the intent.

    protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final Uri uri;
final int restaurantId;
try {
uri = getIntent().getData();
restaurantId = Integer.parseInt( uri.getPathSegments().get(0));
} catch(Exception e) {
// Restaurant ID is required
Log.e(e);
startActivity( FindTable.start(FindTablePublic.this));
finish();
return;
}
final String partySize = uri.getQueryParameter("partySize");
...
}

Although this is not quite all the code, you get the idea. The hardest part here was the error handling. OpenTable wanted to be able to gracefully handle erroneous Intents that might be sent by partner applications, so if we have any problem parsing the restaurant ID, we pass the user off to another Activity where they can find the restaurant manually. It's important to verify the input just as you would in a desktop or web application to protect against injection attacks that might harm your app or your users.

Calling and Handling Uncertainty with Grace

Actually invoking the target application from within the requester is quite straight-forward, but there are a few cases we need to handle. What if OpenTable isn't installed? What if WHERE or GoodFood doesn't know the restaurant ID?



Restaurant ID knownRestaurant ID unknown
User has OpenTableCall OpenTable IntentDon't show reserve button
User doesn't have OpenTableCall Market IntentDon't show reserve button

You'll probably wish to work with your partner to decide exactly what to do if the user doesn't have the target application installed. In this case, we decided we would take the user to Android Market to download OpenTable if s/he wished to do so.

    public void showReserveButton() {

// setup the Intent to call OpenTable
Uri reserveUri = Uri.parse(String.format( "reserve://opentable.com/%s?refId=5449",
opentableId));
Intent opentableIntent = new Intent("com.opentable.action.RESERVE", reserveUri);

// setup the Intent to deep link into Android Market
Uri marketUri = Uri.parse("market://search?q=pname:com.opentable");
Intent marketIntent = new Intent(Intent.ACTION_VIEW).setData(marketUri);

opentableButton.setVisibility(opentableId > 0 ? View.VISIBLE : View.GONE);
opentableButton.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
PackageManager pm = getPackageManager();
startActivity(pm.queryIntentActivities(opentableIntent, 0).size() == 0 ?
opentableIntent : marketIntent);
}
});
}

In the case where the ID for the restaurant is unavailable, whether because they don't take reservations or they aren't part of the OpenTable network, we simply hide the reserve button.



Publishing the Intent Specification

Now that all the technical work is done, how can you get other developers to use your Intent-based API besides 1:1 outreach? The answer is simple: publish documentation on your website. This makes it more likely that other applications will link to your functionality and also makes your application available to a wider community than you might otherwise reach.

If there's an application that you'd like to tap into that doesn't have any published information, try contacting the developer. It's often in their best interest to encourage third parties to use their APIs, and if they already have an API sitting around, it might be simple to get you the documentation for it.

Summary

It's really just this simple. Now when any of us is in a new city or just around the neighborhood its easy to check which place is the new hot spot and immediately grab an available table. Its great to not need to find a restaurant in one application, launch OpenTable to see if there's a table, find out there isn't, launch the first application again, and on and on. We hope you'll find this write-up useful as you develop your own public intents and that you'll consider sharing them with the greater Android community.

Monday, November 9, 2009

Google Acquires AdMob-what say you, mobile?



AdMob announced today in a mailing to its customers that it was being acquired by Google for $750m.



"After our deal closes, AdMob will work with Google to accelerate the pace of innovation in mobile and do an even better job for you. We believe this deal will benefit our developer and publisher partners by:

Building even more powerful technology and tools to monetize mobile traffic.

Increasing the effectiveness of display advertising on mobile devices by leveraging Google sales team, infrastructure and relationships.

Improving the already high level of service and support we deliver to our publishers."





said Omar Hamoui, from AdMob in his email earlier today.



But what does this mean for mobile advertising?



Google's logic for making the deal is to ramp up its position in mobile advertising, seeing that growth in this ad market is likely to be higher than in traditional Pc-based web. It also can be interpreted as a sign that its own AdSense product for mobile was not sufficient in itself to give Google the edge in this market.



Where Google can really innovate is in the area of location based advertising on mobile, by stepping in the gap being left wide open by all the big mobile ad networks (who have capability to deploy LBS ads but lack the commitment from other members of the mobile ecosystem). It is no secret that Google has the best generic mapping product in the market (which was also skilfully deployed on mobile).



By combining its current capabilities with its web know-how and AdMob's mobile ad network, Google is now in a great position to transform the market and can deploy quickly, thanks to its Android platform.





Thursday, November 5, 2009

ADC 2 Round 2 Voting Open

The results from ADC 2 Round 1 are now tabulated and verified. With the top 200 applications identified, it's time to begin the final round judging. Be sure to download the ADC 2 judging application, or update your existing application, and help us select the final winners!

For the final round, both users and a Google-selected panel of industry judges will provide votes to determine the final winners. Prizes will be distributed to the top 3 entrants in each of the 10 categories, and the top 3 overall entrants will receive additional prizes. Please see our reference page for full challenge information.

Your vote is critical! We will keep voting open until we have received sufficient votes for all of the applications. We encourage you to download the ADC 2 judging application and evaluate entrants for yourself.

Download Android Developer Challenge 2:

Monday, November 2, 2009

Bring Your Lab Coats

With the recent release of Android 2.0 and the growing number of available devices, we want to give developers a convenient way to test drive their apps on these new devices. We also want to make our Android advocates available to answer any questions you may have.

We are pleased to announce that we will host a series of all day Android developer labs over the next month in the following cities (dates in local time):

  • Mountain View, CA - Nov 9
  • New York, NY - Nov 16
  • London, UK - Nov 17
  • Tokyo, JP - Nov 18
  • Taipei, TW - Nov 20

Due to limited space, developers who have already published an application in Android Market will be given priority. You can request a spot on a first-come, first-serve basis by going to this page. We will send a follow-up email with venue information and other registration details to those who have secured a spot.

Thank you for your continued excitement in Android. We look forward to meeting many of you in the coming weeks!

Related Posts Plugin for WordPress, Blogger...