diff --git a/servicetracker/1.2/IActivityEventInfoCallback.hal b/servicetracker/1.2/IActivityEventInfoCallback.hal
new file mode 100644
index 0000000..16ae469
--- /dev/null
+++ b/servicetracker/1.2/IActivityEventInfoCallback.hal
@@ -0,0 +1,34 @@
+/*
+* Copyright (c) 2020 The Linux Foundation. All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are
+* met:
+*    * Redistributions of source code must retain the above copyright
+*      notice, this list of conditions and the following disclaimer.
+*    * Redistributions in binary form must reproduce the above
+*      copyright notice, this list of conditions and the following
+*      disclaimer in the documentation and/or other materials provided
+*      with the distribution.
+*    * Neither the name of The Linux Foundation. nor the names of its
+*      contributors may be used to endorse or promote products derived
+*      from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+* ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+package vendor.qti.hardware.servicetracker@1.2;
+
+interface IActivityEventInfoCallback {
+    oneway notifyActivityEvent(ActivityStates aState, ActivityDetails aDetails, ActivityStats aStats, bool early_notify, int32_t userdata);
+};
diff --git a/servicetracker/1.2/IServicetracker.hal b/servicetracker/1.2/IServicetracker.hal
new file mode 100644
index 0000000..d7d4940
--- /dev/null
+++ b/servicetracker/1.2/IServicetracker.hal
@@ -0,0 +1,81 @@
+/*
+* Copyright (c) 2019-2020 The Linux Foundation. All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are
+* met:
+*    * Redistributions of source code must retain the above copyright
+*      notice, this list of conditions and the following disclaimer.
+*    * Redistributions in binary form must reproduce the above
+*      copyright notice, this list of conditions and the following
+*      disclaimer in the documentation and/or other materials provided
+*      with the distribution.
+*    * Neither the name of The Linux Foundation. nor the names of its
+*      contributors may be used to endorse or promote products derived
+*      from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+* ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+package vendor.qti.hardware.servicetracker@1.2;
+
+import @1.1::IServicetracker;
+import @1.0::types;
+import IActivityEventInfoCallback;
+
+interface IServicetracker extends @1.1::IServicetracker {
+    /**
+     * Register a callback for any activity lifecycle events.
+     *
+     * Registering a new callback must not unregister the old one; the old
+     * callback remains registered until one of the following happens:
+     * - client explicitly calls {@link unregisterCallback} to unregister it.
+     * - The client process that hosts the callback dies.
+     *
+     * @param callback the callback to register.
+     * @param aNotify Type of notification client wants to listen for.
+     * @param userdata userdata passed by client when registered
+     * @return result SUCCESS if successful,
+                      CALLBACK_EXIST if callback is already registered,
+                      ERROR_INVALID_ARGS if invalid callback tries to register,
+     *                UNKNOWN for other errors.
+     */
+    registerCallback(IActivityEventInfoCallback callback, NotifyType aNotify, int32_t userdata) generates (Status result);
+
+
+    /**
+     * Explicitly unregister a callback that is previously registered through
+     * {@link registerCallback}.
+     *
+     * @param callback the callback to unregister
+     * @return result SUCCESS if successful,
+     *                NOT_FOUND if callback is not registered previously,
+     *                UNKNOWN for other errors.
+     */
+    unregisterCallback(IActivityEventInfoCallback callback) generates (Status result);
+
+    /**
+     * Get notified whenever there is a change in activity state in ActivityManagerService
+     *
+     * @param aState New state attained by activity
+     * @param aDetails Information associated with an activity with every state change.
+     * @param aStats activity's statistics w.r.t it's create time, no. of launch etc.
+     * @param early_notify If notification is received as a part of early notification.
+     * @return result SUCCESS if successful,
+     *                UNKNOWN for other errors.
+     */
+    oneway OnActivityStateChange(ActivityStates aState, ActivityDetails aDetails, ActivityStats aStats, bool early_notify);
+
+};
+
+
diff --git a/servicetracker/1.2/types.hal b/servicetracker/1.2/types.hal
new file mode 100644
index 0000000..320f5a0
--- /dev/null
+++ b/servicetracker/1.2/types.hal
@@ -0,0 +1,87 @@
+/*
+* Copyright (c) 2020 The Linux Foundation. All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are
+* met:
+*    * Redistributions of source code must retain the above copyright
+*      notice, this list of conditions and the following disclaimer.
+*    * Redistributions in binary form must reproduce the above
+*      copyright notice, this list of conditions and the following
+*      disclaimer in the documentation and/or other materials provided
+*      with the distribution.
+*    * Neither the name of The Linux Foundation. nor the names of its
+*      contributors may be used to endorse or promote products derived
+*      from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+* ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+package vendor.qti.hardware.servicetracker@1.2;
+
+import @1.0::Status;
+
+enum Status : @1.0::Status {
+    CALLBACK_EXIST,
+    CALLBACK_DIED,
+};
+
+/**
+* Activity details provided by ActivityManagerServices
+*/
+struct ActivityDetails {
+    int32_t launchedFromPid;
+    int32_t launchedFromUid;
+    string packageName;
+    string processName;
+    string intent;
+    string className;
+    int32_t versioncode;
+};
+
+/**
+* Activity events related statists from AMS
+*/
+struct ActivityStats {
+    int64_t createTime;
+    int64_t lastVisibleTime;
+    int32_t launchCount;
+    int64_t lastLaunchTime;
+};
+
+/**
+*Enum values indicating the various activity states
+*/
+enum ActivityStates : int32_t {
+    INITIALIZING,
+    STARTED,
+    RESUMED,
+    PAUSING,
+    PAUSED,
+    STOPPING,
+    STOPPED,
+    FINISHING,
+    DESTROYING,
+    DESTROYED,
+    RESTARTING_PROCESS,
+    UNKNOWN,
+};
+
+/**
+*Enum values indicatiing notification type
+*/
+enum NotifyType : int32_t {
+    EARLY = 0,
+    LATE = 1,
+    BOTH = 2,
+};
diff --git a/servicetracker/current.txt b/servicetracker/current.txt
index 49922dc..ff4c089 100644
--- a/servicetracker/current.txt
+++ b/servicetracker/current.txt
@@ -1,4 +1,4 @@
-# Copyright (c) 2019, The Linux Foundation. All rights reserved.
+# Copyright (c) 2019-2020, The Linux Foundation. All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
 # modification, are permitted provided that the following conditions are
@@ -34,3 +34,8 @@
 
 ######HAL released in Android Q######
 e1112e99ed844f2e3d9d653acc818391dc0470b810704f59928b021a11eca675 vendor.qti.hardware.servicetracker@1.1::IServicetracker
+
+######HAL released in Android R######
+b21a4655232991b5121fc0c86522bdb76f8d519540deac62c85de5b7315a3e55 vendor.qti.hardware.servicetracker@1.2::types
+75c7c3e72c2efa195b743d1395dd3ea6ef96761a8503392f945d2f691ea0d2d0 vendor.qti.hardware.servicetracker@1.2::IActivityEventInfoCallback
+dc8389391ce48795d11717f6973f8e92a1f660fd6d5bc60e5de8ae19c1d16103 vendor.qti.hardware.servicetracker@1.2::IServicetracker
