中国向けの Wear OS アプリを作成する

中国向けの Wear OS アプリを作成する場合、Google Play 開発者サービスがプリインストールされていないハンドセットに対応する必要があります。このページでは、デベロッパーが中国市場向けに取り入れる必要がある一般的な変更について説明します。

適切なバージョンの Google Play 開発者サービスを使用する

Google Play 開発者サービスのバージョン 10.2.0 は、Fused Location Provider APIData Layer API を全世界でサポートしています。これらの API を使用して中国の多様な Wear OS デバイスに対応するには、このバージョンの Google Play 開発者サービスを使用する必要があります。それ以外の場合、この依存関係は省略可能です。

注: Google Play 開発者サービスには Wear OS アプリ用の API が含まれていますが、中国向けの Wear OS アプリでは、GoogleApiClient に関連する API を引き続き使用する必要があります。Wearable API にアクセスするをご覧ください。

Fused Location Provider API

Fused Location Provider API を使用する場合は、Wear OS モジュールの build.gradle ファイルに次の依存関係を含める必要があります。

Groovy

dependencies {
    ...
    implementation 'com.google.android.gms:play-services-location:10.2.0'
}

Kotlin

dependencies {
    ...
    implementation("com.google.android.gms:play-services-location:10.2.0")
}

Data Layer API

アプリで Data Layer API を使用する場合は、Wear OS モジュールの build.gradle ファイルに次の行を追加する必要があります。この行では、クライアント ライブラリのバージョン 10.2.0 を使用することが必要です。

Groovy

dependencies {
    ...
    implementation 'com.google.android.gms:play-services-wearable:10.2.0'
    ...
}

Kotlin

dependencies {
    ...
    implementation("com.google.android.gms:play-services-wearable:10.2.0")
    ...
}

モバイル モジュールの build.gradle ファイルに次の行を追加します。Google Play 開発者サービスの依存関係はバージョン 10.2.0 への参照に置き換えます。

Groovy

dependencies {
    ...
    implementation 'com.google.android.gms:play-services-wearable:10.2.0'
}

Kotlin

dependencies {
    ...
    implementation("com.google.android.gms:play-services-wearable:10.2.0")
}

認証

認証を実装する前にユースケースを見直して、認証が実際に必要かどうかを確認します。たとえば、天気予報を配信するアプリではおそらくログインが不要なため、認証も必要ないでしょう。

認証が必要な場合は、Androidx OAuth ライブラリを使用することをおすすめします。そのためには、PKCE による Authorization Code Grant フローを使用する必要があります。ウェアラブルでの認証で説明されているその他の方法を使用することもできます。ウェアラブル サポート ライブラリの使用はおすすめしません。

詳しくは、GitHub の Wear OS OAuth サンプルをご覧ください。

ブリッジ通知

ブリッジ通知は、中国ではサポートされていません。スマートフォンへの通知は、Wear OS デバイスが Bluetooth を使用してスマートフォンに接続されている場合にのみ、Wear OS にブリッジされます。

位置情報と地図座標の互換性

中国でユーザーの位置情報を検出するには、他の国の場合と同様に、FusedLocationProvider(FLP)を使用します。これにより、スマートウォッチのハードウェアと、スマートウォッチがペア設定されているスマートフォン プラットフォームに関係なく、確実にアプリで最適な情報が考慮されます。FLP を使用すると、Wear OS プラットフォームに組み込まれているバッテリー最適化も行われます。

FusedLocationProvider をサードパーティのマップ SDK と統合する場合は、プロバイダ間の座標の互換性を考慮してください。FusedLocationProvider は、WGS84 標準に基づいて位置情報をレポートします。座標系は必要に応じて変換してください。

Google Fit のサポート

Google Fit の累積歩数計、通常の運動(分)、ハートポイント(強めの運動)は中国でもサポートされており、最大 7 日分が履歴に残ります。履歴にアクセスする場合にユーザーの認証情報を入力する必要はありません。

音声操作のサポート

Wear OS プラットフォームには、「心拍数を表示」や「アラームを設定」などのユーザー操作に基づく音声インテントがいくつか用意されています。これにより、ユーザーは実行したい操作を話しかけて、開始する最適なアクティビティをシステムに理解させることができます。

ユーザーが音声操作を行った場合、アプリはアクティビティを開始するために起動されたインテントを特定できます。バックグラウンドでサービスを開始するには、アクティビティをビジュアル キューとして表示し、アクティビティ内でサービスを開始します。ビジュアル キューを取り除く場合は、 finish() を呼び出します。

以下に、Wear OS プラットフォームでサポートされている音声インテントを示します。

カテゴリ インテントの仕様
自動車を手配 打车去三里屯 アクション

com.google.android.gms.actions.RESERVE_TAXI_RESERVATION

エクストラ

to: 認識された目的地

このエクストラは省略可能です。

アラームを設定 设置一个明早七点的闹钟 アクション

android.intent.action.SET_ALARM

エクストラ

android.provider.AlarmClock.EXTRA_HOUR: アラーム時刻の「時」を示す整数

android.provider.AlarmClock.EXTRA_MINUTES: アラーム時刻の「分」を示す整数

これらのエクストラは省略可能です。どちらか一方を指定することも、両方を指定することも、どちらも指定しないことも可能です。

タイマーを設定 设置一个三分钟的倒计时 アクション

android.intent.action.SET_TIMER

エクストラ

