2014年7月2日水曜日

Android Wear アプリ開発 その1

Android Wear API は Android Support Library と Google Play services で提供されているので、Kindle fire phone とかでは動かない。
Android Wear と接続するスマホは Android 4.3 以降であることが必要。



1. Synced Notifications

特にアプリ側で何もしなくても、スマホで発行された Notification は Android Wear にも表示されます。
2.x時代と違い、今はさまざまな情報を Notification に表示させられるため、通知の情報がリッチなほうが Wear で確認できる内容が増えるためうれしいです。

Build notifications


2. Voice Actions

音声コマンドを処理するためにアプリを登録します。
例えば、"Ok Google, take a note" でノートアプリが起動するようにできます。

Integrate voice actions


3. Build Wearable Apps

Wear に特化したエクスペリエンスを提供するよう Activity, Service, Sensor などをカスタマイズしましょう。

Create wearable apps


4. Send Data

replication APIs と RPCs を使って、データとアクションをスマホとWear間でやりとりできます。




Creating Wearable App

*Andorid Studio 0.8 以降、Gradle 0.12 以降が必要

Wearで実行されるアプリは、センサーやGPUなどハードウェアへアクセスすることができます。
基本的には Android SDK をツカッッタ通常のアプリと同じですが、提供されている機能の量とデザイン、ユーザービリティには大きな違いがあります。

スマホとWear用アプリの主な違いとして、以下のものがあります。

- システムがタイムアウト期間を強制します。Activityを表示している状態でユーザーがなにもインタラクションを行わないと、Wearはスリープ状態になります。スリープから戻ると、先ほどのActivityではなくWearのホーム画面が表示されます。何かを常に表示しなくてはいけない場合、context stream に通知を作成してください。

- Wear用アプリはスマホアプリに比べて、サイズ、機能ともに小さいです。Wearにとって意味のあるものだけを含みます。通常は対応するスマホアプリのサブセットでしょう。一般的には、なるべくスマホで操作し、結果をWearに送るようにします。

- ユーザーはWearに直接アプリをダウンロードするわけではありません。代わりに、スマホアプリ内にWear用アプリをバンドルします。ユーザーがスマホアプリをインストールすると、システムが自動的にWearアプリをインストールします。しかし、開発を目的として、いまだにWearに直接Wearアプリをインストールすることができます。

- Wearアプリは多くの標準 Android API にアクセスできますが、以下の API はサポートしていません。
APIを実際に使う前に、hasSystemFeature() を呼んで機能をWearがサポートしているかどうかチェックすることができます。


Creating and Running a Wearable App

Google Play store で公開したい場合、Wear用アプリを内包するスマホアプリ(a companion handheld app)も必要です。Wear は Google Play store をサポートしていません。そのため、ユーザーはスマホアプリをダウンロードします。そうすると、WearにWear用アプリが自動で送られます。
スマホアプリは重たい処理、ネットワーク処理などに向いています。そして、その結果をWearに送るようにします。

*アプリがデバッグキーで署名されている場合、Wearアプリの自動インストールは行われません。リリースキーで署名されている場合だけ動きます。詳細は Packaging Wearable Apps


Include the Correct Libraries

- Notifications

WearアプリからWear上にしか通知を出さない場合、標準のフレームワークAPI(API Level 20)を使えばいいので、mobile module から Support library v4 (or v13)を削除してよい。


- Wearable Data Layer

compile 'com.google.android.gms:play-services-wearable:+'
Wearアプリとスマホアプリで同期したりデータを送るには、Wearable Data Layer API を使う。これには最新の Google Play services が必要。このAPIを使わない場合、wear, mobile 両方の module から依存関係を削除してよい。


- Wearable UI support library

compile 'com.google.android.support:wearable:+'
Wear用にデザインされたUIウィジェットが含まれた unofficial library。
ベストプラクティスを例示しているものであり、利用することが推奨されているが、変更される可能性が高い。ただし、ライブラリがアップデートされてもすでにアプリにコンパイルされているものは壊れない。



Creating Custom Layouts

Wear用アプリのレイアウト作成はスマホアプリと同じですが、画面サイズと見やすさを考えてデザインする必要があります。スマホアプリから機能とUIをポーティングしてはいけません。必要な時だけカスタムレイアウトを作るべきです。
Wear用アプリのデザインについては design guidelines を読んでください。


Create Custom Notifications

一般的には、スマホ側で通知を作成し、それをWearに自動同期させます。これにより、一度通知を作成すればさまざまなデバイス(Wearのみならず、AutoやTVも)でそれにあった表示がされます。

もし、通常の通知スタイル(NotificationCompat.BigTextStyle や NotificationCompat.InboxStyle)では要求を達せない場合、Wear上でActivityを開く Notification を発行することができます。この custom notification はWear上でのみ作成・発行ができ、この通知はスマホ側に同期されません。

*Wear上の custom notification の作成には通常の notification API(API Level 20)を使うので、Support Libraryは使いません。

custom notification を作るには、

1. activity の setContentView()でレイアウトを指定する。

2. AndroidManifest.xml で activity に android:exported="true", android:allowEmbedded="true", android:taskAffinity="" を指定する。
<activity android:name="com.example.MyDisplayActivity" android:exported="true" android:allowEmbedded="true" android:taskAffinity="" android:theme="@android:style/Theme.DeviceDefault.Light" />
3. このActivityを開くPendingIntentを作成する
Intent displayIntent = new Intent(this, MyDisplayActivity.class); PendingIntent displayPendingIntent = PendingIntent.getActivity(this, 0, displayIntent, PendingIntent.FLAG_UPDATE_CURRENT);
4. setDesplayIntent() にこの PendingIntent を指定して Notification を作成する
Notification notif = new Notification.Builder(context) .extend(new Notification.WearableExtender() .setDisplayIntent(displayPendingIntent) .setCustomSizePreset(Notification.WearableExtender.SIZE_MEDIUM)) .build();
5. notify() で通知を発行する


Create Layouts with the Wearable UI Library

Android Studio Project ウィザードから Wear プロジェクトを作成すると、Wear用の unofficial UI library が自動で追加されます。
また、以下の依存宣言で build.gradle にライブラリを追加できます。

compile 'com.google.android.support:wearable:+'

  • BoxInsetLayout - 画面の形状を認識した FrameLayout。円形画面に入る正方形の中に子Viewを配置する。
  • CardFragment - 展開でき、縦にスクロールできるカードのコンテンツを提供する Fragment
  • CircledImageView - 円形に囲まれた画像
  • ConfirmationActivity - ユーザーがアクションを完了した後に、確認アニメーションを表示するActivity
  • DismissOverlayView - long-press-to-dismiss を実装したビュー
  • GridViewPager - 縦横両方にページ移動できるレイアウトマネジャー。表示するページを生成するには GridPagerAdapterの実装を提供する
  • GridPagerAdapter - GridViewPager のページを提供するアダプター
  • FragmentGridPagerAdapter - 各ページとして Fragment を提供する GridPagerAdapter の実装
  • WatchViewStub - デバイスの画面の形に応じて、指定されたレイアウトを生成するクラス
  • WearableListView - ListView の代替バージョン。Wearの小さい画面用に最適化されている。縦にスロールできるリストを表示し、ユーザーがスクロールを止めたときに近くのアイテムに自動でスナップする。
上記のクラスの API reference ドキュメント



0 件のコメント:

コメントを投稿