Games developer, Dots, share their Do’s and Don’ts for improving your visibility on Google Play


Posted by Lily Sheringham, Developer Marketing at Google Play


Editor’s note: A few weeks ago we shared some tips from game developer, Seriously, on how they’ve been using notifications successfully to drive ongoing engagement. This week, we’re sharing tips from Christian Calderon at US game developer, Dots, on how to successfully optimize your Play Store Listing. -Ed.









A well thought-out Google Play store listing can significantly improve the discoverability of your app or game and drive installations. With the recent launch of Store Listing Experiments on the Google Play Developer Console, you can now conduct A/B tests on the text and graphics of your store listing page and use the data to make more informed decisions.



Dots is a US-founded game developer which released the popular game, Dots, and its addictive sequel, TwoDots. Dots used its store listings to showcase its brands and improve conversions by letting players know what to expect.






Christian Calderon, Head of Marketing for Dots, shared his top tips with us on store listings and visibility on Google Play.






Do’s and Don’ts for optimizing store listings on Google Play
























Do’s
Don’ts
Do be creative and unique with the icon. Try to visually convince the user that your product is interesting and in alignment with what they are looking for.

Don’t spam keywords in your app title. Keep the title short, original and thoughtful and keep your brand in mind when representing your product offering.
Do remember to quickly respond to reviews and implement a scalable strategy to incorporate feedback into your product offering. App ratings are important social proof that your product is well liked.
Don’t overload the ‘short description’. Keep it concise. It should be used as a call-to-action to address your product’s core value proposition and invite the user to install the application. Remember to consider SEO best practices.

Do invest in a strong overall paid and organic acquisition strategy. More downloads will make your product seem more credible to users, increasing the likeliness that a user will install your app.
Don’t overuse text in your screenshots. They should create a visual narrative for what’s in your game and help users visualize your product offering, using localization where possible.
Do link your Google Play store listing to your website, social media accounts, press releases and any of your consumer-facing channels that may drive organic visibility to your target market. This can impact your search positioning.
Don’t have a negative, too short or confusing message in your “What’s New” copy. Let users know what updates, product changes or bug fixes have been implemented in new versions. Keep your copy buoyant, informative, concise and clear.
Do use Video Visualization to narrate the core value proposition. For TwoDots, our highest converting videos consist of gameplay, showcasing features and events within the game that let the player know exactly what to expect.
Don’t flood the user with information in the page description. Keep the body of the page description organized and concise and test different structural patterns that works best for you and your product!






Use Google Play Store Listing Experiments to increase your installs


As part of the 100 Days of Google Dev video series, Kobi Glick from the Google Play team explains how to test different graphics and text on your app or game’s Play Store listing to increase conversions using the new Store Listing Experiments feature in the Developer Console.










Find out more about using Store Listing Experiments to turn more of your visits into installs.

Android Wear now works with iPhones

Editor's note: As of September 2, you can check out new watches from Huawei, ASUS, and Motorola that all work with iPhones. 

(Cross posted on the Official Google Blog)

When you wear something every day, you want to be sure it really works for you. That’s why Android Wear offers countless design choices, so you can find the watch that fits your style. Want a round watch with a more classic look? Feel like a new watch band? How about changing things up every day with watch faces from artists and designers? With Android Wear you can do all of that. And now, Android Wear watches work with iPhones.

Android Wear for iOS is rolling out today. Just pair your iPhone (iPhone 5, 5c, 5s, 6, or 6 Plus running iOS 8.2+) with an Android Wear watch to bring simple and helpful information right to your wrist:
  • Get your info at a glance: Check important info like phone calls, messages, and notifications from your favorite apps. Android Wear features always-on displays, so you’ll never have to move your wrist to wake up your watch.
  • Follow your fitness: Set fitness goals, and get daily and weekly views of your progress. Your watch automatically tracks walking and running, and even measures your heart rate.
  • Save time with smart help: Receive timely tips like when to leave for appointments, current traffic info, and flight status. Just say “Ok Google” to ask questions like “Is it going to rain in London tomorrow?” or create to-dos with “Remind me to pack an umbrella.”

Today, Android Wear for iOS works with the LG Watch Urbane. All future Android Wear watches, including those from Huawei (pictured above), ASUS, and Motorola will also support iOS, so stay tuned for more. 

Dr. Seuss once said: “Today you are You, that is truer than true. There is no one alive who is Youer than You.” We agree. So whoever You are, and whatever You like—Android Wear lets you wear what you want.

Posted by David Singleton, Director of Engineering, Android Wear

Announcing the Android Auto Desktop Head Unit

Posted by Josh Gordon, Developer Advocate



