Showing posts with label Android Developer. Show all posts
Showing posts with label Android Developer. Show all posts

Calling European game developers, enter the Indie Games Contest by December 31

Originally posted on Google Developers blog


Posted by Matteo Vallone, Google Play Games Business Development



To build awareness of the awesome innovation and art that indie game developers
are bringing to users on Google Play, we have invested heavily over the past
year in programs like href="https://play.google.com/store/info/topic?id=topic_b000054_games_indie_corner_tp&e=-EnableAppDetailsPageRedesign">Indie
Corner, as well as events like the Google Play Indie Games Festivalshref="https://events.withgoogle.com/google-play-indie-game-festival/"> in
North
America
and href="https://events.withgoogle.com/google-play-indie-games-fes/">Korea.



As part of that sustained effort, we also want to celebrate the passion and
innovation of indie game developers with the introduction of the first-ever
href="https://events.withgoogle.com/indie-games-contest-europe/">Google Play
Indie Games Contest
in Europe. The contest will recognize the best
indie talent in several countries and offer prizes that will help you get your
game noticed by industry experts and gamers worldwide.




Prizes for the finalists and winners:


  • An open showcase held at the Saatchi Gallery in London
  • YouTube influencer campaigns worth up to 100,000 EUR
  • Premium placements on Google Play
  • Tickets to Google I/O 2017 and other top industry events
  • Promotions on our channels
  • Special prizes for the best Unity game
  • And href="https://events.withgoogle.com/indie-games-contest-europe/prizes/">more!


Entering the contest:



If you're based in Czech Republic, Denmark, Finland, France (coming soon),
Germany, Iceland, Israel, Netherlands, Norway, Poland (coming soon), Romania,
Spain, Sweden, Turkey, or UK (excl. Northern Ireland), have 15 or less full time
employees, and published a new game on Google Play after 1 January 2016, you may
now be eligible to href="https://events.withgoogle.com/indie-games-contest-europe/">enter the
contest. If you're planning on publishing a new game soon, you can also
enter by submitting a private beta. Check out all the details in the href="https://events.withgoogle.com/indie-games-contest-europe/terms/">terms and
conditions. Submissions close on 31 December 2016.




The process:



Up to 20 finalists will get to showcase their games at an open event at the
Saatchi Gallery in London on the 16th February 2017. At the event, the top 10
will be selected by the event attendees and the Google Play team. The top 10
will then get the opportunity to pitch to a jury of industry experts, from which
the final winner and runners up will be selected.



Even if someone is NOT entering the contest:



Even if you're not eligible to enter the contest, you can still register to
attend the final showcase event in London on 16 February 2017, check out some
great indie games, and have fun with various industry experts and indie
developers. We will also be hosting a workshop for all indie games developers
from across EMEA in the new Google office in Kings Cross the next day, so this
will be a packed week.



Get started:



href="https://events.withgoogle.com/indie-games-contest-europe/">Enter the Indie
Games Contest now
and visit the href="https://events.withgoogle.com/indie-games-contest-europe/">contest
site to find out more about the contest, the event, and the workshop.




Google Play services and Firebase for Android will support API level 14 at minimum

Posted by Doug Stevenson, Developer Advocate


Version 10.0.0 of the Google Play services client libraries, as well as the
Firebase client libraries for Android, will be the last version of these
libraries that support href="https://source.android.com/source/build-numbers.html">Android API
level 9 (Android 2.3, Gingerbread). The next scheduled release of these
libraries, version 10.2.0, will increase the minimum supported API level from 9
to 14 (Android 4.0.1, Ice Cream Sandwich). This change will happen in early
2017.


Why are we discontinuing support for Gingerbread and Honeycomb in Google
Play services?



The Gingerbread platform is almost six years old. Many Android developers have
already discontinued support for Gingerbread in their apps. This helps them
build better apps that make use of the newer capabilities of the Android
platform. For us, the situation is the same. By making this change, we will be
able to provide a more robust collection of tools for Android developers with
greater speed.


What this means for your Android app that uses Google Play services or
Firebase:



You may use version 10.0.0 of Google Play services and Firebase as you are
currently. It will continue to work with Gingerbread devices as it has in the
past.



