London Calling

Map of the Week: London Calling
Why we like it: This map is a great way to promote a city and share its history. A brilliantly designed UI, that includes info windows with map cutouts. Additionally, it’s an elegant use of Styled Maps.

In honor of a big year for the city of London, the BBC Australia has created “London Calling” as a way to explore and celebrate London. For those of you who know your way around London, there’s a ‘drop-the-pin’ challenge, where users answer geography questions by placing a pin on the map in the right place. If you get stuck with particular questions, there’s also the option to reach out to the “London Calling” team.

For those that just want to explore London, the map is a great way to learn more about the city that has been getting a lot of attention in light of the Queen’s Jubilee and the upcoming 2012 Olympics. There’s even a chance to win prizes just by exploring the map!

From a design standpoint, this map is really great to look at. Two things about this map really stand out to us. Firstly, Styled Maps has been used to add a sepia effect that reflects the rich history of the city of London. Secondly, this is one of the first use cases where we’ve seen a custom info window that includes a cutout to reveal the highlighted feature below. A clever design choice that’s great to look at!

 

 

Access your home and work locations in Google Maps

With Google Maps, we’ve made it increasingly easy to save and re-find the places that matter to you. Last year, we introduced the My Places tab which organizes your saved Custom Maps, directions that you’ve previously looked up, and locations you’ve starred, checked-in and rated. Starting today, you’ll also be able to save your home and work locations in Google Maps when signed in with your Google account.

Imagine moving to a foreign country — this means a new city, a new neighborhood, and even a new apartment to call home. That was how I began my summer last year, moving from Boulder, Colorado to Tokyo, Japan. In a new country where blocks, not streets, are labeled and addresses use a different formatting system, finding home was a feat in and of itself. And that’s how the idea to save home and work locations in Google Maps was born.

By saving these locations that are common to you in My Places, you’ll be able to access these addresses by simply typing “home” or “work” when searching or getting directions in Google Maps. Using these keywords will create a drop-down suggestion with the address you’ve set so that you no longer have to type the full address into the search box.

By saving your home and work locations in My Places, you’ll also see special icons to easily identify these locations on the map.

To set your home and work locations, you’ll need to sign in with your Google Account. Once logged in, click the My Places tab in Google Maps and save your home and work locations. From the My Places panel, you can also edit or delete your saved locations by clicking the drop-down to the right of the home or work icons.

With home and work locations saved in Google Maps, we hope to help you navigate your way to these frequently visited places, regardless of where you may be.

Android Apps Over the 50MB Barrier

 

Android applications have historically been limited to a maximum size of 50MB. This works for most apps, and smaller is usually better — every megabyte you add makes it harder for your users to download and get started. However, some types of apps, like high-quality 3D interactive games, require more local resources.

So today, we’re expanding the Android app size limit to 4GB.

The size of your APK file will still be limited to 50MB to ensure secure on-device storage, but you can now attach expansion files to your APK.

  • Each app can have two expansion files, each one up to 2GB, in whatever format you choose.
  • Android Market will host the files to save you the hassle and cost of file serving.
  • Users will see the total size of your app and all of the downloads before they install/purchase.

On most newer devices, when users download your app from Android Market, the expansion files will be downloaded automatically, and the refund period won’t start until the expansion files are downloaded. On older devices, your app will download the expansion files the first time it runs, via a downloader library which we’ve provided below.

While you can use the two expansion files any way you wish, we recommend that one serve as the initial download and be rarely if ever updated; the second can be smaller and serve as a “patch carrier,” getting versioned with each major release.

Helpful Resources

In order to make expansion file downloading as easy as possible for developers, we’re providing sample code and libraries in the Android SDK Manager.

  • In the Google Market Licensing package, an updated License Verification Library (LVL). This minor update mostly adds the ability to obtain expansion file details from the licensing server.
  • From the Google Market APK Expansion package, the downloader service example. The library makes it relatively simple to implement a downloader service in your application that follows many of our best practices, including resuming downloads and displaying a progress notification.

Because many developers may not be used to working with one or two large files for all of their secondary content, the example code also includes support for using a Zip file as the secondary file. The Zip example implements a reasonable patching strategy that allows for the main expansion file to “patch” the APK and the patch file to “patch” both the APK and the main expansion file by searching for asset files in all three places, in the order patch->main->APK.

Expansion File Basics

Expansion files have a specific naming convention and are located in a specific place for each app. As expansion files are uploaded to the publisher site, they are assigned a version code based upon the version of the APK that they are associated with. The naming convention and location are as follows:

Location: /Android/obb//
Filename: [main|patch]...obb
Example: /sdcard/Android/obb/com.example.myapp/main.5.com.example.myapp.obb

Expansion files are stored in shared storage. Unlike APK files, they can be read by any application.

Downloading and Using the Expansion Files

When the primary activity for the app is created, it should check to make sure the expansion files are available. The downloader library provides helper functions (for example the “Helpers” class in the code below) to make this easy.

boolean expansionFilesDelivered() {
    // get filename where main == true and version == 3
    String fileName = Helpers.getExpansionAPKFileName(this, true, 3);
    // does the file exist with FILE_SIZE?
    if (!Helpers.doesFileExist(this, fileName, FILE_SIZE, false)) {
        return false;
    }
    return true;
}

If the file does not exist, fire up the downloader service with DownloaderClientMarshaller.startDownloadServiceIfRequired(). The downloader will perform an LVL check against the server. This check will deliver the names of the files, file sizes, and the file URLs.

Once that check has been completed, it will begin downloading the files. You don’t have to use our download solution, but you might want to because we:

  • Include a notification UI that provides progress and estimated completion time in layouts customized for ICS and pre-ICS devices
  • Resume large files safely
  • Handle redirection with appropriate limits
  • Run in the background as a service
  • Pause and resume downloads when WiFi is not available

Enjoy! We can’t wait to see what kinds of things developers do with this! For more information about how to use expansion files with your app, read the APK Expansion Files developer guide.