Today we’re releasing the Desktop Head Unit (DHU), a new testing tool for Android Auto developers. The DHU enables your workstation to act as an Android Auto head unit that emulates the in-car experience for testing purposes. Once you’ve installed the DHU, you can test your Android Auto apps by connecting your phone and workstation via USB. Your phone will behave as if it’s connected to a car. Your app is displayed on the workstation, the same as it’s displayed on a car.













The DHU runs on your workstation. Your phone runs the Android Auto companion app.



Now you can test pre-released versions of your app in a production-like environment, without having to work from your car. With the release of the DHU, the previous simulators are deprecated, but will be supported for a short period prior to being officially removed.



Getting started


You’ll need an Android phone running Lollipop or higher, with the Android Auto companion app installed. Compile your Auto app and install it on your phone.



Install the DHU


Install the DHU on your workstation by opening the SDK Manager and downloading it from Extras > Android Auto Desktop Head Unit emulator. The DHU will be installed in the <sdk>/extras/google/auto/ directory.



Running the DHU



Be sure your phone and workstation are connected via USB.



  1. Enable Android Auto developer mode by starting the Android Auto companion app and tapping on the header image 10 times. This is a one-time step.



  2. Start the head unit server in the companion app by clicking on the context menu, and selecting “Start head unit server”. This option only appears after developer mode is enabled. A notification appears to show the server is running.












  3. Start the head unit server in the Android Auto companion app before starting the DHU on your workstation. You’ll see a notification when the head unit server is running.


  4. On your workstation, set up port forwarding using ADB to allow the DHU to connect to the head unit server running on your phone. Open a terminal and type adb forward tcp:5277 tcp:5277. Don’t forget this step!



  5. Start the DHU.

      cd <sdk>/extras/google/auto/

      On Linux or OSX: ./desktop-head-unit

      On Windows, desktop-head-unit.exe



At this point the DHU will launch on your workstation, and your phone will enter Android Auto mode. Check out the developer guide for more info. We hope you enjoy using the DHU!



Building better apps with Runtime Permissions

Posted by Ian Lake, Developer Advocate



Android devices do a lot, whether it is taking pictures, getting directions or making phone calls. With all of this functionality comes a large amount of very sensitive user data including contacts, calendar appointments, current location, and more. This sensitive information is protected by permissions, which each app must have before being able to access the data. Android 6.0 Marshmallow introduces one of the largest changes to the permissions model with the addition of runtime permissions, a new permission model that replaces the existing install time permissions model when you target API 23 and the app is running on an Android 6.0+ device.



Runtime permissions give your app the ability to control when and with what context you’ll ask for permissions. This means that users installing your app from Google Play will not be required to accept a list of permissions before installing your app, making it easy for users to get directly into your app. It also means that if your app adds new permissions, app updates will not be blocked until the user accepts the new permissions. Instead, your app can ask for the newly added runtime permissions as needed.



Finding the right time to ask for runtime permissions has an important impact on your app’s user experience. We’ve gathered a number of design patterns in our new Permission design guidelines including best practices around when to request permissions, how to explain why permissions are needed, and how to handle permissions being denied.




Ask up front for permissions that are obvious


In many cases, you can avoid permissions altogether by using the existing intents system to utilize other existing specialized apps rather than building a full experience within your app. An example of this is using ACTION_IMAGE_CAPTURE to start an existing camera app the user is familiar with rather than building your own camera experience. Learn more about permissions versus intents.



However, if you do need a runtime permission, there’s a number of tools to help you. Checking for whether your app has a permission is possible with ContextCompat.checkSelfPermission() (available as part of revision 23 of the support-v4 library for backward compatibility) and requesting permissions can be done with requestPermissions(), bringing up the system controlled permissions dialog to allow the user to grant you the requested permission(s) if you don’t already have them. Keep in mind that users can revoke permissions at any time through the system settings so you should always check permissions every time.



A special note should be made around shouldShowRequestPermissionRationale(). This method returns true if the user has denied your permission request at least once yet have not selected the ‘Don’t ask again’ option (which appears the second or later time the permission dialog appears). This gives you an opportunity to provide additional education around the feature and why you need the given permission. Learn more about explaining why the app needs permissions.



Read through the design guidelines and our developer guide for all of the details in getting your app ready for Android 6.0 and runtime permissions. Making it easy to install your app and providing context around accessing user’s sensitive data are key changes you can make to build better apps.



Get the Do’s and Don’ts for Notifications from Game Developer Seriously

Posted by Lily Sheringham, Developer Marketing at Google Play



Editor’s note: We’ve been talking to developers to find out how they’ve been achieving success on Google Play. We recently spoke to Reko Ukko at Finnish mobile game developer, Seriously, to find out how to successfully use Notifications.






