生成されたプレビューをウィジェット選択ツールに追加する

生成されたウィジェット プレビューを使用すると、ウィジェットの動的でパーソナライズされたプレビューを作成できます。このプレビューは、ユーザーのホーム画面に表示されるウィジェットの様子を正確に反映します。これらはプッシュ API を介して提供されます。つまり、アプリはウィジェット ホストから明示的なリクエストを受け取ることなく、ライフサイクルの任意の時点でプレビューを提供します。

このガイドでは、Glance ベースのウィジェットのプレビューを提供する方法について説明します。ウィジェットが RemoteViews で実装されている場合は、ウィジェット ピッカーにプレビューを追加するをご覧ください。

Glance ウィジェットのアプリのウィジェット選択ツールのエクスペリエンスを改善するには、Android 15 以降のデバイスで GlanceAppWidget.providePreview を使用して生成されたウィジェットのプレビューを提供し、以前のバージョンでは previewImage を指定します。また、生成されたプレビューが利用できない場合は、Android 15 以降のフォールバックとして previewImage を指定します。

詳しくは、YouTube の Enrich your app with live updates and widgets をご覧ください。

生成されたウィジェットのプレビュー用にアプリをセットアップする

Android 15 以降のデバイスで生成されたウィジェットのプレビューを表示するには、まずモジュールの build.gradle ファイルで compileSdk の値を 35 以上に設定して、ウィジェット選択ツールに RemoteViews を提供できるようにします。

アプリは GlanceAppWidgetManagersetWidgetPreview を使用できます。不正使用を防ぎ、システムの健全性に関する懸念を軽減するため、setWidgetPreview はレート制限付きの API です。デフォルトの上限は 1 時間あたり約 2 回の通話です。

Jetpack Glance で更新されたプレビューを生成する

Jetpack Glance でビルドされたウィジェットの場合は、次の操作を行います。

  1. GlanceAppWidget.providePreview 関数をオーバーライドして、プレビュー用のコンポーズ可能なコンテンツを提供します。provideGlance の場合と同様に、アプリのデータを読み込んでウィジェットのコンテンツ コンポーザブルに渡し、プレビューに正確なデータが表示されるようにします。provideGlance とは異なり、これは再コンポーズやエフェクトのない単一のコンポジションです。

  2. GlanceAppWidgetManager.setWidgetPreviews を呼び出して、プレビューを生成して公開します。

システムからプレビューを提供するコールバックはないため、アプリで setWidgetPreviews を呼び出すタイミングを決定する必要があります。更新戦略は、ウィジェットのユースケースによって異なります。

  • ウィジェットに静的な情報が含まれている場合や、クイック アクションである場合は、アプリの初回起動時にプレビューを設定します。
  • プレビューは、アプリにデータが入力された後(ユーザーのログイン後や初期設定後など)に設定できます。
  • 選択したケイデンスでプレビューを更新する定期的なタスクを設定できます。

生成されたプレビューのトラブルシューティング

一般的な問題は、プレビューを生成した後、ウィジェットのドロップサイズに対して、プレビュー画像から画像、アイコン、その他のコンポーザブルが欠落していることです。このドロップ サイズは、指定されている場合は targetCellWidthtargetCellHeight で定義され、指定されていない場合はアプリ ウィジェット プロバイダ情報ファイルminWidthminHeight で定義されます。

これは、Android がデフォルトで、ウィジェットの最小サイズで表示されるコンポーザブルのみをレンダリングするためです。つまり、Android はデフォルトで previewSizeModeSizeMode.Single に設定します。アプリ ウィジェット プロバイダ情報 XMLandroid:minHeightandroid:minWidth を使用して、描画するコンポーザブルを決定します。

この問題を解決するには、GlanceAppWidgetpreviewSizeMode をオーバーライドして SizeMode.Responsive に設定し、DpSize 値のセットを指定します。これにより、プレビューのレンダリングに必要なすべてのレイアウト サイズが Android に伝えられ、すべての要素が正しく表示されます。

特定のフォーム ファクタ向けに最適化します。最小値から始めて、ウィジェットのブレークポイントに従って 1 つまたは 2 つのサイズを指定します。previewImage を 1 つ以上指定します(下位互換性のため)。グリッドサイズに応じた適切な最小 DP 値については、ウィジェットのデザイン ガイダンスをご覧ください。

ウィジェット プレビューに関する下位互換性

Android 15 より前のバージョンを搭載したデバイスのウィジェット選択ツールでウィジェットのプレビューを表示できるようにする、または Android 15 以降で生成されたプレビューのフォールバックとして、previewImage 属性を指定します。

ウィジェットの外観を変更する場合は、プレビュー画像を更新します。