Test how your app handles behavior changes

Wear OS 5 Developer Preview is based on Android 14 (API level 34), which is a newer version compared to the one on which Wear OS 4 is based (Android 13, or API level 33). So when you prepare your Wear OS app for use on Wear OS 5 Developer Preview, you need to handle the system behavior changes that affect all apps in Android 14, as well as the changes for apps that target Android 14.

Wear OS 5 changes affecting all apps

The following behavior changes affect use cases and libraries that are specific to Wear OS. These changes affect all apps that run on Wear OS 5 regardless of target SDK version.

Privacy dashboard

Wear OS 5 Developer Preview adds support for the privacy dashboard, which initially launched on mobile devices in Android 12.

The privacy dashboard offers users a centralized view of each app's data usage, including the following details:

  • The data types being accessed, such as location and microphone.
  • How recently those data types were accessed.

With access to this information, users can make more informed decisions about which apps should still have access to their personal data. To maintain user trust, use data responsibly and be transparent when collecting and using user data.

Most complication data sources require use of Watch Face Format

In upcoming versions of Wear OS, including Wear OS 5 Developer Preview, watch faces need to use the Watch Face Format to support complications that contain user data. We recommend that you update your watch face to use the Watch Face Format. Learn more about these changes to complications.

Temporarily deactivate change for testing purposes

This feature is enabled by default. To disable the feature flag that corresponds to this change for testing purposes, using the following command:

adb shell device_config put wear_services \
  com.google.wear.services.infra.flags.restrict_complications_flag false && \
  adb reboot

Wear OS 5 changes affecting apps that target Android 14

The following changes affect your app only if you update your target SDK version to Android 14, the version on which Wear OS 5 Developer Preview is based.

Always-on apps can move to the background

Starting in Wear OS 5 Developer Preview, the system moves always-on apps to the background after they're visible in ambient mode for a certain period of time. Users can configure the timeout in system settings.

If your always-on app displays information about an ongoing user task—such as music playback or a workout session—you might want to keep the ongoing activity visible until the task ends. To do so, use the Ongoing Activity API to post an ongoing notification that is linked to your always-on activity.

In order for the system to recognize the ongoing activity, the ongoing notification's touch intent must point to your always-on activity, as shown in the following code snippet:

// Create a pending intent that point to your always-on activity
val touchIntent =
    PendingIntent.getActivity(
        context,
        0,
        Intent(context, MyAlwaysOnActivity::class.java),
        PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
    )

val notificationBuilder =
    NotificationCompat.Builder(this, CHANNEL_ID)
    // ...
    .setOngoing(true)

val ongoingActivity =
    OngoingActivity.Builder(
        applicationContext, NOTIFICATION_ID, notificationBuilder
    )
    // ...
    .setTouchIntent(touchIntent)
    .build()

ongoingActivity.apply(applicationContext)

notificationManager.notify(
    NOTIFICATION_ID,
    notificationBuilder.build()
)

Temporarily deactivate change for testing purposes

This feature is enabled by default. To disable the feature flag that corresponds to this change for testing purposes, using the following command:

adb shell device_config put wear_frameworks \
  com.google.android.clockwork.systemui.flags.ambiactive_components_expirable \
  false && adb reboot

Exercise-recording apps must declare a foreground service type

If your app records exercise as part of a user's workout session, you must specify the health foreground service type in the foreground service that invokes ExerciseClient. Additionally, if your app can monitor location information during the workout session, you also need to specify the location foreground service type:

<manifest ...>
  <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <application ...>
      <!-- If your app can also monitor location information, use
           android:foregroundServiceType="health|location" instead. -->
      <service
          android:name=".MyExerciseSessionRecorder"
          android:foregroundServiceType="health">
      </service>
    </application>
</manifest>

Some off-wrist devices stay unlocked longer

On supported devices that run Wear OS 5 Developer Preview, the system detects whether the user is wearing the device on their wrist. If the user turns off wrist detection and then takes the device off of their wrist, the system keeps the device unlocked for a longer period of time than it would otherwise.

If your app requires a higher level of security—such as when displaying potentially sensitive or private data—first check whether wrist detection is enabled:

val wristDetectionEnabled =
        isWristDetectionAutoLockingEnabled(applicationContext)

If the return value of this method is false, prompt the user to sign into an account in your app before displaying user-specific content.

Draggable content might overlap system gesture activation points

Starting in Wear OS 5 Developer Preview, the system treats motion event gestures separately from gesture navigation used in the system's UI.

If your app's UI includes large draggable spaces that overlap system gesture areas, you might need to add system gesture exclusion rectangles for these views. To do so, call setSystemGestureExclusionRects() to instruct the system UI to ignore navigation gestures in the given areas. This is similar to how you handle conflicting app gestures in your mobile app to provide an edge-to-edge UI experience.

You can use the setSystemGestureExclusionRects() API to have the system UI respond to gesture requests differently. For example, the system UI might show additional UI hints, like a horizontal bar, to confirm the user's intent.

Non-linear font scaling

Starting in Wear OS 5 Developer Preview, the system supports smoother font scaling, particularly in cases where users choose larger font sizes, in view-based UI components.

Restrictions to implicit and pending intents

If you use tiles in your app, check whether your intents are affected by the restrictions to implicit and pending intents.

Some notifications are still non-dismissible

When using the handheld version of your app on a device that runs Android 14 (API level 34) or higher, users can dismiss notifications that, on previous versions, were non-dismissible.

On Wear OS 5 Developer Preview, however, these notifications are still non-dismissible.

Other changes from Android 14

The following changes from Android 14 are most likely to affect your Wear OS app.

Android 14 changes that affect all apps

Android 14 changes that affect apps targeting API level 34