Notifications on Android let you send timely, relevant, and actionable information to your users' devices. When used correctly, notifications can increase the value of your app or game and drive ongoing engagement.




Seriously is a Finnish mobile game developer focused on creating entertaining games with quality user experiences. They use push notifications to drive engagement with their players, such as helping players progress to the next level when they’ve left the app after getting stuck.



Reko Ukko, VP of Game Design at Seriously, shared his tips with us on how to use notifications to increase the value of your game and drive ongoing engagement.



Do’s and don’ts for successful game notifications






























Do’s

Don’ts

Do let the user get familiar with your service and its benefits before asking for permission to send notifications.

Don’t treat your users as if they’re all the same - identify and group them so you can push notifications that are relevant to their actions within your app.

Do include actionable context. If it looks like a player is stuck on a level, send them a tip to encourage action.

Don’t spam push notifications or interrupt game play. Get an understanding of the right frequency for your audience to fit the game.

Do consider re-activation. If the player thoroughly completes a game loop and could be interested in playing again, think about using a notification. Look at timing this shortly after the player exits the game.

Don’t just target players at all hours of the day. Choose moments when players typically play games – early morning commutes, lunch breaks, the end of the work day, and in the evening before sleeping. Take time zones into account.

Do deep link from the notification to where the user expects to go to based on the message. For example. if the notification is about "do action X in the game now to win", link to where that action can take place.

Don’t forget to expire the notifications if they’re time-limited or associated with an event. You can also recycle the same notification ID to avoid stacking notifications for the user.

Do try to make an emotional connection with the player by reflecting the style, characters, and atmosphere of your game in the notification. If the player is emotionally connected to your game, they’ll appreciate your notifications and be more likely to engage.

Don’t leave notifications up to guess work. Experiment with A/B testing and iterate to compare how different notifications affect engagement and user behavior in your app. Go beyond measuring app opening metrics – identify and respond to user behavior.



Experiment with notifications yourself to understand what’s best for your players and your game. You can power your own notifications with Google Cloud Messaging, which is free, cross platform, reliable, and thoughtful about battery usage. Find out more about developing Notifications on Android.



Hungry for some Big Android BBQ?

Posted by Colt McAnlis, Head Performance Wrangler



The Big Android BBQ (BABBQ) is almost here and Google Developers will be there serving up a healthy portion of best practices for Android development and performance! BABBQ will be held at the Hurst Convention Center in Dallas/Ft.Worth, Texas on October 22-23, 2015.



We also have some great news! If you sign up for the event through August 25th, you will get 25% off when you use the promotional code "ANDROIDDEV25". You can also click here to use the discount.



Now, sit back, and enjoy this video of some Android cowfolk preparing for this year’s BBQ!





The Big Android BBQ is an Android combo meal with a healthy serving of everything ranging from the basics, to advanced technical dives, and best practices for developers smothered in a sweet sauce of a close knit community.



This year, we are packing in an unhealthy amount of Android Performance Patterns, followed up with the latest and greatest techniques and APIs from the Android 6.0 Marshmallow release. It’s all rounded out with code labs to let you get hands-on learning. To super-size your meal, Android Developer instructors from Udacity will be on-site to guide users through the Android Nanodegree. (Kinda like a personal-waiter at an all-you-can-learn buffet).



Also, come watch Colt McAnlis defend his BABBQ “Speechless” Crown against Silicon Valley reigning champ Chet Haase. It'll be a fist fight of humor in the heart of Texas!



You can get your tickets here, and we look forward to seeing you in October!



Interactive watch faces with the latest Android Wear update

Posted by Wayne Piekarski, Developer Advocate



The Android Wear team is rolling out a new update that includes support for interactive watch faces. Now, you can detect taps on the watch face to provide information quickly, without having to open an app. This gives you new opportunities to make your watch face more engaging and interesting. For example, in this animation for the Pujie Black watch face, you can see that just touching the calendar indicator quickly changes the watch face to show the agenda for the day, making the watch face more helpful and engaging.





Interactive watch face API


The first step in building an interactive watch face is to update your build.gradle to use version 1.3.0 of the Wearable Support library. Then, you enable interactive watch faces in your watch face style using setAcceptsTapEvents(true):



setWatchFaceStyle(new WatchFaceStyle.Builder(mService)
.setAcceptsTapEvents(true)
// other style customizations
.build());


To receive taps, you can override the following method:



@Override
public void onTapCommand(int tapType, int x, int y, long eventTime) { }


You will receive events TAP_TYPE_TOUCH when the user initially taps on the screen, TAP_TYPE_TAP when the user releases their finger, and TAP_TYPE_TOUCH_CANCEL if the user moves their finger while touching the screen. The events will contain (x,y) coordinates of where the touch event occurred. You should note that other interactions such as swipes and long presses are reserved for use by the Android Wear system user interface.