When you choose to upgrade to the future version 10.2.0, and if your app
minimally supports API level 14 or greater (typically specified as
"minSdkVersion" in your build.gradle), you will not encounter any versioning
problems. However, if your app supports lower than API level 14, you will
encounter a problem at build time with an error that looks like this:


class="prettyprint">Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : uses-sdk:minSdkVersion 9 cannot be smaller than version 14 declared in library [com.google.android.gms:play-services:10.2.0]
Suggestion: use tools:overrideLibrary="com.google.android.gms:play_services" to force usage


Unfortunately, the stated suggestion will not help you successfully run your app
on older devices. In order to use Google Play services 10.2.0 and later, you
can choose one of the following options:


1. Target API level 14 as the minimum supported API level.



This is the recommended course of action. To discontinue support for API levels
that will no longer receive Google Play services updates, simply increase the
minSdkVersion value in your app's build.gradle to at least 14. If you update
your app in this way and publish it to the Play Store, users of devices with
less than that level of support will not be able to see or download the update.
However, they will still be able to download and use the most recently published
version of the app that does target their device.



A very small percentage of all Android devices are using API levels less than
14. You can href="https://developer.android.com/about/dashboards/index.html?utm_campaign=firebase_discussion_apilevel_112116&utm_source=anddev&utm_medium=blog">read more about
the current distribution of Android devices. We believe that many of these
old devices are not actively being used.



If your app still has a significant number of users on older devices, you can
use multiple APK support in Google Play to deliver an APK that uses Google Play
services 10.0.0. This is described below.


2. Build multiple APKs to support devices with an API level less than
14.



Along with some configuration and code management, you can href="https://developer.android.com/training/multiple-apks/api.html?utm_campaign=firebase_discussion_apilevel_112116&utm_source=anddev&utm_medium=blog">build
multiple APKs that support different minimum API levels, with different
versions of Google Play services. You can accomplish this with href="https://developer.android.com/studio/build/build-variants.html?utm_campaign=firebase_discussion_apilevel_112116&utm_source=anddev&utm_medium=blog">build
variants in Gradle. First, define build flavors for legacy and newer
versions of your app. For example, in your build.gradle, define two different
product flavors, with two different compile dependencies for the components of
Play Services you're using:


class="prettyprint">productFlavors {
legacy {
minSdkVersion 9
versionCode 901 // Min API level 9, v01
}
current {
minSdkVersion 14
versionCode 1401 // Min API level 14, v01
}
}

dependencies {
legacyCompile 'com.google.android.gms:play-services:10.0.0'
currentCompile 'com.google.android.gms:play-services:10.2.0'
}


In the above situation, there are two product flavors being built against two
different versions of the Google Play services client libraries. This will work
fine if only APIs are called that are available in the 10.0.0 library. If you
need to call newer APIs made available with 10.2.0, you will have to create a
compatibility library for the newer API calls so that they are only built into
the version of the application that can use them:


  • Declare a Java interface that exposes the higher-level functionality you
    want to perform that is only available in current versions of Play services.
  • Build two Android libraries that implement that interface. The "current"
    implementation should call the newer APIs as desired. The "legacy"
    implementation should no-op or otherwise act as desired with older versions of
    Play services. The interface should be added to both libraries.
  • Conditionally compile each library into the app using "legacyCompile" and
    "currentCompile" dependencies.
  • In the app's code, call through to the compatibility library whenever newer
    Play APIs are required.


After building a release APK for each flavor, you then publish them both to the
Play Store, and the device will update with the most appropriate version for
that device. Read more about href="https://developer.android.com/google/play/publishing/multiple-apks.html?utm_campaign=firebase_discussion_apilevel_112116&utm_source=anddev&utm_medium=blog">multiple
APK support in the Play Store.



Adding TV Channels to Your App with the TIF Companion Library


Posted by Nick Felker and href="http://google.com/+SachitMishraDeveloper">Sachit Mishra, Developer
Programs Engineers



The TV
Input Framework (TIF)
on Android TV makes it easy for third-party app
developers to create their own TV channels with any type of linear media. It
introduces a new way for apps to engage with users with a high-quality channel
surfing experience, and it gives users a single interface to browse and watch
all of their channels.



