Amazon now offers electronic payments to E.U. based developers in select countries. If your bank’s location is not eligible for electronic payments,your payment will be made by check.
Using electronic funds transfer (EFT) gives you the benefit of having your payment sent to your bank through direct deposit, reducing the time it takes you to get paid. Plus electronic deposits paid in your home currency may help you avoid conversion fees that could be imposed by your bank.
To determine if you are eligible for electronic payments, sign into your Amazon Mobile App Distribution Portalaccount and select your bank’s location from the “Where is your bank/financial institution?” drop-down menu. Based on this selection, if electronic payment is available, you will be prompted to choose between an electronic payment or check.
You can see an example below:
If you do not wish to be paid by electronic payment, you may choose to be paid by check in the currency of the Amazon marketplace in which your apps are sold. Please note that you will receive a separate check for each marketplace in which your apps are sold. The following thresholds must be met before Amazon issues a payment:
· USD Direct Deposit: $10
· EUR Direct Deposit: €10
· GBP Direct Deposit: £10
· Check:$100, €100 or £100
For all Amazon sales – in U.S. or international marketplaces - we disburse payments on a monthly basis.
If you do not wish to be paid by electronic payment, you may choose to be paid by check in the currency of the Amazon marketplace in which your apps are sold. Please note that you will receive a separate check for each marketplace in which your apps are sold. The following thresholds must be met before Amazon issues a payment:
· USD Direct Deposit: $10
· EUR Direct Deposit: €10
· GBP Direct Deposit: £10
· Check:$100, €100 or £100
For all Amazon sales – in U.S. or international marketplaces - we disburse payments on a monthly basis.
With the release of the Kindle Fire HD family of tablets and the all-new Kindle Fire, you may wonder how to ensure your apps run well and look great on the new devices. The good news is that out of the box, many apps will work as expected. However, we know that developers are eager to give Amazon customers the best possible experience on Kindle Fire tablets, and there are several things we encourage you to think about. This post provides an introduction to how you can prepare your apps for the new Kindle Fire tablets.
For customers one obvious change is the improvement in screen resolution on the Kindle Fire HD family of tablets, which feature stunning 7" and 8.9" high definition displays. The 8.9” screen on Kindle Fire HD features an incredible254 pixels per inch, the highest resolution of any of our tablets. And Kindle Fire HD’s 7” screen has a stunning 1280 x 800 HD display that gives customers deep, detailed contrast and rich, natural color. Apps should support both the existing1024 x 600 pixel display as well as 1280 x 800 and 1920 x 1200 layouts. The Kindle Customer experience Guidelinesdocument offers a detailed overview of the new displays as well as features such as the soft key bar and gestures.
To ensure that customers have a great HD experience on Kindle Fire HD, we have established guidelines to identify the apps that are high-definition. We also encourage developers to review guidelines for marketing your apps as HD. If you believe your apps meet the requirements,please include the notation “please review for HD designation” in the Testing Instructions field when you submit your apps.
Kindle Fire HD includes a front-facing camera which influences the direction in which users choose to use the device. If your apps force landscape orientation, refer to our best practices for information on how to control the orientation for Kindle Fire HD.
Even before you acquire a new Kindle Fire HD tablet, you can preview the customer experience on Kindle Fire HD by downloading the Kindle Fire HD Emulator.
One of the biggest differences between Kindle Fire and the new devices is that the new devices use Android 4.0.3 (Ice Cream Sandwich). For developers, the support for Ice Cream Sandwich and API 15 brings a richer and more robust set of APIs. The Kindle Tablets Development Best Practices document details the new hardware and APIs you can take advantage of. As with any change of API level, it’s a good idea to run through basic regression testing either in the Kindle Fire HD Emulator or a physical device even if you don’t recompile your APK with the new API support. Some of the most common issues you may want to review are support for pause/resume from the Quick Settings bar and not optimizing for the Soft Key toolbar.
One capability you can use is hardware acceleration. By taking advantage of hardware acceleration for graphics, you can present your users with a more fluid experience and save battery life. Implement hardware acceleration by upgrading your tool-chain and application to support the Android 4.0.3 API 15libraries (rather than the Android 2.3.3 API 10 libraries that Kindle Fire used).
To activate hardware acceleration globally, add the following attribute to the <application> tag in the manifest:
<application android:hardware Accelerated="true" ...>
While in most cases this will be sufficient (depending on how your apps make use of the drawing surface) you may also need to test and control hardware acceleration at a more granular level (Activity, Window, or View).
While it is easy to support optional APIs and device capabilities within a single binary, you may decide to generate different binaries for the Kindle Fire and Kindle Fire HD. To handle that, we now support device targeting so you can continue to support existing devices while also taking full advantage of the newer platform.
Visit the Mobile App Distribution Portal to integrate the Amazon Mobile App SDK, to join the program, and to submit your apps. Plus, continue visiting our blog, where we’llbe offering more information on optimizing your apps for Kindle tablets.
Whether updating existing apps or submitting new apps to Amazon, this is a great time to refresh your consumer marketing. Review past blog posts for tips on writing an effective app description,submitting visual marketing assets,and adding promotional images.
Announcing the all-new Kindle Fire HD family of tablets,with stunning 7" and 8.9" high-definition displays, and the all-new Kindle Fire! The 8.9” screen on Kindle Fire HD features an incredible 254pixels per inch, the highest resolution of any of our tablets. And Kindle Fire HD’s 7” screen has a stunning 1280 x 800 HD display that gives customers deep,detailed contrast and rich, natural color in breathtaking high definition.
Kindle Fire is the #1 best-selling product across millions of items available on Amazon, and developing for Kindle Fire allows you to grow your business by engaging new customers and monetizing your app. Millions of Kindle Fire customers have already bought apps, and customers who buy Kindle tablets are pre-registered, so they can immediately begin downloading and playing apps.Because our 1-Click purchase experience is secure and easy to use, it increases conversion rates for your apps, thereby delivering a strong return on investment.
We’ve created resources below to help you build, optimize,test, and market your apps on the new Kindle tablets, and we encourage you to get started today!
Thank you for distributing your apps on Amazon. We’re excited to see the apps you build and optimize for our new Kindle tablets!
We are pleased to announce that you can now distribute your games and apps to Amazon customers in Europe. Check out the press release here.
Thanks to our community of app developers, Amazon's mobile app distribution has been very successful in the U.S., with millions of customers discovering and buying Android apps for their phones and tablets. Our international expansion – which includes the easy to install In-App Purchasing API, Free App of the Day, and trusted 1-Click purchasing – gives you a chance to enjoy similar success in the EU. Don’t miss this opportunity to grow your business.
All developers have the ability to select the countries where they would like their apps to be sold and set list prices by marketplace. We encourage all developers to localize their apps with language translation for different regions and to think of creative ways to deliver unique experiences to their international customers. By customizing your apps for different countries you can ensure customer shave an easier time discovering and using your apps, In-App Purchase items, and subscriptions. You can learn more about Android localization tips and resources and steps for localizing your app in the Distribution Portal right here on the blog, or learn more about international app distribution on the Mobile App Distribution Portal.
New to Amazon?
We’re waiving developer fees in 2012
It’s free to register for a developer account and it’s easy to download our SDK here.
Aaron Rubenson, Director, Amazon Appstore for Android,provided his perspective on delighting customers and monetizing mobile apps at the Seattle Casual Connect conference in July. Missed the conference? Check out a video of his presentation to game developers on the Casual Connect website or download the presentation from this link:
Download Making_Money_by_Delighting_Customers_Rubenson_Casual_Connect.
Topics include:
Jeremy Cath, Kindle Technical Evangelist, is our author for this post.
The Amazon GameCircle API gives players more ways to connect with your game and with each other using Achievements, Leaderboards, andcloud-to-device Sync. Achievements add an engaging way for players to track their progress in your game, Leaderboards let them see how they stack up against their peers, and Sync allows users to save progress to the cloud so they can resume their progress across their devices.
One issue we have seen developers encounter with GameCircle integration is the CANNOT_AUTHORIZE exception when they are initializing the AmazonGamesClient service. This message can occur even if developers have registered the signature for their application with the GameCircle whitelist.
If you encounter this error, there are a number of things worth checking:
1. Are you testing on Kindle Fire or on a Kindle Fire Emulator?
Amazon GameCircle features are only available on Kindle Fire and in the Kindle Fire emulator.
2. Is the device signed in with an Amazon account?
GameCircle uses the account that the device is signed in with to authenticate the player against the service. Most physical devices will be registered and signed in, but if you are using the emulator, by default it is not registered or signed in (you can do that from the Settings | My Account option)
3. Make sure the device has been updated to the latest version of the Fire OS.
It is important that you are running the latest version of the OS. To check this, go to the top menu, tap More, tap Device, click the Update your Kindle button if it is enabled.
4. Make sure you're using the latest version of the GameCircle API.
The current version is 1.2.1, but you can check if this has changed in the GameCircle API documentation.
5. Make sure you got a valid result from the key tool command you used to get the signature.
To do this, run the first part of the command line separately:
keytool -exportcert -alias androiddebugkey -keystore
[path to your keystore file]
This command should return a very long string that represents your certificate. If the path to your keystone is wrong, it will return an error message. After you get valid results from this command, run the full command line to get the signature:
keytool -exportcert -alias androiddebugkey -keystore
[path to your keystore file] | openssl sha1 -binary |openssl base64
This will return your signature string. Please check that this is the string that you have registered in the GameCircle Portal.
1. Are youtesting on Kindle Fire or on a Kindle Fire Emulator?
Amazon GameCircle features are only available on Kindle Fire and in the Kindle Fire emulator.
2. Is thedevice signed in with an Amazon account?
GameCircle uses the account that the device is signed in with to authenticate the player against the service. Most physical devices will be registered and signed in, but if you are using the emulator, by default it is not registered or signed in (you can do that from the Settings | My Account option)
3. Make surethe device has been updated to the latest version of the Fire OS.
It is important that you are running the latest version of the OS. To check this, go to the top menu, tap More, tap Device, click the Update your Kindle button if it is enabled.
4. Make sureyou're using the latest version of the GameCircle API.
The current version is 1.2.1, but you can check if this has changed in the[GameCircle API documentation][link to API doc]
5. Make sure you got a valid result from the keytool command you used to get the signature.
To do this, run the first part of the command line separately:
keytool -exportcert -alias androiddebugkey -keystore
[pathto your keystore file]
This command should return a very long string that represents your certificate. If the path to your keystone is wrong, it will return an error message. After you get valid results from this command, run the full command line to get the signature:
keytool -exportcert -aliasandroiddebugkey -keystore
[path to your keystorefile] | openssl sha1 -binary | openssl base64
This will return your signature string. Please check that this is the string that you have registered in the GameCircle Portal.
August 23, 2012
Amazon Mobile App Distribution Program
Amazon is now accepting promotional images, and our marketing team is using these images in featured placements to highlight apps to customers. Promotional artwork gives you an opportunity to capture the attention of customers using colorful imagery that reflects the essence of your apps. At Amazon, we are constantly looking for new ways for you to grow your business by connecting you with new customers. We’ll be expanding our use of these images, and we encourage you to submit your promotional image now to take advantage of these new marketing opportunities.
When creating your image, we recommend that you strive for an engaging image that speaks to what your app is all about. Make your image colorful to catch the eye of customers, and choose imagery that promotes the essence of your app and brand. Text on your promotional image should be large, simple, and readable. Do not add the price to the image ($0.99) or any discount call outs (50% off).
Steps to Upload Promotional Imagery
1. Create or use an existing promotional image that is 1024 x 500 pixels.The images file should be in PNG or JPG format.
2. From the Distribution Portal, navigate to the My Apps tab. Select the app you'd like to edit and navigate to the Images & Multimedia tab for that app. Then, click the Edit button.
3) Select Upload Image from the Promotional Imagefield. Choose the image you’d like to upload, and then save the image. Images must be 1024 x 500 in PNG or JPG format.
One question developers commonly ask us is how they can grow their business by introducing their app to new Amazon customers. The Amazon marketing team is here to help. Each day this week we’ll offer a tip on how to market your app on Amazon.
Marketing Tip #5: Think global. Localize your app for international markets.
You may have read that Amazon will begin distributing apps in the United Kingdom, Germany, France, Italy, and Spain later this summer (with more countries planning in the near future). Now is a great time to begin thinking about localizing your marketing, title, and product descriptions for these new regions.
Amazon highly recommends you translate your content to ensure customers in different countries have an easier time discovering and using your apps, IAP items, and subscriptions. Developers can provide translated descriptions for app detail pages by navigating to the Description tab, editing the English (U.S.) description, and then choosing the option to add a new language. Languages available include English (U.K.), German, French, Italian and Spanish. You will be able to add language translations for the app title, short and long description, keywords, and product feature bullets.
Plus, visit prior blog posts to learn more about localization best practices and steps to localize your app within the Distribution Portal.
In this post, our optimization for Kindle Fire specifically targets graphical irregularities within an app. We have identified the most frequent graphic-specific optimizations, and provided code snippets and guidelines to help optimize your app for Kindle Fire.
With the term graphical issues, we’re referring to a number of issues that affect how an app displays on Kindle Fire. These issues include:
Each of these issues could impact the compatibility of your app on Kindle Fire. While not all graphical issues are severe, if the issues interfere with the core functionality of your app, then you must address them before your app can be compatible with Kindle Fire.
One of the most prevalent graphical issues involves unreadable text caused by clipping or overlay issues —where the text or areas of the app’s UI may overlap or display off-screen. Most of these problems can be avoided by optimizing your app’s layout to meet Kindle Fire’s specifications.
Specifically, Kindle Fire has the following display characteristics:
Additionally, these issues are often caused because developers forget to take into account the size of Kindle Fire’s soft key menu. While Kindle Fire has a width of 600px and a height of 1024px, Kindle Fire also has a soft key menu that is displayed at the bottom of the screen.
The soft key menu (which allows access to the standard Home, Back, Menu, and Search buttons) has two positions:
To keep the soft key menu minimized, make sure that your app enables full screen mode. Conversely, to keep the soft key menu maximized, remove any code that enables full screen mode. For example, full screen mode is enabled by the following sample code:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
The soft key menu may overlap more than just text. Many apps include navigational buttons along the bottom of the screen. If the apps are not optimized for the Kindle Fire soft key menu, then the navigational buttons may be hidden by the soft key menu—making it difficult for users to navigate.
If your app’s layout is not properly optimized for Kindle Fire, then the interactive buttons within your UI might not line up with where the buttons are displayed. That is, users may have to tap next to rather than on a button to activate it.
In addition to designing your app to take up 1024 x 600px (the dimensions of the Kindle Fire screen), if you forget to take into account the soft key menu, then the interactive area of your app may be misaligned with the displayed area.
Truncated or misaligned text within textboxes is another widespread issue that apps exhibit on Kindle Fire. This issue is demonstrated in the screenshot below:
The issue, corrected:
If this issue is occurring in one textbox, then it is often occurring in other textboxes within the app. If your app contains multiple textboxes or forms with this issue, then the user experience can be severely impacted.
Truncated text can be caused by a variety of reasons. We’ll explain the most common issues below.
Text that is truncated at the top (like the screenshot above) is often caused by a few attributes in the EditText
element:
-
If the layout_height attribute is set a specific pixel amount (even if you used dp rather than px), then the EditText element will display at a different size on different devices—if the element is too short to display the text, then the text will be truncated
android:layout_height="wrap_content"
- If the lineSpacingExtra attribute is added and set to a positive integer (e.g., android:lineSpacingExtra="5dp"), then we recommend setting android:layout_height="wrap_content"—otherwise, the extra space will push the text out of the textbox
Text that is truncated at the bottom (like the image above which is followed by a corrected image) is also often caused by specific attributes in the EditText element:
In addition to textboxes (EditText), drop-down menus (Spinner) and text areas (TextView) may also be affected by this issue. The fixes that we described above are also relevant to those elements.
The screen capture below demonstrates the difficulty that users have with truncated drop-down text.
Check back in for our final blog post in the Top 10 App Optimizations for Kindle Fire series where we take on multiple topics such as app stability, launch, and software and hardware capabilities.
Meet Amazon at Casual Connect Seattle from July 24-26!
Happy Hour at the Diller Room- July 24, 2012 6:00-8:00 PM
Join us for drinks (two drink tickets provided) and hors d' oeuvres at the Diller Room on July 24th from 6pm-8pm. Mingle with representatives from the AWS, Amazon Mobile App Distribution, and GameCircle teams and enter a drawing to win a Kindle Fire.
You can register for the Happy Hour event on this page or just simply drop by. Please remember to bring your Casual Connect Conference badge for admittance.
The Diller Room is located at 1224 1st Avenue, Seattle, WA 98101. The location is one block west of Benaroya Hall on the corner of 1st and University.
Amazon Speaker Sessions at Casual Connect
Join us for two conference sessions hosted by Amazon speakers:
Amazon Tables at Casual Connect
While you are at the Casual Connect conference, please stop by our tables - #B29 and #B30. We'll be at the tables from 8AM-6PM.
Kindle Fire development resources are now available to our developer community! These resources provide detailed documentation, best practices, an emulator, and sample code to make it easy for you to build great applications for Kindle Fire customers.
Our documentation details how to set up your development environment, create a great customer experience, and optimize and test your apps for Kindle Fire. We also provide a Kindle Fire emulator to help you more easily lay out and test your apps, and sample code that illustrates our best practices for performing specific tasks.
It’s easy to get started building and optimizing your apps for Kindle Fire. Visit the Kindle Fire Development Resources page on the Distribution Portal and start building today!
Founded in San Francisco in 2001, Glu Mobile is a mobile games publisher for smartphone and tablet devices boasting titles such as Blood & Glory, Frontline Commando, Contract Killer, Big Time Gangsta, Bug Village, Eternity Warriors, and Gun Bros. They also have new games launching regularly and recently launched their casual hit title, STARDOM: THE A-LIST. In addition to participating in the Free App of the Day program, Glu was part of Amazon’s In-App Purchasing beta program. Mike DeLaet, VP of Global Sales & Marketing, remarked on their experience:
What drove you to participate in the beta test for the Amazon SDK and In-App Purchasing API?
Glu offers freemium mobile means – which means that they are free to download and play with the additional opportunity for users to purchase in-game virtual goods to improve the gaming experience. Amazon’s in-app purchasing functionality was a perfect fit for Glu and the type of games that we offer.
What types of monetization do you use (e.g., ads, in-app purchasing, subscriptions, upgrades)?
The majority of our games monetize through the use of in-app purchasing, though we do provide regular updates and upgrades to our games.
How did you come to the decision to monetize your apps?
Glu decided in early 2010 to focus our efforts on creating high quality, high production value freemium games. We set out to provide users with the best experience possible, while making our games free to download and play. Because we were confident that users would find our games fun and engaging after downloading, we believed that they would be willing to spend money to enhance the gameplay experience. However, users aren’t required to spend money if they choose not to.
How has your experience with Amazon compared to your expectations and/or experiences with other Android marketplaces?
Our experience with Amazon thus far has been great. Amazon as a company truly understands effective merchandising and has an enormous user-base with which to cross-promote. We look forward to seeing how our business develops over the coming months and years with Amazon.
What advice do you have for other developers? Any tips for how developers can leverage in-app purchasing to grow their businesses?
Every game is different, so analyze the results of your game and make sure you are providing what the customer wants. One of the most basic things we look at is what our customers are buying and what they are not buying within each game. This helps us create more of what people want versus what they don’t and we can keep our stores filled with the right content. Building a freemium game is a constant iterative process. The best monetizing games require you to be fully committed!
Have you received customer feedback on the Amazon experience?
We keep a close eye on customer reviews for all of Glu’s games on the Amazon Appstore and so far they are excellent. One of our recent releases, Blood & Glory, has over 7,000 five-star reviews and our other freemium titles are showing similar results. This is proof to us that we are creating fun, engaging games that people enjoy playing.
Announcing Amazon GameCircle, a new set of services designed to make it easier for you to create more engaging gaming experiences and grow your business on Kindle Fire. GameCircle will make achievements, leaderboards and sync APIs accessible, simple and quick for you to integrate, and will give gamers a more seamless and entertaining in-game experience.
Game developers can sign up for access to the GameCircle APIs here: https://developer.amazon.com/sdk/gamecircle.html. Game players can find Kindle Fire games that are now using GameCircle services here: http://amazon.com/gamecircle-games.
Achievements
GameCircle achievements allow players to track all earned trophies, treasures, badges, awards, and more without leaving the gaming experience. Players can receive in-game messages to keep track of accolades earned in real-time or pause and view an achievements summary to check earned collections and determine what badges are still needed, before returning to gameplay.
Leaderboards
GameCircle leaderboards provide an in-game view of score comparison information and percentile ranking, allowing players to quickly and easily check standings against top players or competitors, without ever leaving your game.
Sync
Sync automatically saves a player’s in-game progress to the cloud and allows them to pick-up exactly where they left off when restoring a deleted game or switching devices. Players will not have to worry about losing progress, scores or achievements between Kindle Fire devices, as all data is securely stored in the cloud. [Note: Sync to cloud functionality requires a game to integrate the Sync API.]
“Our goal is to give developers great tools to quickly and easily reach new customers and keep them engaged. That’s why we’re creating easy-to-integrate APIs for features like leaderboards, achievements and sync. We also introduced In-App Purchasing API in April, allowing developers to offer a seamless 1-Click purchasing experience within their apps and games, and we’re just getting started,” said Paul Ryder, Vice President of Apps, Games, and Services at Amazon. “GameCircle gives developers the right tools to build an immersive, more entertaining experience on Kindle Fire, which will ultimately help developers grow their business.”
What do our beta program partners say about GameCircle services?
“We are thrilled to be part of Amazon’s GameCircle with Temple Run,” said Keith Shepherd, Co-founder of Imangi Studios. “The new service is a great way to keep our fans engaged by offering them more opportunities to play the game, and an intuitive platform to connect with new players.”
"Sync is a wonderful addition to Triple Town,” said David J Edery, CEO of Spry Fox. “It guarantees that Kindle Fire users will not lose their active game or their hard-earned coins if they replace their Fire, or if they must uninstall and reinstall Triple Town for whatever reason. It also enables multiple-device owners to transfer their game from one device to another—something we think gamers will love."
"We’re excited about Amazon’s new Game Services because it brings a new level of engagement for our most popular Android titles such as Doodle Jump and Collapse!,” said Ken Murphy, VP of GameHouse Studios. “The ability to compete for high scores and achievements through the Amazon network means even more fun for GameHouse players.”
Game developers can sign up for access to the GameCircle APIs by visiting: https://developer.amazon.com/sdk/gamecircle.html
Game players can find Kinde Fire games that are now using GameCircle services here: http://amazon.com/gamecircle-games
With the launch of the Amazon Mobile App Distribution Portal for international distribution, we'd like to talk about how to get your Android apps ready for an international audience.
Localization is the process of making your app display appropriate resources depending on the device's default locale and language. "Appropriate Resources" can include more than text. Depending on your app, you may also want to change:
Localization is a big topic, so we'll focus on those resources that impact customers the most: text, images, and currency.
Each Android device has a default locale which consists of a region and language, which you can query programmatically. Fortunately, this is seldom necessary. Since Android is designed to be used on a variety of platforms, it looks for resources that are appropriate for the current execution environment. For example, you may already provide different bitmaps or backgrounds for your app based on the device's pixel density. As long as the resources are in the right directory (e.g., drawable-hdpi), Android will select the best resource for the job.
Localization works the same way – by putting your resources in the correct folder, Android will find the right one at runtime, without you having to write additional code. The simplest example is one you are probably familiar with: /res/values/strings.xml. The strings.xml file is designed to hold your user-viewable strings in such a way that they can be used by reference. Here is a sample definition in strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello!</string>
</resources>
The string resource named "hello" can be referenced in your source code by calling:
String helloText = getString(R.id.hello);
And in other XML files (such as layout or the manifest) by referencing:
<application android:label="@string/hello" >
Now suppose you want to provide a better user experience for new customers who speak French or German. Simply create a new version of strings.xml for each language, and put them in their own "values" directory. The format is: values-xx-rYY, where 'xx' is the ISO-639 language code, and 'YY' is the ISO-3166-1 region code.
/res
/values (default directory, make sure all references are present)
/values-fr (contains French language strings, region not used)
/values-de (contains German language strings, region not used)
When Android looks for a string reference, it will try to match a resource that is specific to a region and language, then by language, then in the default directory (values). It is extremely important to make sure all of your string references are in the default directory.
If Android fails to find a reference after searching the default directory, your program will force close!
Once the references are defined in the defaults, your language-specific files can define the strings you want to localize in that language. For example, some language speakers are comfortable with a mix of English and their native tongue, while others speakers expect a full translation.
Not all UI presentation is done using strings, and many apps have menus, price lists, or instructions written as bitmaps or other graphical data. Fortunately, the same dynamic resource handling we just saw with strings applies to resources in the drawable folders as well.
/res
/drawable
/drawable-fr (contains German language strings, region not used)
/drawable-de (contains German language strings, region not used)
If you already have several drawable directories with resources based on pixel density, you can further extend the structure to accommodate language. The resource directory name modifiers (locale, pixel density, screen size, screen orientation, etc.) can be chained together:
/drawable-fr-ldpi
/drawable-fr-mdpi
If you find yourself reusing drawable assets (putting duplicate copies of bitmaps in several folders, for example), Android provides a way to "link" a reference to a binary using an XML file in the drawable directory.
Suppose you want the resource named "background" in the Great Britain locale to point to a resource in the default drawable directory. Save the following file as "/drawable-en-rGB/background.xml":
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/background_common" />
Any reference to "background" that resolved to that directory (drawable-en-GB) would automatically use the resource: /drawable/background_common.
Lastly, we'll look at an example where we display the price of our IAP items in local format. The most important elements are the currency symbol, and the decimal divider:
€19,95 // in some European locales
$19.95 // in North America
Let's say your app uses the IAP API to fetch a price for an item from the regional store. The API will give you a price that you can parse to a float. Wouldn't it be nice to have an object that takes care of the number formatting for you? As it turns out, Android provides a NumberFormat object for this purpose.
To get the formatted String, make the following calls:
NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.getDefault());
String formattedPrice = nf.format(19.99f);
This is formatting only, and does not do currency value conversion. If you decide to use a locale other than the default, make sure you define it using both language and region (e.g., en_US, or fr_FR). Otherwise you won't get the correct formatting. For example, there are many countries using French as their primary language and have different currencies.
As mentioned before, localization is a deep topic – we've barely scratched the surface. Check back for additional tips to improve the customer experience as you distribute your apps around the world.
Jeff Hines, Kindle Fire test team, and Chirag Mehta, a2z Developer Center Inc., an Amazon.com company, are our bloggers for this post.
This fourth post in our Top 10 App Optimizations for Kindle Fire series involves optimizations that allow for successful installation on Kindle Fire.
While all too common, installation failures are easily preventable. Rather than by coding errors, installation failures result from a misunderstanding of the device software, features, and capabilities. This post contains helpful optimizations that address prominent issues preventing installation on Kindle Fire.
When developing an app exclusively for Kindle Fire, ensure that your app is developed using the correct Software Development Kit (SDK) version. Many apps fail to install because they were developed to operate within a different version of the Android SDK platform.
If your app requires a different SDK version than what is used by Kindle Fire, then you will see an error similar to the following:
“…Could not parse package (at Binary XML file line #11): Requires newer sdk version #13 (current version is #10)”
To properly optimize your app for Kindle Fire, you should specifically target Android 2.3.4 - API Level 10.
If you have designed your app to install on Kindle Fire and multiple devices running other versions of the Android SDK, simply adjust the minimum Android Program Interface (API) Level within your manifest:
<uses-sdk android:minSdkVersion="10"
android:targetSdkVersion="13" />
Be aware that you can set the maximum API value by utilizing android:maxSdkVersion=”X”. However, we do not recommend blocking installation on future versions of the Android SDK, as all newer versions of the platform are backwards compatible.
If you intend to have your app exclusive to Kindle Fire, then you may simply equalize the minimum and target values:
<uses-sdk android:minSdkVersion="10"
android:targetSdkVersion="10" />
For more information on declaring API values within your manifest, visit
http://developer.android.com/guide/topics/manifest/uses-sdk-element.html
If you have packaged your app using Google Mobile Services (GMS) such as the Google Maps library, then your app will not install on Kindle Fire. Unlike some other Android devices, GMS are not present on Kindle Fire.
When trying to install an app that requires GMS, you may encounter the following error:
“…requires unavailable shared library com.google.android.maps; failing!”
While the Google Maps library is not present on the Kindle Fire, you may still connect to Google Maps via Wi-Fi. Otherwise, if your app must have offline mapping, then we recommend developing your app to utilize an alternative mapping service.
If your app is fully functional without GMS support, we recommend disabling the service entirely by removing the line of code from the manifest that links to the library.
Depending on your app’s functionality, you may also need to modify your mapping features to gracefully degrade (e.g., with an error message such as “This feature is not currently available on this device”). If you plan to implement an alternate mapping service in an updated version, then you might use a message such as, “This feature is not currently available at this time.”
Be aware that if your app also uses in-app purchasing technology powered by Google Mobile Services, this functionality will not work on Kindle Fire. Amazon now directly offers an alternative In-App Purchasing API that allows easy access to purchasable digital content and subscriptions. Please refer to our In-App Purchasing section of the Developer FAQ for more information.
Continue to check back in for our next post in this series which will cover optimizations that target graphical performance on Kindle Fire.