And that’s it! Adding interaction to your existing watch faces is really easy with just a few extra lines of code. We have updated the WatchFace sample to show a complete implementation, and design and development documentation describing the API in detail.



Wi-Fi added to LG G Watch R



This release also brings Wi-Fi support to the LG G Watch R. Wi-Fi support is already available in many Android Wear watches and allows the watch to communicate with the companion phone without requiring a direct Bluetooth connection. So, you can leave your phone at home, and as long as you have Wi-Fi, you can use your watch to receive notifications, send messages, make notes, or ask Google a question. As a developer, you should ensure that you use the Data API to abstract away your communications, so that your application will work on any kind of Android Wear watch, even those without Wi-Fi.



Updates to existing watches



This update to Android Wear will roll out via an over-the-air (OTA) update to all Android Wear watches over the coming weeks. The wearable support library version 1.3 provides the implementation for touch interactions, and is designed to continue working on devices which have not been updated. However, the touch support will only work on updated devices, so you should wait to update your apps on Google Play until the OTA rollout is complete, which we’ll announce on the Android Wear Developers Google+ community. If you want to release immediately but check if touch interactions are available, you can use this code snippet:



PackageInfo packageInfo = PackageManager.getPackageInfo("com.google.android.wearable.app", 0);
if (packageInfo.versionCode > 720000000) {
// Supports taps - cache this result to avoid calling PackageManager again
} else {
// Device does not support taps yet
}





Android Wear developers have created thousands of amazing apps for the platform and we can’t wait to see the interactive watch faces you build. If you’re looking for a little inspiration, or just a cool new watch face, check out the Interactive Watch Faces collection on Google Play.



Android Wear: Stay connected with interactive watch faces

Wearing a watch lets you tell time with just a glance. Android Wear has expanded this at-a-glance experience to other useful info like your next meeting, daily step count, or messages. Today, we’re launching interactive watch faces, making it easier (and more fun) to stay connected, right from your wrist. Now, with just a tap, your watch face can change its design, reveal more information, or even launch a specific app.

Bits: Choose the info you want at a glance—from weather, to unread mail, to upcoming meetings. Want to know this afternoon’s weather forecast? Just tap on the weather complication.
Under Armour: Stay motivated with fitness stats on your wrist. Tap the watch face to see your step count, calories burned, and distance.
Together: Android Wear’s Together Watch Face lets two people stay close throughout the day by turning the entire watch face into a space for sharing. Once you’ve paired your watch face with a partner’s, you’ll be able to share things like photos and emoji, as well as your activities (like if you’re working out, on the phone, or stuck in traffic).
Today’s updates are rolling out to all Android Wear watches in the coming weeks. So pick your favorite watch face, or pair up with your favorite person, and start wearing what you want.

Posted by Flavio Lerda, Software Engineer, Android Wear 

A step toward better mobile experiences in Africa

If you’re online in Nigeria, chances are you’re on a smartphone. Of the more than 50 million Nigerians who use the Internet, 95% do so on a mobile device and thanks to those devices, the number of people across Nigeria and the rest of Africa with access has grown tremendously. 

However, simply having an Internet connection isn’t enough. It’s important that people getting started with the Internet have a great, reliable, and relevant experience right away. This can be a challenge in places where local content may be limited, connectivity slow or intermittent, and quality phones costly.

While there’s still much more to do, we’re excited to take a step forward in addressing some of those challenges. Today in Lagos we’re announcing new products and features made to improve people’s experience when using a mobile phone to access the Internet. 

First, the Android One program is expanding to Nigeria, Ghana, Ivory Coast, Kenya, Egypt, and Morocco with the launch of the Infinix HOT 2. This is the first Android One device made with our hardware partner Infinix, one of the hottest, fastest growing smartphone brands in Africa. Starting today, the HOT 2 is available in Nigeria at select retail outlets and online through Jumia at a recommended retail price of N17,500* (~88 USD), and it will become available in the other countries over the next few weeks.

Like all Android One phones, the HOT 2 combines a high-quality hardware experience with pure Android software. Bringing together a quad-core MediaTek processor with 1GB memory, dual SIM support, and black, white, red, blue, and gold (with 2GB memory) models, the hardware is a great complement to Lollipop 5.1.1, which provides up to 2x better performance and extended battery features. The Android One HOT 2 will also receive an update to the next version of Android (according to Infinix’s schedule), and thus stays fast and responsive over time.