To help developers get started with building TV channels, we have created the href="http://github.com/googlesamples/androidtv-sample-inputs">TV Input
Framework Companion Library, which includes a number of helper methods and
classes to make the development process as easy as possible.



This library provides standard classes to set up a background task that updates
the program guide and an interface that helps integrate your media player with
the playback controller, as well as supports the new TV Recording APIs that are
available in Android Nougat. It includes everything you need to start showing
your content on your Android TV's live TV app.




(Note: href="https://github.com/googlesamples/androidtv-sample-inputs">source from
href="https://github.com/googlesamples/androidtv-sample-inputs">android-tv-sample-inputs
sample)



To get started, take a look at the href="https://github.com/googlesamples/androidtv-sample-inputs">sample app
and href="https://developer.android.com/training/tv/tif/index.html?utm_campaign=android tv_discussion_tif_110916&utm_source=anddev&utm_medium=blog">documentation.
The sample demonstrates how to extend this library to create custom channels and
manage video playback. Developers can immediately get started with the sample
app by updating the href="https://github.com/googlesamples/androidtv-sample-inputs/blob/master/app/src/main/res/raw/rich_tv_input_xmltv_feed.xml">XMLTV
file with their own content or dynamically creating channels in the href="https://github.com/googlesamples/androidtv-sample-inputs/blob/master/app/src/main/java/com/example/android/sampletvinput/SampleJobService.java">SampleJobService.



You can include this library in your app by copying the library
directory from the sample into your project root directory. Then, add the
following to your project's settings.gradle file:


include ':library'


In your app's build.gradle file, add the following to your
dependencies:


compile project(':library')


Android TV continues to grow, and whether your app has on-demand or live media,
TIF is a great way to keep users engaged with your content. One partner for
example, Haystack TV, recently integrated TIF into their app and it now accounts
for 16% of watch time for new users on Android TV.



Check out our TV developer
site
to learn more about Android TV, and join our developer community on
Google+ at g.co/androidtvdev to discuss
this library and other topics with TV developers.



Android Developer Stories: drupe and Noom expand globally by localising their apps on Google Play


Posted by Kacey Fahey, Marketing Programs Manager, Google Play



Interested in growing your app on a global scale? See how two app developers
localized their apps in unique ways to drive revenue and user engagement.



drupe



href="https://play.google.com/store/apps/details?id=mobi.drupe.app&hl=en&e=-EnableAppDetailsPageRedesign">drupe
is a communications app that utilizes the openness of android to build a truly
native experience delivering highly contextual recommendations to their users
across the world.



Key to achieving international growth, drupe has translated their app in 17
languages, and their store listing page in 28 languages. This led to an increase
in conversion and retention rates. Additionally, when entering India, the team
noticed several user reviews requesting integration with a specific messaging
app widely used in the Indian market. Through a combination of this integration,
adding Hindi language translation, and other new features, drupe saw improved
performance. In six months, daily active users increased 300%, and actions per
average daily user increased 25% in the Indian market.



Noom



href="https://play.google.com/store/apps/details?id=com.wsl.noom&hl=en&e=-EnableAppDetailsPageRedesign">Noom
is a health & fitness app that has achieved an 80% increase in international
revenue growth on Android over the past three years by localizing their app with
unique cultural behaviors, cuisines, and local-market coaches.



In addition to translating their app and store listing page, Noom conducted
extensive analysis to determine the right financial model tailored to each
international market. This included evaluation of their competitive landscape
and local health and wellness spending behavior, in addition to running pricing
experiments to determine the optimal offering between subscriptions, IAPs, or a
premium app.



Use the href="https://developer.android.com/distribute/tools/localization-checklist.html?utm_campaign=android_discussion_drupeandnoom_102016&utm_source=anddev&utm_medium=blog">Localization
Checklist to learn more about tailoring your app for different markets to
drive installs and revenue, and to create a better overall user experience.
Also, get the href="http://g.co/play/playbook-androiddevblogposts-evergreen">Playbook for
Developers app to stay up-to-date on new features and learn best practices
that will help you grow a successful business on Google Play.



