diff --git a/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt b/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt
index 419c479..fbea9d9 100644
--- a/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt
@@ -127,6 +127,7 @@
     val WEAR = Version("1.2.0-alpha05")
     val WEAR_COMPLICATIONS = Version("1.0.0-alpha05")
     val WEAR_INPUT = Version("1.1.0-alpha01")
+    val WEAR_ONGOING = Version("1.0.0-alpha01")
     val WEAR_PHONE_INTERACTIONS = Version("1.0.0-alpha01")
     val WEAR_REMOTE_INTERACTIONS = Version("1.0.0-alpha01")
     val WEAR_TILES = Version("1.0.0-alpha01")
diff --git a/docs-tip-of-tree/build.gradle b/docs-tip-of-tree/build.gradle
index 892e2a3..146b6ca 100644
--- a/docs-tip-of-tree/build.gradle
+++ b/docs-tip-of-tree/build.gradle
@@ -232,6 +232,7 @@
     docs(project(":wear:wear-complications-provider"))
     docs(project(":wear:wear-input"))
     docs(project(":wear:wear-input-testing"))
+    docs(project(":wear:wear-ongoing"))
     docs(project(":wear:wear-phone-interactions"))
     docs(project(":wear:wear-remote-interactions"))
     docs(project(":wear:wear-watchface"))