Second, for people who already own a smartphone, we’re helping them get more for their MBs through a streamlined version of Google Search rolling out to devices worldwide and offering a faster experience on low RAM phones, such as those with 512MB. This feature can reduce data usage on the results page by up to 90%, while removing up to ⅓ of the time it takes to load results.

Finally, we will make the YouTube viewing experience even better by extending YouTube offline to Nigeria, Kenya, Ghana, and Egypt within the next few months. This feature of the YouTube app lets you store many of the videos on YouTube for up to 48 hours, so you can watch them later when your connection may be slow or non-existent. And if you want to quickly re-watch a video with friends without waiting for it to load, that works great too.

Nearly one year ago, Google introduced the Android One program and YouTube Offline in India. Today, 6 countries in Africa — with combined populations of 379 million people — join the list of places where Android One phones are sold. We’ve been thrilled by the progress and feel humbled by the work that’s left to do. But we look forward to continuing our work with partners to ensure that people have a great way to access the Internet, using it in ways that are relevant and useful. 

Posted by Caesar Sengupta, VP, Product Management

* The pricing may differ from seller to seller in offline retail stores

Develop a sweet spot for Marshmallow: Official Android 6.0 SDK & Final M Preview

By Jamal Eason, Product Manager, Android






Android 6.0 Marshmallow




Whether you like them straight out of the bag, roasted to a golden brown exterior with a molten center, or in fluff form, who doesn’t like marshmallows? We definitely like them! Since the launch of the M Developer Preview at Google I/O in May, we’ve enjoyed all of your participation and feedback. Today with the final Developer Preview update, we're introducing the official Android 6.0 SDK and opening Google Play for publishing your apps that target the new API level 23 in Android Marshmallow.



Get your apps ready for Android Marshmallow



The final Android 6.0 SDK is now available to download via the SDK Manager in Android Studio. With the Android 6.0 SDK you have access to the final Android APIs and the latest build tools so that you can target API 23. Once you have downloaded the Android 6.0 SDK into Android Studio, update your app project compileSdkVersion to 23 and you are ready to test your app with the new platform. You can also update your app to targetSdkVersion to 23 test out API 23 specific features like auto-backup and app permissions.



Along with the Android 6.0 SDK, we also updated the Android Support Library to v23. The new Android Support library makes it easier to integrate many of the new platform APIs, such as permissions and fingerprint support, in a backwards-compatible manner. This release contains a number of new support libraries including: customtabs, percent, recommendation, preference-v7, preference-v14, and preference-leanback-v17.



Check your App Permissions



Along with the new platform features like fingerprint support and Doze power saving mode, Android Marshmallow features a new permissions model that streamlines the app install and update process. To give users this flexibility and to make sure your app behaves as expected when an Android Marshmallow user disables a specific permission, it’s important that you update your app to target API 23, and test the app thoroughly with Android Marshmallow users.



How to Get the Update


The Android emulator system images and developer preview system images have been updated for supported Nexus devices (Nexus 5, Nexus 6, Nexus 9 & Nexus Player) to help with your testing. You can download the device system images from the developer preview site. Also, similar to the previous developer update, supported Nexus devices will receive an Over-the-Air (OTA) update over the next couple days.



Although the Android 6.0 SDK is final, the devices system images are still developer preview versions. The preview images are near final but they are not intended for consumer use. Remember that when Android 6.0 Marshmallow launches to the public later this fall, you'll need to manually re-flash your device to a factory image to continue to receive consumer OTA updates for your Nexus device.



What is New



Compared to the previous developer preview update, you will find this final API update fairly incremental. You can check out all the API differences here, but a few of the changes since the last developer update include:



  • Android Platform Change:
    • Final Permissions User Interface — we updated the permissions user interface and enhanced some of the permissions behavior.



  • API Change:
    • Updates to the Fingerprint API — which enables better error reporting, better fingerprint enrollment experience, plus enumeration support for greater reliability.



Upload your Android Marshmallow apps to Google Play


Google Play is now ready to accept your API 23 apps via the Google Play Developer Console on all release channels (Alpha, Beta & Production). At the consumer launch this fall, the Google Play store will also be updated so that the app install and update process supports the new permissions model for apps using API 23.



To make sure that your updated app runs well on Android Marshmallow and older versions, we recommend that you use Google Play’s newly improved beta testing feature to get early feedback, then do a staged rollout as you release the new version to all users.

Barcode Detection in Google Play services

Posted by Laurence Moroney, Developer Advocate



With the release of Google Play services 7.8 we’re excited to announce that we’ve added new Mobile Vision APIs which provides the Barcode Scanner API to read and decode a myriad of different barcode types quickly, easily and locally.



Barcode detection


Classes for detecting and parsing bar codes are available in the com.google.android.gms.vision.barcode namespace. The BarcodeDetector class is the main workhorse -- processing Frame objects to return a SparseArray<Barcode> types.