Read the full articles for href="https://developer.android.com/distribute/stories/apps/drupe-communications.html?utm_campaign=android_discussion_drupeandnoom_102016&utm_source=anddev&utm_medium=blog">drupe
and href="https://developer.android.com/distribute/stories/apps/noom-health.html?utm_campaign=android_discussion_drupeandnoom_102016&utm_source=anddev&utm_medium=blog">Noom.



Extending Web Technology with Android


Developer guest post by Active Theory



Paper Planes started as a simple thought - “What if you could throw a
paper plane from one screen to another?”



The heart of our concept was to bring people together from all over the world,
using the power of the web - an instant connection to one another. Modern web
technology, specifically JavaScript and WebGL, powered the experience on every
screen.



href="https://play.google.com/store/apps/details?id=net.activetheory.paperplanes">Paper
Planes
was initially featured at Google I/O 2016, connecting attendees
and outside viewers for 30 minutes preceding the keynote. For the public launch
on International Peace Day 2016, we created an href="https://www.androidexperiments.com/experiment/paper-planes">Android
Experiment, which is also featured on href="https://play.google.com/store/apps/details?id=net.activetheory.paperplanes">Google
Play, to augment the existing web technology with native Android Nougat
features such as rich notifications when a plane is caught elsewhere in the
world.



Introduction



Users create and fold their own plane while adding a stamp that is pre-filled
with their location. A simple throwing gesture launches the plane into the
virtual world. Users visiting the desktop website would see their planes flying
into the screen.






Later, users can check back and see where their planes have been caught around
the world. Each stamp on the plane reads like a passport, and a 3D Earth
highlights flightpath and distance travelled.



In addition to making their own planes, users can gesture their phone like a net
to catch a plane that has been thrown from elsewhere and pinch to open it,
revealing where it has visited. Then they can add their own stamp, and throw it
back into the flock.



WebView



We developed Paper Planes to work across devices ranging from the 50-foot screen
on stage at Google I/O to desktop and mobile using the latest in web technology.



WebGL



From the stylized low-poly Earth to the flocking planes, WebGL is used to render
the 3D elements that power the experience. We wrote custom GLSL shaders to light
the Earth and morph targets to animate the paper as the user pinches to open or
close.






WebSockets



When a user “throws” a plane a message is sent over websockets to the back-end
servers where it is relayed to all desktop computers to visualize the plane
taking off.






WebWorkers



The plane flocking simulation is calculated across multiple threads using
WebWorkers that calculate the position of each plane and relay that information
back to the main thread to be rendered by WebGL.






To create an experience that works great across platforms, we extended the web
with native Android code. This enabled us to utilize the deep integration of
Chromium within Android to make the view layer of the application with the web
code that already existed, while adding deeper integration with the OS such as
rich notifications and background services.



If you’re interested in learning more about how to bridge WebView and Java code,
check
out this GitHub repo for a tutorial
.



Notifications



Firebase Cloud Messaging (FCM) was used to send push notifications to the
Android app. When a user’s plane has been caught and thrown by someone else, a
notification showing how many cities and miles it has travelled is sent to the
device of the plane’s creator via FCM. Outgoing notifications are managed to
ensure they are not sent too frequently to a device.



Background Service



We implemented a background service to run once a day which checks against local
storage to determine when a user last visited the app. If the user hasn’t
visited in over two weeks, the app sends a notification to invite the user back
into the app to create a new plane.



The Communication Network



Our application runs on a network of servers on Google Cloud Platform. We used
built-in geocoding headers to get approximate geographic locations for stamps
and Socket.IO to connect all devices over WebSockets.



Users connect to the server nearest them, which relays messages to a single main
server as well as to any desktop computers viewing the experience in that
region.



Moving forward



This approach worked extremely well for us, enabling an experience that was
smooth and captivating across platforms and form factors, connecting people from
all over the world. Extending the web with native capabilities has proven to be
a valuable avenue to deliver high quality experiences going forward. You can
learn even more on the href="https://www.androidexperiments.com/experiment/paper-planes">Android
Experiments website.