アプリによる動作変更の処理方法をテストする

Wear OS 5 デベロッパー プレビューは Android 14(API レベル 34)をベースとしており、Wear OS 4 のベース(Android 13 または API レベル 33)よりも新しいバージョンです。そのため、Wear OS アプリを Wear OS 5 デベロッパー プレビューで使用できるように準備する際は、Android 14 のすべてのアプリに影響するシステム動作の変更と、Android 14 をターゲットとするアプリ向けの変更に対処する必要があります。

すべてのアプリに影響する Wear OS 5 の変更点

以下の動作変更は、Wear OS 固有のユースケースとライブラリに影響します。これらの変更は、ターゲット SDK バージョンに関係なく、Wear OS 5 で実行されるすべてのアプリに影響します。

プライバシー ダッシュボード

Wear OS 5 デベロッパー プレビューでは、Android 12 のモバイル デバイスで最初にリリースされたプライバシー ダッシュボードのサポートが追加されています。

プライバシー ダッシュボードには、各アプリのデータ使用状況が 1 か所にまとめて表示されます。詳細には以下が含まれます。

  • アクセス対象のデータの種類(位置情報やマイクなど)。
  • これらのデータ型が最近アクセスされた日付。

この情報にアクセスすることで、ユーザーは、個人データに引き続きアクセスする必要があるアプリについて、より多くの情報に基づいた決定を行うことができます。ユーザーの信頼を維持するため、責任を持ってデータを使用し、ユーザーデータを収集および使用する際には透明性を確保してください。

ウォッチフェイスの追加機能のデータソースのほとんどでは、Watch Face Format を使用する必要があります。

Wear OS の今後のバージョン(Wear OS 5 デベロッパー プレビューを含む)では、ウォッチフェイスでユーザーデータを含むウォッチフェイスの追加機能をサポートするため、Watch Face Format を使用する必要があります。Watch Face Format を使用するようにウォッチフェイスを更新することをおすすめします。詳しくは、ウォッチフェイスの追加機能に関する変更をご覧ください。

テスト目的で変更を一時的に無効にする

この機能はデフォルトで有効になっています。この変更に対応する機能フラグをテスト目的で無効にするには、次のコマンドを使用します。

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

Android 14 をターゲットとするアプリに影響する Wear OS 5 の変更点

以下の変更は、ターゲット SDK バージョンを Wear OS 5 デベロッパー プレビューのベースとなっているバージョンである Android 14 に更新した場合にのみ、アプリに影響します。

常時オンアプリをバックグラウンドに移動できます

Wear OS 5 デベロッパー プレビュー以降、常時オンアプリは、常に画面表示モードで一定時間表示された後、バックグラウンドに移動します。ユーザーはシステム設定でタイムアウトを構成できます。

常時オンアプリが進行中のユーザータスク(音楽の再生やワークアウト セッションなど)に関する情報を表示する場合、タスクが終了するまで進行中のアクティビティを表示したままにすることをおすすめします。これを行うには、Ongoing Activity API を使用して、常時オンアクティビティにリンクされた進行中の通知を送信します。

システムが進行中のアクティビティを認識するには、次のコード スニペットに示すように、進行中の通知のタッチ インテントが常時オンアクティビティを指している必要があります。

// 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()
)

テスト目的で変更を一時的に無効にする

この機能はデフォルトで有効になっています。この変更に対応する機能フラグをテスト目的で無効にするには、次のコマンドを使用します。

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

エクササイズ記録アプリでは、フォアグラウンド サービスのタイプを申告する必要があります

アプリがユーザーのワークアウト セッションの一環としてエクササイズを記録する場合は、ExerciseClient を呼び出すフォアグラウンド サービスで health フォアグラウンド サービス タイプを指定する必要があります。また、アプリがワークアウト セッション中に位置情報をモニタリングできる場合は、location フォアグラウンド サービス タイプも指定する必要があります。

<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>

一部の手首を外したデバイスのロック解除時間が長くなる

Wear OS 5 デベロッパー プレビューを実行しているサポート対象デバイスでは、ユーザーがデバイスを手首に装着しているかどうかがシステムによって検出されます。ユーザーが手首の検出をオフにしてからデバイスを手首から外した場合、システムはデバイスのロック解除時間を通常の時間よりも長くします。

機密データや非公開データを表示するなど、より高いレベルのセキュリティがアプリに必要な場合は、まず手首検出が有効になっているかどうかを確認します。

val wristDetectionEnabled =
        isWristDetectionAutoLockingEnabled(applicationContext)

このメソッドの戻り値が false の場合は、ユーザー固有のコンテンツを表示する前に、アプリでアカウントにログインするようにユーザーに促します。

ドラッグ可能なコンテンツがシステム ジェスチャーの起動ポイントと重なることがある

Wear OS 5 デベロッパー プレビュー以降、モーション イベント ジェスチャーは、システムの UI で使用されるジェスチャー ナビゲーションとは別に処理されます。

アプリの UI に、システム ジェスチャー領域と重複する大きなドラッグ可能なスペースが含まれている場合、これらのビューでシステム ジェスチャー除外の長方形を追加する必要があります。そのためには、setSystemGestureExclusionRects() を呼び出して、特定のエリアでナビゲーション操作を無視するようにシステム UI に指示します。これは、モバイルアプリで競合するアプリ ジェスチャーを処理してエッジ ツー エッジの UI エクスペリエンスを提供する方法と似ています。

setSystemGestureExclusionRects() API を使用すると、システム UI が操作リクエストに対して異なるレスポンスを返すように設定できます。たとえば、システム UI は、ユーザーの意図を確認するための追加の UI ヒント(水平バーなど)を表示することがあります。

非線形フォント スケーリング

Wear OS 5 デベロッパー プレビュー以降、特にユーザーがビューベースの UI コンポーネントで大きなフォントサイズを選択した場合に、よりスムーズなフォント スケーリングがサポートされます。

暗黙的インテントとペンディング インテントの制限

アプリでタイルを使用している場合は、自分のインテントが暗黙的インテントとペンディング インテントに対する制限の影響を受けるかどうかを確認します。

一部の通知がまだ閉じることができない

Android 14(API レベル 34)以降を搭載しているデバイスでハンドヘルド バージョンのアプリを使用する場合、以前のバージョンでは閉じられなかった通知をユーザーが非表示にできます

ただし、Wear OS 5 デベロッパー プレビューでは、これらの通知を閉じることができません。

Android 14 からのその他の変更

以下の Android 14 以降の変更は、Wear OS アプリに影響する可能性があります。

すべてのアプリに影響する Android 14 の変更

API レベル 34 をターゲットとするアプリに影響する Android 14 の変更