The Barcode type represents a single recognized barcode and its value. In the case of 1D barcode such as UPC codes, this will simply be the number that is encoded in the barcode. This is available in the rawValue property, with the detected encoding type set in the format field.



For 2D barcodes that contain structured data, such as QR codes, the valueFormat field is set to the detected value type, and the corresponding data field is set. So, for example, if the URL type is detected, the constant URL will be loaded into the valueFormat, and the URL property will contain the desired value. Beyond URLs, there are lots of different data types that the QR code can support -- check them out in the documentation here.



When using the API, you can read barcodes in any orientation. They don’t always need to be straight on, and oriented upwards!



Importantly, all barcode parsing is done locally, making it really fast, and in some cases, such as PDF-417, all the information you need might be contained within the barcode itself, so you don’t need any further lookups.



You can learn more about using the API by checking out the sample on GitHub. This uses the Mobile Vision APIs along with a Camera preview to detect both faces and barcodes in the same image.



Supported Bar Code Types


The API supports both 1D and 2D bar codes, in a number of sub formats.



For 1D Bar Codes, these are:


EAN-13

EAN-8

UPC-A

UPC-E

Code-39

Code-93

Code-128

ITF

Codabar



For 2D Bar Codes, these are:


QR Code

Data Matrix

PDF 417



Learn More


It’s easy to build applications that use bar code detection using the Barcode Scanner API, and we’ve provided lots of great resources that will allow you to do so. Check them out here:



Follow the Code Lab



Read the Mobile Vision Documentation



Explore the sample



Face Detection in Google Play services

Posted by Laurence Moroney, Developer Advocate



With the release of Google Play services 7.8, we announced the addition of new Mobile Vision APIs, which includes a new Face API that finds human faces in images and video better and faster than before. This API is also smarter at distinguishing faces at different orientations and with different facial features facial expressions.



Face Detection


Face Detection is a leap forward from the previous Android FaceDetector.Face API. It’s designed to better detect human faces in images and video for easier editing. It’s smart enough to detect faces even at different orientations -- so if your subject’s head is turned sideways, it can detect it. Specific landmarks can also be detected on faces, such as the eyes, the nose, and the edges of the lips.












Important Note


This is not a face recognition API. Instead, the new API simply detects areas in the image or video that are human faces. It also infers from changes in the position frame to frame that faces in consecutive frames of video are the same face. If a face leaves the field of view, and re-enters, it isn’t recognized as a previously detected face.




Detecting a face



When the API detects a human face, it is returned as a Face object. The Face object provides the spatial data for the face so you can, for example, draw bounding rectangles around a face, or, if you use landmarks on the face, you can add features to the face in the correct place, such as giving a person a new hat.



  • getPosition() - Returns the top left coordinates of the area where a face was detected

  • getWidth() - Returns the width of the area where a face was detected

  • getHeight() - Returns the height of the area where a face was detected

  • getId() - Returns an ID that the system associated with a detected face


Orientation


The Face API is smart enough to detect faces in multiple orientations. As the head is a solid object that is capable of moving and rotating around multiple axes, the view of a face in an image can vary wildly.



Here’s an example of a human face, instantly recognizable to a human, despite being oriented in greatly different ways:





The API is capable of detecting this as a face, even in the circumstances where as much as half of the facial data is missing, and the face is oriented at an angle, such as in the corners of the above image.



Here are the method calls available to a face object:


  • getEulerY() - Returns the rotation of the face around the vertical axis -- i.e. has the neck turned so that the face is looking left or right [The y degree in the above image]

  • getEulerZ() - Returns the rotation of the face around the Z azis -- i.e. has the user tilted their neck to cock the head sideways [The r degree in the above image]


Landmarks


A landmark is a point of interest within a face. The API provides a getLandmarks() method which returns a List , where a Landmark object returns the coordinates of the landmark, where a landmark is one of the following: Bottom of mouth, left cheek, left ear, left ear tip, left eye, left mouth, base of nose, right cheek, right ear, right ear tip, right eye or right mouth.





Activity



In addition to detecting the landmark, the API offers the following function calls to allow you to smartly detect various facial states:



  • getIsLeftEyeOpenProbability() - Returns a value between 0 and 1, giving probability that the left eye is open

  • getIsRighteyeOpenProbability() - Same but for right eye

  • getIsSmilingProbability() - Returns a value between 0 and 1 giving a probability that the face is smiling


Thus, for example, you could write an app that only takes a photo when all of the subjects in the image are smiling.





Learn More



It’s easy to build applications that use facial detection using the Face API, and we’ve provided lots of great resources that will allow you to do so. Check them out here:



Follow the Code Lab



Read the Documentation



Explore the sample



Google Play services 7.8 - Let’s see what’s Nearby!

Posted by Magnus Hyttsten, Developer Advocate, Play services team



Today we’ve finished the roll-out of Google Play services 7.8. In this release, we’ve added two new APIs. The Nearby Messages API allows you to build simple interactions between nearby devices and people, while the Mobile Vision API helps you create apps that make sense of the visual world, using real-time on-device vision technology. We’ve also added optimization and new features to existing APIs. Check out the highlights in the video or read about them below.





Nearby Messages



Nearby Messages introduces a cross-platform API to find and communicate with mobile devices and beacons, based on proximity. Nearby uses a combination of Bluetooth, Wi-Fi, and an ultrasonic audio modem to connect devices. And it works across Android and iOS. For more info on Nearby Messages, check out the documentation and the launch blog post.



Mobile Vision API



We’re happy to announce a new Mobile Vision API. Mobile Vision has two components.



The Face API allows developers to find human faces in images and video. It’s faster, more accurate and provides more information than the Android FaceDetector.Face API. It finds faces in any orientation, allows developers to find landmarks such as the eyes, nose, and mouth, and identifies faces that are smiling and/or have their eyes open. Applications include photography, games, and hands-free user interfaces.



The Barcode API allows apps to recognize barcodes in real-time, on device, in any orientation. It supports a range of barcodes and can detect multiple barcodes at once. For more information, check out the Mobile Vision documentation.



Google Cloud Messaging



And finally, Google Cloud Messaging - Google’s simple and reliable messaging service - has expanded notification to support localization for Android. When composing the notification from the server, set the appropriate body_loc_key, body_loc_args, title_loc_key, and title_loc_args. GCM will handle displaying the notification based on current device locale, which saves you having to figure out which messages to display on which devices! Check out the docs for more info.



And getting ready for the Android M release, we've added high and normal priority to GCM messaging, giving you additional control over message delivery through GCM. Set messages that need immediate users attention to high priority, e.g., chat message alert, incoming voice call alert. And keep the remaining messages at normal priority so that it can be handled in the most battery efficient way without impeding your app performance.



SDK Now Available!



You can get started developing today by downloading the Google Play services SDK from the Android SDK Manager.



To learn more about Google Play services and the APIs available to you through it, visit our documentation on Google Developers.




Android Developer Story: Zabob Studio and Buff Studio reach global users with Google Play

Posted by Lily Sheringham, Google Play team



South Korean Games developers Zabob Studio and Buff Studio are start-ups seeking to become major players in the global mobile games industry.



Zabob Studio was set up by Kwon Dae-hyeon and his wife in 2013. This couple-run business has already published ten games, including hits ‘Zombie Judgement Day’ and ‘Infinity Dungeon.’ So far, the company has generated more than KRW ₩140M (approximately $125,000 USD) in sales revenue, with about 60 percent of the studio’s downloads coming from international markets, such as Taiwan and Brazil.



Elsewhere, Buff Studio was founded in 2014 and right from the start, its first game Buff Knight was an instant hit. It was even featured as the ‘Game of the Week’ on Google Play and was included in “30 Best Games of 2014” lists. A sequel is already in the works showing the potential of the franchise.



In this video, Kwon Dae-hyeon, CEO of Zabob Studio, and Kim Do-Hyeong, CEO of Buff Studio, talk about how Google Play services and the Google Play Developer Console have helped them maintain a competitive edge, market their games efficiently to global users and grow revenue on the platform.




Android Developer Story: Buff Studio - Reaching global users with Google Play




Android Developer Story: Zabob Studio - Growing revenue with Google Play



Check Zabob Studio apps and Buff Knight on Google Play!



We’re pleased to share that Android Developer Stories will now come with translated subtitles on YouTube in popular languages around the world. Find out how to turn on YouTube captions. To read locally translated blog posts, visit the Google developer blog in Korean.



Android Experiments: A celebration of creativity and code

Posted by Roman Nurik, Design Advocate, and Richard The, Google Creative Lab



Android was created as an open and flexible platform, giving people more ways to come together to imagine and create. This spirit of invention has allowed developers to push the boundaries of mobile development and has helped make Android the go-to platform for creative projects in more places—from phones, to tablets, to watches, and beyond. We set out to find a way to celebrate the creative, experimental Android work of developers everywhere and inspire more developers to get creative with technology and code.



Today, we’re excited to launch Android Experiments: a showcase of inspiring projects on Android and an open invitation for all developers to submit their own experiments to the gallery.