diff --git a/jetifier/jetifier/migration.config b/jetifier/jetifier/migration.config
index 80c658a..b1fec51 100644
--- a/jetifier/jetifier/migration.config
+++ b/jetifier/jetifier/migration.config
@@ -2319,6 +2319,18 @@
     {
       "from": {
         "groupId": "androidx.wear",
+        "artifactId": "wear-ongoing",
+        "version": "{newSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.wear",
+        "artifactId": "wear-ongoing",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "androidx.wear",
         "artifactId": "wear-phone-interactions",
         "version": "{newSlVersion}"
       },
diff --git a/settings.gradle b/settings.gradle
index df6e08b..a7f2b13 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -506,6 +506,7 @@
 includeProject(":wear:wear-complications-provider-samples", "wear/wear-complications-provider/samples", [BuildType.MAIN])
 includeProject(":wear:wear-input", "wear/wear-input", [BuildType.MAIN])
 includeProject(":wear:wear-input-testing", "wear/wear-input-testing", [BuildType.MAIN])
+includeProject(":wear:wear-ongoing", "wear/wear-ongoing", [BuildType.MAIN])
 includeProject(":wear:wear-phone-interactions", "wear/wear-phone-interactions", [BuildType.MAIN])
 includeProject(":wear:wear-remote-interactions", "wear/wear-remote-interactions", [BuildType.MAIN])
 includeProject(":wear:wear-tiles", "wear/wear-tiles", [BuildType.MAIN])
diff --git a/wear/wear-ongoing/api/current.txt b/wear/wear-ongoing/api/current.txt
new file mode 100644
index 0000000..e63ef6f
--- /dev/null
+++ b/wear/wear-ongoing/api/current.txt
@@ -0,0 +1,62 @@
+// Signature format: 4.0
+package androidx.wear.ongoing {
+
+  @RequiresApi(24) public final class OngoingActivity {
+    method public void apply(android.content.Context);
+    method public static androidx.wear.ongoing.OngoingActivity? fromExistingOngoingActivity(android.content.Context, java.util.function.Predicate<androidx.wear.ongoing.OngoingActivityData!>);
+    method public static androidx.wear.ongoing.OngoingActivity? fromExistingOngoingActivity(android.content.Context);
+    method public static androidx.wear.ongoing.OngoingActivity? fromExistingOngoingActivity(android.content.Context, int);
+    method public void update(android.content.Context, androidx.wear.ongoing.OngoingActivityStatus);
+  }
+
+  public static final class OngoingActivity.Builder {
+    ctor public OngoingActivity.Builder(android.content.Context, int, androidx.core.app.NotificationCompat.Builder);
+    method public androidx.wear.ongoing.OngoingActivity build();
+    method public androidx.wear.ongoing.OngoingActivity.Builder setAnimatedIcon(android.graphics.drawable.Icon);
+    method public androidx.wear.ongoing.OngoingActivity.Builder setAnimatedIcon(@DrawableRes int);
+    method public androidx.wear.ongoing.OngoingActivity.Builder setCategory(String);
+    method public androidx.wear.ongoing.OngoingActivity.Builder setLocusId(androidx.core.content.LocusIdCompat);
+    method public androidx.wear.ongoing.OngoingActivity.Builder setOngoingActivityId(int);
+    method public androidx.wear.ongoing.OngoingActivity.Builder setStaticIcon(android.graphics.drawable.Icon);
+    method public androidx.wear.ongoing.OngoingActivity.Builder setStaticIcon(@DrawableRes int);
+    method public androidx.wear.ongoing.OngoingActivity.Builder setStatus(androidx.wear.ongoing.OngoingActivityStatus);
+    method public androidx.wear.ongoing.OngoingActivity.Builder setTouchIntent(android.app.PendingIntent);
+  }
+
+  public class OngoingActivityData implements androidx.versionedparcelable.VersionedParcelable {
+    method public static androidx.wear.ongoing.OngoingActivityData? create(android.app.Notification);
+    method public android.graphics.drawable.Icon? getAnimatedIcon();
+    method public String? getCategory();
+    method public androidx.core.content.LocusIdCompat? getLocusId();
+    method public int getOngoingActivityId();
+    method public android.graphics.drawable.Icon getStaticIcon();
+    method public androidx.wear.ongoing.OngoingActivityStatus? getStatus();
+    method public long getTimestamp();
+    method public android.app.PendingIntent getTouchIntent();
+    method public static boolean hasOngoingActivity(android.app.Notification);
+  }
+
+  public class OngoingActivityStatus implements androidx.versionedparcelable.VersionedParcelable {
+    method public long getNextChangeTimeMillis(long);
+    method public CharSequence getText(android.content.Context, long);
+  }
+
+  public class TextOngoingActivityStatus extends androidx.wear.ongoing.OngoingActivityStatus {
+    ctor public TextOngoingActivityStatus(String);
+  }
+
+  public class TimerOngoingActivityStatus extends androidx.wear.ongoing.OngoingActivityStatus {
+    ctor public TimerOngoingActivityStatus(long, boolean, long, long);
+    ctor public TimerOngoingActivityStatus(long, boolean, long);
+    ctor public TimerOngoingActivityStatus(long, boolean);
+    ctor public TimerOngoingActivityStatus(long);
+    method public long getPausedAtMillis();
+    method public long getTimeZeroMillis();
+    method public long getTotalDurationMillis();
+    method public boolean hasTotalDuration();
+    method public boolean isCountDown();
+    method public boolean isPaused();
+  }
+
+}
+
diff --git a/wear/wear-ongoing/api/public_plus_experimental_current.txt b/wear/wear-ongoing/api/public_plus_experimental_current.txt
new file mode 100644
index 0000000..c0626ed
--- /dev/null
+++ b/wear/wear-ongoing/api/public_plus_experimental_current.txt
@@ -0,0 +1,62 @@
+// Signature format: 4.0
+package androidx.wear.ongoing {
+
+  @RequiresApi(24) public final class OngoingActivity {
+    method public void apply(android.content.Context);
+    method public static androidx.wear.ongoing.OngoingActivity? fromExistingOngoingActivity(android.content.Context, java.util.function.Predicate<androidx.wear.ongoing.OngoingActivityData!>);
+    method public static androidx.wear.ongoing.OngoingActivity? fromExistingOngoingActivity(android.content.Context);
+    method public static androidx.wear.ongoing.OngoingActivity? fromExistingOngoingActivity(android.content.Context, int);
+    method public void update(android.content.Context, androidx.wear.ongoing.OngoingActivityStatus);
+  }
+
+  public static final class OngoingActivity.Builder {
+    ctor public OngoingActivity.Builder(android.content.Context, int, androidx.core.app.NotificationCompat.Builder);
+    method public androidx.wear.ongoing.OngoingActivity build();
+    method public androidx.wear.ongoing.OngoingActivity.Builder setAnimatedIcon(android.graphics.drawable.Icon);
+    method public androidx.wear.ongoing.OngoingActivity.Builder setAnimatedIcon(@DrawableRes int);
+    method public androidx.wear.ongoing.OngoingActivity.Builder setCategory(String);
+    method public androidx.wear.ongoing.OngoingActivity.Builder setLocusId(androidx.core.content.LocusIdCompat);
+    method public androidx.wear.ongoing.OngoingActivity.Builder setOngoingActivityId(int);
+    method public androidx.wear.ongoing.OngoingActivity.Builder setStaticIcon(android.graphics.drawable.Icon);
+    method public androidx.wear.ongoing.OngoingActivity.Builder setStaticIcon(@DrawableRes int);
+    method public androidx.wear.ongoing.OngoingActivity.Builder setStatus(androidx.wear.ongoing.OngoingActivityStatus);
+    method public androidx.wear.ongoing.OngoingActivity.Builder setTouchIntent(android.app.PendingIntent);
+  }
+
+  @androidx.versionedparcelable.VersionedParcelize public class OngoingActivityData implements androidx.versionedparcelable.VersionedParcelable {
+    method public static androidx.wear.ongoing.OngoingActivityData? create(android.app.Notification);
+    method public android.graphics.drawable.Icon? getAnimatedIcon();
+    method public String? getCategory();
+    method public androidx.core.content.LocusIdCompat? getLocusId();
+    method public int getOngoingActivityId();
+    method public android.graphics.drawable.Icon getStaticIcon();
+    method public androidx.wear.ongoing.OngoingActivityStatus? getStatus();
+    method public long getTimestamp();
+    method public android.app.PendingIntent getTouchIntent();
+    method public static boolean hasOngoingActivity(android.app.Notification);
+  }
+
+  @androidx.versionedparcelable.VersionedParcelize public class OngoingActivityStatus implements androidx.versionedparcelable.VersionedParcelable {
+    method public long getNextChangeTimeMillis(long);
+    method public CharSequence getText(android.content.Context, long);
+  }
+
+  @androidx.versionedparcelable.VersionedParcelize public class TextOngoingActivityStatus extends androidx.wear.ongoing.OngoingActivityStatus {
+    ctor public TextOngoingActivityStatus(String);
+  }
+
+  @androidx.versionedparcelable.VersionedParcelize public class TimerOngoingActivityStatus extends androidx.wear.ongoing.OngoingActivityStatus {
+    ctor public TimerOngoingActivityStatus(long, boolean, long, long);
+    ctor public TimerOngoingActivityStatus(long, boolean, long);
+    ctor public TimerOngoingActivityStatus(long, boolean);
+    ctor public TimerOngoingActivityStatus(long);
+    method public long getPausedAtMillis();
+    method public long getTimeZeroMillis();
+    method public long getTotalDurationMillis();
+    method public boolean hasTotalDuration();
+    method public boolean isCountDown();
+    method public boolean isPaused();
+  }
+
+}
+
diff --git a/wear/wear-ongoing/api/res-current.txt b/wear/wear-ongoing/api/res-current.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/wear/wear-ongoing/api/res-current.txt
diff --git a/wear/wear-ongoing/api/restricted_current.txt b/wear/wear-ongoing/api/restricted_current.txt
new file mode 100644
index 0000000..c0626ed
--- /dev/null
+++ b/wear/wear-ongoing/api/restricted_current.txt
@@ -0,0 +1,62 @@
+// Signature format: 4.0
+package androidx.wear.ongoing {
+
+  @RequiresApi(24) public final class OngoingActivity {
+    method public void apply(android.content.Context);
+    method public static androidx.wear.ongoing.OngoingActivity? fromExistingOngoingActivity(android.content.Context, java.util.function.Predicate<androidx.wear.ongoing.OngoingActivityData!>);
+    method public static androidx.wear.ongoing.OngoingActivity? fromExistingOngoingActivity(android.content.Context);
+    method public static androidx.wear.ongoing.OngoingActivity? fromExistingOngoingActivity(android.content.Context, int);
+    method public void update(android.content.Context, androidx.wear.ongoing.OngoingActivityStatus);
+  }
+
+  public static final class OngoingActivity.Builder {
+    ctor public OngoingActivity.Builder(android.content.Context, int, androidx.core.app.NotificationCompat.Builder);
+    method public androidx.wear.ongoing.OngoingActivity build();
+    method public androidx.wear.ongoing.OngoingActivity.Builder setAnimatedIcon(android.graphics.drawable.Icon);
+    method public androidx.wear.ongoing.OngoingActivity.Builder setAnimatedIcon(@DrawableRes int);
+    method public androidx.wear.ongoing.OngoingActivity.Builder setCategory(String);
+    method public androidx.wear.ongoing.OngoingActivity.Builder setLocusId(androidx.core.content.LocusIdCompat);
+    method public androidx.wear.ongoing.OngoingActivity.Builder setOngoingActivityId(int);
+    method public androidx.wear.ongoing.OngoingActivity.Builder setStaticIcon(android.graphics.drawable.Icon);
+    method public androidx.wear.ongoing.OngoingActivity.Builder setStaticIcon(@DrawableRes int);
+    method public androidx.wear.ongoing.OngoingActivity.Builder setStatus(androidx.wear.ongoing.OngoingActivityStatus);
+    method public androidx.wear.ongoing.OngoingActivity.Builder setTouchIntent(android.app.PendingIntent);
+  }
+
+  @androidx.versionedparcelable.VersionedParcelize public class OngoingActivityData implements androidx.versionedparcelable.VersionedParcelable {
+    method public static androidx.wear.ongoing.OngoingActivityData? create(android.app.Notification);
+    method public android.graphics.drawable.Icon? getAnimatedIcon();
+    method public String? getCategory();
+    method public androidx.core.content.LocusIdCompat? getLocusId();
+    method public int getOngoingActivityId();
+    method public android.graphics.drawable.Icon getStaticIcon();
+    method public androidx.wear.ongoing.OngoingActivityStatus? getStatus();
+    method public long getTimestamp();
+    method public android.app.PendingIntent getTouchIntent();
+    method public static boolean hasOngoingActivity(android.app.Notification);
+  }
+
+  @androidx.versionedparcelable.VersionedParcelize public class OngoingActivityStatus implements androidx.versionedparcelable.VersionedParcelable {
+    method public long getNextChangeTimeMillis(long);
+    method public CharSequence getText(android.content.Context, long);
+  }
+
+  @androidx.versionedparcelable.VersionedParcelize public class TextOngoingActivityStatus extends androidx.wear.ongoing.OngoingActivityStatus {
+    ctor public TextOngoingActivityStatus(String);
+  }
+
+  @androidx.versionedparcelable.VersionedParcelize public class TimerOngoingActivityStatus extends androidx.wear.ongoing.OngoingActivityStatus {
+    ctor public TimerOngoingActivityStatus(long, boolean, long, long);
+    ctor public TimerOngoingActivityStatus(long, boolean, long);
+    ctor public TimerOngoingActivityStatus(long, boolean);
+    ctor public TimerOngoingActivityStatus(long);
+    method public long getPausedAtMillis();
+    method public long getTimeZeroMillis();
+    method public long getTotalDurationMillis();
+    method public boolean hasTotalDuration();
+    method public boolean isCountDown();
+    method public boolean isPaused();
+  }
+
+}
+
diff --git a/wear/wear-ongoing/build.gradle b/wear/wear-ongoing/build.gradle
new file mode 100644
index 0000000..084d70b
--- /dev/null
+++ b/wear/wear-ongoing/build.gradle
@@ -0,0 +1,43 @@
+import static androidx.build.dependencies.DependenciesKt.*
+import androidx.build.LibraryGroups
+import androidx.build.LibraryVersions
+import androidx.build.Publish
+
+plugins {
+    id("AndroidXPlugin")
+    id("com.android.library")
+    id("kotlin-android")
+}
+
+dependencies {
+    api("androidx.annotation:annotation:1.1.0")
+    api("androidx.core:core:1.5.0-alpha04")
+    api("androidx.versionedparcelable:versionedparcelable:1.1.1")
+
+    testImplementation(KOTLIN_STDLIB)
+    testImplementation(ANDROIDX_TEST_CORE)
+    testImplementation(ANDROIDX_TEST_RUNNER)
+    testImplementation(ROBOLECTRIC)
+
+    implementation "androidx.core:core-ktx:1.5.0-alpha04"
+
+    annotationProcessor(project(":versionedparcelable:versionedparcelable-compiler"))
+}
+
+android {
+    defaultConfig {
+        minSdkVersion 24
+    }
+
+    // Use Robolectric 4.+
+    testOptions.unitTests.includeAndroidResources = true
+}
+
+androidx {
+    name = "Android Wear Ongoing Activities"
+    publish = Publish.SNAPSHOT_AND_RELEASE
+    mavenGroup = LibraryGroups.WEAR
+    mavenVersion = LibraryVersions.WEAR_ONGOING
+    inceptionYear = "2021"
+    description = "Android Wear Ongoing Activities"
+}
diff --git a/wear/wear-ongoing/lint-baseline.xml b/wear/wear-ongoing/lint-baseline.xml
new file mode 100644
index 0000000..934e2aa
--- /dev/null
+++ b/wear/wear-ongoing/lint-baseline.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<issues format="5" by="lint 4.2.0-beta02" client="gradle" variant="debug" version="4.2.0-beta02">
+</issues>
+
diff --git a/wear/wear-ongoing/src/main/AndroidManifest.xml b/wear/wear-ongoing/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..0c985fa
--- /dev/null
+++ b/wear/wear-ongoing/src/main/AndroidManifest.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<manifest package="androidx.wear.ongoing"/>
+
diff --git a/wear/wear/src/main/java/androidx/wear/ongoingactivity/OngoingActivity.java b/wear/wear-ongoing/src/main/java/androidx/wear/ongoing/OngoingActivity.java
similarity index 100%
rename from wear/wear/src/main/java/androidx/wear/ongoingactivity/OngoingActivity.java
rename to wear/wear-ongoing/src/main/java/androidx/wear/ongoing/OngoingActivity.java
diff --git a/wear/wear/src/main/java/androidx/wear/ongoingactivity/OngoingActivityData.java b/wear/wear-ongoing/src/main/java/androidx/wear/ongoing/OngoingActivityData.java
similarity index 100%
rename from wear/wear/src/main/java/androidx/wear/ongoingactivity/OngoingActivityData.java
rename to wear/wear-ongoing/src/main/java/androidx/wear/ongoing/OngoingActivityData.java
diff --git a/wear/wear/src/main/java/androidx/wear/ongoingactivity/OngoingActivityStatus.java b/wear/wear-ongoing/src/main/java/androidx/wear/ongoing/OngoingActivityStatus.java
similarity index 100%
rename from wear/wear/src/main/java/androidx/wear/ongoingactivity/OngoingActivityStatus.java
rename to wear/wear-ongoing/src/main/java/androidx/wear/ongoing/OngoingActivityStatus.java
diff --git a/wear/wear/src/main/java/androidx/wear/ongoingactivity/TextOngoingActivityStatus.java b/wear/wear-ongoing/src/main/java/androidx/wear/ongoing/TextOngoingActivityStatus.java
similarity index 100%
rename from wear/wear/src/main/java/androidx/wear/ongoingactivity/TextOngoingActivityStatus.java
rename to wear/wear-ongoing/src/main/java/androidx/wear/ongoing/TextOngoingActivityStatus.java
diff --git a/wear/wear/src/main/java/androidx/wear/ongoingactivity/TimerOngoingActivityStatus.java b/wear/wear-ongoing/src/main/java/androidx/wear/ongoing/TimerOngoingActivityStatus.java
similarity index 100%
rename from wear/wear/src/main/java/androidx/wear/ongoingactivity/TimerOngoingActivityStatus.java
rename to wear/wear-ongoing/src/main/java/androidx/wear/ongoing/TimerOngoingActivityStatus.java
diff --git a/wear/wear/src/test/java/androidx/wear/ongoingactivitiy/OngoingActivityStatusTest.kt b/wear/wear-ongoing/src/test/java/androidx/wear/ongoing/OngoingActivityStatusTest.kt
similarity index 100%
rename from wear/wear/src/test/java/androidx/wear/ongoingactivitiy/OngoingActivityStatusTest.kt
rename to wear/wear-ongoing/src/test/java/androidx/wear/ongoing/OngoingActivityStatusTest.kt
diff --git a/wear/wear/src/test/java/androidx/wear/ongoingactivitiy/OngoingActivityTest.kt b/wear/wear-ongoing/src/test/java/androidx/wear/ongoing/OngoingActivityTest.kt
similarity index 100%
rename from wear/wear/src/test/java/androidx/wear/ongoingactivitiy/OngoingActivityTest.kt
rename to wear/wear-ongoing/src/test/java/androidx/wear/ongoing/OngoingActivityTest.kt
diff --git a/wear/wear/src/test/java/androidx/wear/ongoingactivitiy/PatchedRobolectricTestRunner.kt b/wear/wear-ongoing/src/test/java/androidx/wear/ongoing/PatchedRobolectricTestRunner.kt
similarity index 100%
rename from wear/wear/src/test/java/androidx/wear/ongoingactivitiy/PatchedRobolectricTestRunner.kt
rename to wear/wear-ongoing/src/test/java/androidx/wear/ongoing/PatchedRobolectricTestRunner.kt
diff --git a/wear/wear/api/current.txt b/wear/wear/api/current.txt
index e3cf16c..4df563b 100644
--- a/wear/wear/api/current.txt
+++ b/wear/wear/api/current.txt
@@ -78,67 +78,6 @@
 
 }
 
