Implementing Android’s new Activity Recognition Transition API
Github repo: https://github.com/Bethel-Eyo/Transitions
What you will learn:
In this tutorial, you will learn the following:
- Set up the Recognition Transition API Library
- Register for Updates
- Process Events
- De-register Updates
- Review the code
Requirements
For this tutorial, you will need the following :
- A PC (Personal Computer) with any operating such as Windows OS, Linux and MAC OSX
- An Integrated Development Environment such as Android Studio or any other IDE powered by IntelliJ for ease of coding
- Internet Access
- Basic Knowledge of Java, XML and how to navigate through the IDE of choice.
Difficulty
Intermediate
Overview
The provision for Mobile development on new Smart phones has helped to aid slick innovative technologies that has helped to better the lives of individuals. Our mobile devices have become indispensable in our daily activities, we basically take it everywhere we go; but until now it has been difficult for apps to adjust their experience to a user’s continually changing environment and activity.
Activity transition API helps to solve this problem by providing a simple API that does all the processing for you and provides you with information that is specific to your needs. This tutorial shows you how to properly integrate this feature into your android app.
Step 1: Getting Started
To integrate the Transition API into your app, you are required to declare a dependency
1. To make the Google Play services APIs available to your app.
- Open the
build.gradle
file inside your application module directory, - Add a new build new rule under dependencies for the latest version of the
play-services
, as of this tutorial I usedcom.google.android.gms:play-services-location:15.0.1
. - Add this
maven { url "https://maven.google.com" }
reference to your top-levelbuild.gradle
file. - Save the changes and sync the project with the gradle files.
2. Add a new permission to your AndroidManifest.xml file as shown below
To view the manifest file. Click here
Step 2: Register for updates
In order to get notified on activity transitions, you are required to implement an ActivityTransitionRequest (to specify the type of activity and transition) and a PendingIntent callback for receiving notifications.
To create an ActivityTransitionRequest object, you have to create a list of ActivityTransition
objects which will serve as a representation of the transition that you want to be notified about.
Transition types include:
- ACTIVITY_TRANSITION_ENTER
- ACTIVITY_TRANSITION_EXIT
To know more about Activity Transitions, click here
Transition APIs support the following activities
- IN_VEHICLE
- ON_VEHICLE
- RUNNING
- STILL
- WORKING
To know more about these activities, click here
Here is a screenshot of how i created a list of ActivityTransitionObjects
in my Transitions Android App
To view the activity from which I created the list of activity objects, click here.
Then you create can ActivityTransitionRequest
object by passing in the list of transitions into the ActivityTransitionRequest
class as shown below;
ActivityTransitionRequest request = new ActivityTransitionRequest(transitions);
You can also register for updates in activity transitions by passing in the instance of AcitvityTransitionrequest
and your PendingIntent object to the requestActivityTransitionUpdates method which then returns a Task object which in turn helps you to check for for success or failure as shown in the code below;
Task<Void> task =
ActivityRecognition.getClient(this)
.requestActivityTransitionUpdates(request, mPendingIntent);
task.addOnSuccessListener(
new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void result) {
Log.i(TAG, "Transitions Api was successfully registered.");
}
});
task.addOnFailureListener(
new OnFailureListener() {
@Override
public void onFailure(Exception e) {
Log.e(TAG, "Transitions Api could not be registered: " + e);
}
});
}
After for activity transition updates successfully, the app begins to receive notifications in the registered PendingIntent.
Step 3: Process Events
On the occurrence of the activity transition, an intent callback is received. An ActivityTransitionResult
object can be extracted from the intent and this will include a list of ActivityTransitionEvent
objects. The events are ordered in a timely manner. For instance, if an app makes a request for the IN_VEHICLE
activity type on the ACTIVITY_TRANSITION_ENTER
and ACTIVITY_TRANSITION_EXIT
transitions, then an ActivityTransitionEvent
is received when the user starts driving, and another when the user transits to any other activity.
The callback can be implemented by creating a BroadcastReceiver and implementing the onReceive()
method. as shown in the screenshot below
Click here to view the file in which this was implemented
Step 4: De-register Updates
After all the processes has been achieved and all activity transitions have been rightly implemented, you can de-register for activity transition updates by calling the removeActivityTransitionUpdates() method, of the ActivityRecognitionClient and passing in the PendingIntent
object as the parameter as shown in the code below
Task<Void> task =
ActivityRecognition.getClient(context).removeActivityTransitionUpdates(myPendingIntent);
task.addOnSuccessListener(
new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void result) {
myPendingIntent.cancel();
}
});
task.addOnFailureListener(
new OnFailureListener() {
@Override
public void onFailure(Exception e) {
Log.e("MYCOMPONENT", e.getMessage());
}
});
Step 5: Review the code
A Basic Android app was implemented to better describe how the Activity Transition API can be implemented and how its features can be effectively utilized. To get a better understanding you can clone the repo with this link to your local machine see how it has been implemented and work through the code.
Proof of work done
I hope Android developers find this tutorial helpful and get to work on implementing this new and amazing feature that makes activity transition detection smooth and easy. You can access the complete code for this tutorial on my github repo
The apk of the app can also be downloaded here
Due to the above note by @portugalcoin, you have been banned temporarily from receiving Utopian reviews due to your plagiarism.
Need help? Write a ticket on https://support.utopian.io/.
Chat with us on Discord.
[utopian-moderator]
Thank you for your contribution.
Your contribution will not be rewarded for the following reasons:
Need help? Write a ticket on https://support.utopian.io/.
Chat with us on Discord.
[utopian-moderator]
Thanks @portugalcoin. The tutorial is almost like mine. But i rightly implemented it. In which they didn't. And i made a few tweaks to suit my implementation in the Transitions Android app. In which can help people understand better
Congratulations @betheleyo! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Vote for @Steemitboard as a witness to get one more award and increased upvotes!