The 20 initial experiments show a broad range of creative work–from camera experiments to innovative Android Wear apps to hardware hacks to cutting edge OpenGL demos. All are built using platforms such as the Android SDK and NDK, Android Wear, the IOIO board, Cinder, Processing, OpenFrameworks and Unity. Each project creatively examines in small and big ways how we think of the devices we interact with every day.



Today is just the beginning as we’re opening up experiment submissions to creators everywhere. Whether you’re a student just starting out, or you’ve been at it for a while, and no matter the framework it uses or the device it runs on, Android Experiments is open to everybody.



Check out Android Experiments to view the completed projects, or to submit one of your own. While we can’t post every submission, we’d love to see what you’ve created.



Follow along to see what others build at AndroidExperiments.com.

Low-overhead rendering with Vulkan

Posted by Shannon Woods, Technical Program Manager






Developers of games and 3D graphics applications have one key challenge to meet: How complex a scene can they draw in a small fraction of a second? Much of the work in graphics development goes into organizing data so it can be efficiently consumed by the GPU for rendering. But even the most careful developers can hit unforeseen bottlenecks, in part because the drivers for some graphics processors may reorganize all of that data before it can actually be processed. The APIs used to control these drivers are also not designed for multi-threaded use, requiring synchronization with locks around calls that could be more efficiently done in parallel. All of this results in CPU overhead, which consumes time and power that you’d probably prefer to spend drawing your scene.




Lowering overhead and handing control to developers


In order to address some of the sources of CPU overhead and provide developers with more explicit control over rendering, we’ve been working to bring a new 3D rendering API, Vulkan™, to Android. Like OpenGL™ ES, Vulkan is an open standard for 3D graphics and rendering maintained by Khronos. Vulkan is being designed from the ground up to minimize CPU overhead in the driver, and allow your application to control GPU operation more directly. Vulkan also enables better parallelization by allowing multiple threads to perform work such as command buffer construction at once.





An API is only useful if it does what you expect


To make it easier to write an application once that works across a variety of devices, Android 5.0 Lollipop significantly expanded the Android Compatibility Test Suite (CTS) with over fifty thousand new tests for OpenGL ES, and many more have been added since. This provides an extensive open source test suite for identifying problems in drivers so that they can be fixed, creating a more robust and reliable experience for both developers and end users. For Vulkan, we’ll not only develop similar tests for use in the Android CTS, but we’ll also contribute them to Khronos for use in Vulkan’s own open source Conformance Test Suite. This will enable Khronos to test Vulkan drivers across platforms and hardware, and improve the 3D graphics ecosystem as a whole.



It’s all about developer choice


We’ll be working hard to help create, test, and ship Vulkan, but at the same time, we’re also going to contribute to and support OpenGL ES. As a developer, you’ll be able to choose which API is right for you: the simplicity of OpenGL ES, or the explicit control of Vulkan. We’re committed to providing an excellent developer experience, no matter which API you choose.



Vulkan is still under development, but you’ll be able to find specifications, tests, and tools once they are released at http://www.khronos.org/vulkan.

An Update to Nexus Devices

Security has always been a major focus for Android and Google Play: Android was built from day one with security in mind.

For example, the “Application Sandbox” model keeps applications running separately from other apps and the rest of the device to keep your data safe. With Verify Apps, over 1 billion devices are protected via Google Play, which conducts hundreds of millions of antivirus-like security scans of devices per day seamlessly in the background. Also, Android is open source so that anyone can comb through the code to identify and address potential security risks, which makes the platform stronger. In fact, the Android Security Rewards Program financially rewards security researchers who invest their time and effort in helping make Android more secure.

We believe the combination of these approaches has led to there being fewer than 0.15% of devices with any kind of potentially harmful app installed, as long as apps were installed from Google Play. (See more of our research.)

An additional approach to further increase the security of Android users involves updates to the device software. For the past three years, we have been notifying Android manufacturers every month through bulletins of security issues so that they can keep their users secure.

Nexus devices have always been among the first Android devices to receive platform and security updates. From this week on, Nexus devices will receive regular OTA updates each month focused on security, in addition to the usual platform updates. The first security update of this kind began rolling out today, Wednesday August 5th, to Nexus 4, Nexus 5, Nexus 6, Nexus 7, Nexus 9, Nexus 10, and Nexus Player. This security update contains fixes for issues in bulletins provided to partners through July 2015, including fixes for the libStageFright issues. At the same time, the fixes will be released to the public via the Android Open Source Project. Nexus devices will continue to receive major updates for at least two years and security patches for the longer of three years from initial availability or 18 months from last sale of the device via the Google Store.

Security continues to be a top priority and monthly device updates are yet another tool to make and keep Android users safe.


Posted by Adrian Ludwig, Lead Engineer for Android Security, and Venkat Rapaka, Director of Nexus Product Management