-package androidx.wear.ongoingactivity {
-
-  @RequiresApi(24) public final class OngoingActivity {
-    method public void apply(android.content.Context);
-    method public static androidx.wear.ongoingactivity.OngoingActivity? fromExistingOngoingActivity(android.content.Context, java.util.function.Predicate<androidx.wear.ongoingactivity.OngoingActivityData!>);
-    method public static androidx.wear.ongoingactivity.OngoingActivity? fromExistingOngoingActivity(android.content.Context);
-    method public static androidx.wear.ongoingactivity.OngoingActivity? fromExistingOngoingActivity(android.content.Context, int);
-    method public void update(android.content.Context, androidx.wear.ongoingactivity.OngoingActivityStatus);
-  }
-
-  public static final class OngoingActivity.Builder {
-    ctor public OngoingActivity.Builder(android.content.Context, int, androidx.core.app.NotificationCompat.Builder);
-    method public androidx.wear.ongoingactivity.OngoingActivity build();
-    method public androidx.wear.ongoingactivity.OngoingActivity.Builder setAnimatedIcon(android.graphics.drawable.Icon);
-    method public androidx.wear.ongoingactivity.OngoingActivity.Builder setAnimatedIcon(@DrawableRes int);
-    method public androidx.wear.ongoingactivity.OngoingActivity.Builder setCategory(String);
-    method public androidx.wear.ongoingactivity.OngoingActivity.Builder setLocusId(androidx.core.content.LocusIdCompat);
-    method public androidx.wear.ongoingactivity.OngoingActivity.Builder setOngoingActivityId(int);
-    method public androidx.wear.ongoingactivity.OngoingActivity.Builder setStaticIcon(android.graphics.drawable.Icon);
-    method public androidx.wear.ongoingactivity.OngoingActivity.Builder setStaticIcon(@DrawableRes int);
-    method public androidx.wear.ongoingactivity.OngoingActivity.Builder setStatus(androidx.wear.ongoingactivity.OngoingActivityStatus);
-    method public androidx.wear.ongoingactivity.OngoingActivity.Builder setTouchIntent(android.app.PendingIntent);
-  }
-
-  public class OngoingActivityData implements androidx.versionedparcelable.VersionedParcelable {
-    method public static androidx.wear.ongoingactivity.OngoingActivityData? create(android.app.Notification);
-    method public android.graphics.drawable.Icon? getAnimatedIcon();
-    method public String? getCategory();
-    method public androidx.core.content.LocusIdCompat? getLocusId();
-    method public int getOngoingActivityId();
-    method public android.graphics.drawable.Icon getStaticIcon();
-    method public androidx.wear.ongoingactivity.OngoingActivityStatus? getStatus();
-    method public long getTimestamp();
-    method public android.app.PendingIntent getTouchIntent();
-    method public static boolean hasOngoingActivity(android.app.Notification);
-  }
-
-  public class OngoingActivityStatus implements androidx.versionedparcelable.VersionedParcelable {
-    method public long getNextChangeTimeMillis(long);
-    method public CharSequence getText(android.content.Context, long);
-  }
-
-  public class TextOngoingActivityStatus extends androidx.wear.ongoingactivity.OngoingActivityStatus {
-    ctor public TextOngoingActivityStatus(String);
-  }
-
-  public class TimerOngoingActivityStatus extends androidx.wear.ongoingactivity.OngoingActivityStatus {
-    ctor public TimerOngoingActivityStatus(long, boolean, long, long);
-    ctor public TimerOngoingActivityStatus(long, boolean, long);
-    ctor public TimerOngoingActivityStatus(long, boolean);
-    ctor public TimerOngoingActivityStatus(long);
-    method public long getPausedAtMillis();
-    method public long getTimeZeroMillis();
-    method public long getTotalDurationMillis();
-    method public boolean hasTotalDuration();
-    method public boolean isCountDown();
-    method public boolean isPaused();
-  }
-
-}
-
 package androidx.wear.provider {
 
   public class WearableCalendarContract {
diff --git a/wear/wear/api/public_plus_experimental_current.txt b/wear/wear/api/public_plus_experimental_current.txt
index 868fb8c..4df563b 100644
--- a/wear/wear/api/public_plus_experimental_current.txt
+++ b/wear/wear/api/public_plus_experimental_current.txt
@@ -78,67 +78,6 @@
 
 }
 
-package androidx.wear.ongoingactivity {
-
-  @RequiresApi(24) public final class OngoingActivity {
-    method public void apply(android.content.Context);
-    method public static androidx.wear.ongoingactivity.OngoingActivity? fromExistingOngoingActivity(android.content.Context, java.util.function.Predicate<androidx.wear.ongoingactivity.OngoingActivityData!>);
-    method public static androidx.wear.ongoingactivity.OngoingActivity? fromExistingOngoingActivity(android.content.Context);
-    method public static androidx.wear.ongoingactivity.OngoingActivity? fromExistingOngoingActivity(android.content.Context, int);
-    method public void update(android.content.Context, androidx.wear.ongoingactivity.OngoingActivityStatus);
-  }
-
-  public static final class OngoingActivity.Builder {
-    ctor public OngoingActivity.Builder(android.content.Context, int, androidx.core.app.NotificationCompat.Builder);
-    method public androidx.wear.ongoingactivity.OngoingActivity build();
-    method public androidx.wear.ongoingactivity.OngoingActivity.Builder setAnimatedIcon(android.graphics.drawable.Icon);
-    method public androidx.wear.ongoingactivity.OngoingActivity.Builder setAnimatedIcon(@DrawableRes int);
-    method public androidx.wear.ongoingactivity.OngoingActivity.Builder setCategory(String);
-    method public androidx.wear.ongoingactivity.OngoingActivity.Builder setLocusId(androidx.core.content.LocusIdCompat);
-    method public androidx.wear.ongoingactivity.OngoingActivity.Builder setOngoingActivityId(int);
-    method public androidx.wear.ongoingactivity.OngoingActivity.Builder setStaticIcon(android.graphics.drawable.Icon);
-    method public androidx.wear.ongoingactivity.OngoingActivity.Builder setStaticIcon(@DrawableRes int);
-    method public androidx.wear.ongoingactivity.OngoingActivity.Builder setStatus(androidx.wear.ongoingactivity.OngoingActivityStatus);
-    method public androidx.wear.ongoingactivity.OngoingActivity.Builder setTouchIntent(android.app.PendingIntent);
-  }
-
-  @androidx.versionedparcelable.VersionedParcelize public class OngoingActivityData implements androidx.versionedparcelable.VersionedParcelable {
-    method public static androidx.wear.ongoingactivity.OngoingActivityData? create(android.app.Notification);
-    method public android.graphics.drawable.Icon? getAnimatedIcon();
-    method public String? getCategory();
-    method public androidx.core.content.LocusIdCompat? getLocusId();
-    method public int getOngoingActivityId();
-    method public android.graphics.drawable.Icon getStaticIcon();
-    method public androidx.wear.ongoingactivity.OngoingActivityStatus? getStatus();
-    method public long getTimestamp();
-    method public android.app.PendingIntent getTouchIntent();
-    method public static boolean hasOngoingActivity(android.app.Notification);
-  }
-
-  @androidx.versionedparcelable.VersionedParcelize public class OngoingActivityStatus implements androidx.versionedparcelable.VersionedParcelable {
-    method public long getNextChangeTimeMillis(long);
-    method public CharSequence getText(android.content.Context, long);
-  }
-
-  @androidx.versionedparcelable.VersionedParcelize public class TextOngoingActivityStatus extends androidx.wear.ongoingactivity.OngoingActivityStatus {
-    ctor public TextOngoingActivityStatus(String);
-  }
-
-  @androidx.versionedparcelable.VersionedParcelize public class TimerOngoingActivityStatus extends androidx.wear.ongoingactivity.OngoingActivityStatus {
-    ctor public TimerOngoingActivityStatus(long, boolean, long, long);
-    ctor public TimerOngoingActivityStatus(long, boolean, long);
-    ctor public TimerOngoingActivityStatus(long, boolean);
-    ctor public TimerOngoingActivityStatus(long);
-    method public long getPausedAtMillis();
-    method public long getTimeZeroMillis();
-    method public long getTotalDurationMillis();
-    method public boolean hasTotalDuration();
-    method public boolean isCountDown();
-    method public boolean isPaused();
-  }
-
-}
-
 package androidx.wear.provider {
 
   public class WearableCalendarContract {
diff --git a/wear/wear/api/restricted_current.txt b/wear/wear/api/restricted_current.txt
index 89511eb..31ddee57 100644
--- a/wear/wear/api/restricted_current.txt
+++ b/wear/wear/api/restricted_current.txt
@@ -78,67 +78,6 @@
 
 }
 
-package androidx.wear.ongoingactivity {
-
-  @RequiresApi(24) public final class OngoingActivity {
-    method public void apply(android.content.Context);
-    method public static androidx.wear.ongoingactivity.OngoingActivity? fromExistingOngoingActivity(android.content.Context, java.util.function.Predicate<androidx.wear.ongoingactivity.OngoingActivityData!>);
-    method public static androidx.wear.ongoingactivity.OngoingActivity? fromExistingOngoingActivity(android.content.Context);
-    method public static androidx.wear.ongoingactivity.OngoingActivity? fromExistingOngoingActivity(android.content.Context, int);
-    method public void update(android.content.Context, androidx.wear.ongoingactivity.OngoingActivityStatus);
-  }
-
-  public static final class OngoingActivity.Builder {
-    ctor public OngoingActivity.Builder(android.content.Context, int, androidx.core.app.NotificationCompat.Builder);
-    method public androidx.wear.ongoingactivity.OngoingActivity build();
-    method public androidx.wear.ongoingactivity.OngoingActivity.Builder setAnimatedIcon(android.graphics.drawable.Icon);
-    method public androidx.wear.ongoingactivity.OngoingActivity.Builder setAnimatedIcon(@DrawableRes int);
-    method public androidx.wear.ongoingactivity.OngoingActivity.Builder setCategory(String);
-    method public androidx.wear.ongoingactivity.OngoingActivity.Builder setLocusId(androidx.core.content.LocusIdCompat);
-    method public androidx.wear.ongoingactivity.OngoingActivity.Builder setOngoingActivityId(int);
-    method public androidx.wear.ongoingactivity.OngoingActivity.Builder setStaticIcon(android.graphics.drawable.Icon);
-    method public androidx.wear.ongoingactivity.OngoingActivity.Builder setStaticIcon(@DrawableRes int);
-    method public androidx.wear.ongoingactivity.OngoingActivity.Builder setStatus(androidx.wear.ongoingactivity.OngoingActivityStatus);
-    method public androidx.wear.ongoingactivity.OngoingActivity.Builder setTouchIntent(android.app.PendingIntent);
-  }
-
-  @androidx.versionedparcelable.VersionedParcelize public class OngoingActivityData implements androidx.versionedparcelable.VersionedParcelable {
-    method public static androidx.wear.ongoingactivity.OngoingActivityData? create(android.app.Notification);
-    method public android.graphics.drawable.Icon? getAnimatedIcon();
-    method public String? getCategory();
-    method public androidx.core.content.LocusIdCompat? getLocusId();
-    method public int getOngoingActivityId();
-    method public android.graphics.drawable.Icon getStaticIcon();
-    method public androidx.wear.ongoingactivity.OngoingActivityStatus? getStatus();
-    method public long getTimestamp();
-    method public android.app.PendingIntent getTouchIntent();
-    method public static boolean hasOngoingActivity(android.app.Notification);
-  }
-
-  @androidx.versionedparcelable.VersionedParcelize public class OngoingActivityStatus implements androidx.versionedparcelable.VersionedParcelable {
-    method public long getNextChangeTimeMillis(long);
-    method public CharSequence getText(android.content.Context, long);
-  }
-
-  @androidx.versionedparcelable.VersionedParcelize public class TextOngoingActivityStatus extends androidx.wear.ongoingactivity.OngoingActivityStatus {
-    ctor public TextOngoingActivityStatus(String);
-  }
-
-  @androidx.versionedparcelable.VersionedParcelize public class TimerOngoingActivityStatus extends androidx.wear.ongoingactivity.OngoingActivityStatus {
-    ctor public TimerOngoingActivityStatus(long, boolean, long, long);
-    ctor public TimerOngoingActivityStatus(long, boolean, long);
-    ctor public TimerOngoingActivityStatus(long, boolean);
-    ctor public TimerOngoingActivityStatus(long);
-    method public long getPausedAtMillis();
-    method public long getTimeZeroMillis();
-    method public long getTotalDurationMillis();
-    method public boolean hasTotalDuration();
-    method public boolean isCountDown();
-    method public boolean isPaused();
-  }
-
-}
-
 package androidx.wear.provider {
 
   public class WearableCalendarContract {
