Wear OS by Google 搭載スマートウォッチ用のレイアウトの作成は、画面サイズと視認性を考慮してデザインする必要があることを除き、スマートフォン用のレイアウトの作成に似ています。スマートフォン アプリの機能や UI をスマートウォッチに移植しても優れた操作性は期待できません。
カスタム レイアウトは必要な場合にだけ作成してください。優れたスマートウォッチ アプリを設計する方法については、Wear OS の設計ガイドラインをご覧ください。
カスタム通知を作成する
一般に、スマートフォンで作成した通知はウェアラブルに自動的に同期させる必要があります。こうすることで、作成した通知をさまざまなタイプのデバイス(スマートウォッチだけでなく、Auto や TV も含む)で表示できるようになります。しかも、各種のフォーム ファクタに合わせて設計する必要はありません。
標準の通知スタイル(NotificationCompat.BigTextStyle
や NotificationCompat.InboxStyle
)を使用できない場合は、カスタム レイアウトでアクティビティを表示できます。カスタム通知の作成と発行はスマートウォッチでのみ行うことができます。これらの通知はスマートフォンには同期されません。
注: スマートウォッチでカスタム通知を作成する場合、サポート ライブラリの代わりに標準の通知 API(API レベル 20)を使用できます。
カスタム通知を作成する手順は次のとおりです。
- レイアウトを作成し、表示するアクティビティのコンテンツ ビューとして設定します。
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { ... setContentView(R.layout.notification_activity) }
Java
public void onCreate(Bundle bundle){ ... setContentView(R.layout.notification_activity); }
-
Android のマニフェストでアクティビティに必要なプロパティを定義し、スマートウォッチのコンテキスト ストリーム プロセスでアクティビティを表示できるようにします。アクティビティのエクスポートと埋め込みを行えるように宣言し、空のタスク アフィニティを用意する必要があります。テーマは
Theme.DeviceDefault.Light
に設定することをおすすめします。次に例を示します。<activity android:name="com.example.MyDisplayActivity" android:exported="true" android:allowEmbedded="true" android:taskAffinity="" android:theme="@android:style/Theme.DeviceDefault.Light" />
-
表示するアクティビティの
PendingIntent
を作成します。次に例を示します。Kotlin
val notificationPendingIntent: PendingIntent = Intent(this, NotificationActivity::class.java).let { notificationIntent -> PendingIntent.getActivity( this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT ) }
Java
Intent notificationIntent = new Intent(this, NotificationActivity.class); PendingIntent notificationPendingIntent = PendingIntent.getActivity( this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
-
Notification
を作成し、PendingIntent
を指定してsetDisplayIntent()
を呼び出します。ユーザーが通知を表示するとき、システムはこのPendingIntent
を使用してアクティビティを開始します。 -
notify()
メソッドを使用して通知を発行します。注: Wear 1.x では、ホーム画面に通知をポップアップ表示する場合、システムは通知のセマンティック データから生成する標準テンプレートを使用して通知を表示します。このテンプレートはすべてのウォッチフェイスで正常に動作します。ユーザーが通知を上にスワイプすると、通知のカスタム アクティビティが表示されます。
Wear UI ライブラリを使用してレイアウトを作成する
Android Studio の Project Wizard でスマートウォッチ アプリを作成すると、Wear UI ライブラリが自動的に組み込まれます。また、次の依存関係宣言を使用して、このライブラリを build.gradle
ファイルに追加することもできます。
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'androidx.wear:wear:1.0.0' compile 'com.google.android.gms:play-services-wearable:+' }
このライブラリは、スマートウォッチの UI を構築するのに役立ちます。詳しくは、Wear デバイスのカスタム UI を作成するをご覧ください。
主なクラスの一部を以下に示します。
-
BoxInsetLayout
-
画面の形状を認識する
FrameLayout
オブジェクト。円形画面の中心の正方形内にその子を配置できます。 -
ConfirmationActivity
- ユーザーが操作を完了した後に確認用のアニメーションを表示するアクティビティ。
-
AnimationSet
- 一緒に再生する必要があるアニメーションのグループ。
-
CircularProgressLayout
- 子ビューを中心とした円形のカウントダウン タイマーを表示するレイアウト。通常、短い遅延が発生した後の動作を確認するための自動タイマーとして使用されます。
-
SnapHelper
-
SnapHelper
はRecyclerView
オブジェクトのスナップをサポートします。 -
PagerSnapHelper
-
縦向きまたは横向きでのページャ スタイルのスナップをサポートする
SnapHelper
インスタンスの実装。 -
AlertDialog
- Dialog のサブクラス。このサブクラスでは、1、2、または 3 個のボタンを表示できます。
-
ProgressBar
- 処理がどこまで進んだかを示すバーをユーザーに表示します。アプリは、処理の進捗に合わせて進捗量(バーの長さ)を変更できます。
-
WearableRecyclerView
-
RecyclerView
クラスのウェアラブル固有の実装。スクロール可能なアイテムリストを正方形および円形のデバイスに表示する場合に使用します。
Wear UI ライブラリ API リファレンス
リファレンス ドキュメントで各 UI ウィジェットの使用方法が詳しく説明されています。 Wear API リファレンス ドキュメントで上記のクラスの詳細をご確認ください。
注: Wear OS の開発には Android Studio を使用することをおすすめします。Android Studio では、プロジェクトのセットアップ、ライブラリのインクルード、パッケージングを容易に行うことができます。