android.provider.AlarmClock.EXTRA_LENGTH: タイマーの長さを表す 1 ~ 86400(24 時間の秒数)の範囲の整数

ストップウォッチを開始 开始计时 アクション

com.google.android.wearable.action.STOPWATCH

サイクリングを開始または終了 开始骑车 アクション

vnd.google.fitness.TRACK

MIME タイプ

vnd.google.fitness.activity/biking

エクストラ

actionStatus: 開始時の ActiveActionStatus と終了時の CompletedActionStatus の値を含む文字列

ランニングを開始または終了 开始跑步 アクション

vnd.google.fitness.TRACK

MIME タイプ

vnd.google.fitness.activity/running

エクストラ

actionStatus: 開始時の ActiveActionStatus と終了時の CompletedActionStatus の値を含む文字列

ワークアウトを開始または終了 开始锻炼 アクション

vnd.google.fitness.TRACK

MIME タイプ

vnd.google.fitness.activity/other

エクストラ

actionStatus: 開始時の ActiveActionStatus と終了時の CompletedActionStatus の値を含む文字列

心拍数を表示 查看心率 アクション

vnd.google.fitness.VIEW

MIME タイプ

vnd.google.fitness.data_type/com.google.heart_rate.bpm

歩数を表示 查看步数 アクション

vnd.google.fitness.VIEW

MIME タイプ

vnd.google.fitness.data_type/com.google.step_count.cumulative

ナビゲーション 导航去三里屯 アクション

android.intent.action.VIEW

データ

geo:latitude,longitude?q=融科资讯中心

音声アシスタントでは、既存の Android の一般的なインテントを使用して、特定の動作(該当する場合)をトリガーすることもできます。

エミュレータのサポート

中国版の Wear OS エミュレータ イメージを使用してアプリをテストできます。このエミュレータ イメージは Android Studio 3.0 以降でサポートされています。

中国版のエミュレータでアプリをテストする手順は次のとおりです。

  1. Android Emulator をインストールします。
  2. SDK Manager から中国向け Wear OS イメージをダウンロードします。Wear OS 3.5(API レベル 30)のバージョンを使用します。
  3. AVD のプロファイルを作成する際に、中国向け Wear OS イメージを選択します。
  4. 開発用の中国向け Wear OS エミュレータを実行します。
  5. 図 1. 中国版の Wear OS エミュレータの例

このバージョンの Wear OS エミュレータには、次のアプリがプリインストールされています。

  • アンビエント モード
  • 連絡先
  • Google 手書き入力
  • Google Play 開発者サービス
  • Wear OS 向けヘルスサービス
  • LE デバイス向けの起動ワード認識
  • ピンイン
  • Google Play ストア(中国のデバイス向けに調整)
  • Pocketwatch
  • TalkBack
  • ウォッチフェイス(アナログ版とデジタル版の両方)
  • Wear コアサービス

アプリ固有の Bluetooth および Wi-Fi チャンネルを開始する

Wear OS はネットワーク リクエストを自動的にルーティングします。ほとんどの場合、アプリ固有の Bluetooth および Wi-Fi チャンネルをアプリで開く必要はありません。

アプリが中国でアプリ固有の Bluetooth および Wi-Fi チャンネルをリクエストした場合、そのリクエストは通知なく失敗し、ユーザーに確認を求めるダイアログが表示されます。ユーザーが確認すると、チャンネルが開きます。この処理は初回使用時だけでなく、毎回行われます。BluetoothAdapter.enable() または WifiManager.setEnabled(true) が呼び出さます。

注: Android 10(API レベル 29)以降をターゲットとするアプリが WifiManager.setEnabled() を呼び出す場合、アプリはシステムアプリまたは Device Policy Controller(DPC)であることが必要です。

Permission Review Mode

中国では、中国向け Wear OS デバイスは Permission Review Mode で動作するので、targetApiLevel が 23 未満のアプリの使用が制限されます。次の制限を確認してください。

  • インストール時に権限が付与されていても、targetApiLevel が 23 未満のアプリが初めて起動されるときは、ユーザーにアプリの権限の確認を求めるダイアログが表示されます。
  • アプリのコンポーネント(ブロードキャスト レシーバ、サービス、アクティビティなど)は、アプリが初めて使用されるまで、対応するイベントに応答しません。

したがって、targetApiLevel 23 以上を使用し、アプリの権限に関するおすすめの設定を採用することをおすすめします。

Google Play 開発者サービスの他の API を使用する

Wearable API 以外の Google Play 開発者サービスの API をアプリで使用する場合は、ランタイム中にそれらの API を使用して適切に応答できるかどうかを確認する必要があります。Google Play 開発者サービスの API を使用できるかどうかは、次の 2 種類の方法で確認できます。

  1. 他の API への接続に別の GoogleApiClient インスタンスを使用します。このインターフェースには、接続の成功または失敗をアプリに知らせるコールバックが含まれています。接続が失敗した場合、 ConnectionResult API_UNAVAILABLE を示します。接続が失敗した場合の対処方法については、Google API へのアクセスをご覧ください。
  2. GoogleApiClient.BuilderaddApiIfAvailable() メソッドを使用して、必要な API に接続します。onConnected() コールバックが呼び出されたら、hasConnectedApi() メソッドを使用して、リクエストされた各 API が正しく接続されていることを確認します。

中国でアプリを配信する

中国向け Wear OS のユーザーに効果的にリーチするため、以下のようなサードパーティ Wear OS アプリストアを通じてアプリを配信できます。