1|2|3|4音声入力のためのノーティフィケーションを通知する「SetupFragment」SetupFragmentは、音声入力のためのノーティフィケーションを通知するための画面です。SetupFragment画面イメージ(図12の再掲)Fragmentは大体どれも同じような画面構成になっているので、このFragmentを例に共通点を説明していきます。中央に表示されているアイコンは、こうしたリソースがAndroidに用意されているわけではなく、アプリが自前で用意したものです。Wear全体的に円いアイコンがよく使われていて、特に白抜きのシンプルなアイコンはシステムが標準で採用しているデザインです。今回のアプリも、そのデザインに合わせてあります。アイコンは、通常時および押下時/フォーカス時で2種類用意しています。通常時アイコン(左)と押下時アイコン(右)どちらもサイズは200×200ピクセルです。これをsetup_button.xmlという名前で以下のように定義することで、通常時と押下時のイメージをシステムが自動的に切り替えてくれるようになります。/></selector>このsetup_buttonを幅、高さ共に75dpのButtonのバックグラウンドに設定すると、スクリーンサイズの3分の1程度の、文字サイズとバランスの取れたちょうど良い大きさのボタンを作成できます。アイコンの色とフォントの色は青系統で統一してあります。フォント色はあらかじめ用意されている「@color/blue」を使用しています。レイアウトは以下のようになっています。/></RelativeLayout>属性は省略していますが、見た通りの構成であることが分かるかと思います。各Fragmentの共通点は以上です。それではSetupFragmentの実装の詳細を説明していきます。onCreateView()です。view;}定義ファイルをLayoutInflaterで読み込み、Buttonを取得してリスナーを登録します。ボタンがタップされた際に呼び出しているのはsetup()というメソッドです。このメソッドでは、RemoteInputを持つノーティフィケーションを通知しています。コード内にコメントで説明を記載しているので、参考にしてください。getActivity().finish();}コメント内の(1)で、「EXTRA_REPLY」というキーを指定しています。これはMyActivityのjudgeLaunchReason()で音声により入力された文字列を取り出す際に用いたもので、同じ文字列を使用する必要があります。コメント内の(2)では、NotificationManagerの代わりにNotificationManagerCompatを使用しています。コラム「今後はNotificationManagerではなくNotificationManagerCompatで」ノーティフィケーションは最近のAndroidのバージョンアップで機能がかなり強化されました。「新しい機能を使用したいけど、古いバージョンもサポートしたい」というシチュエーションのために用意されているのがNotificationManagerCompatです。Wearでも今後、ノーティフィケーションの機能が追加/変更されることが予測されるため、NotificationManagerの代わりにNotificationManagerCompatを使用するように心掛けましょう。コメント内の(2)では、不要になったノーティフィケーションをアプリから消すために、「NOTIFICATION_ID」という定数を使用して通知しています。コメント内の(3)では、ノーティフィケーション通知後、アプリを終了するようにしています。本来はアプリを終了することなく音声入力を行い、その結果を受け取りたかったのですが、その方法が調べきれず、ノーティフィケーションからの音声入力後にアプリを再起動する、という方式にしました。方法が判明したら、本連載でその方法を解説しようと思います。登録した電話番号を解除する「ResetFragment」ResetFragmentは、登録した電話番号を解除するためのFragmentです。ResetFragment(図18の再掲)onCreateView()はSetupFragmentと同様、ボタンにリスナーを登録しているだけなので、説明は省略します。リスナーから呼び出される電話番号リセット処理はreset()という名前のメソッドで、実装は以下のとおりです。getActivity().finish();}SharedPreferenceに登録されている電話番号を削除し、アプリを終了しています。アプリを終了せずに電話番号登録画面に遷移させるようにしても良かったのですが、MyActivityで使用しているPagerViewerのみでは実現できませんでした。FragmentManagerやFragmentTransitionを使用して、Fragmentを重ね合わせるなどを行うことで実現できる見込みですが、サンプルとしてのシンプルさが損なわれてしまうため、いったん終了することにしています。Google、タクシーを呼ぶ」と話してアプリを起動し直します。登録された電話番号に電話をかける「CallFragment」CallFragmentは登録された電話番号に電話をかけるためのFragmentです。タクシーを呼ぶ(図17の再掲)音声入力により登録された電話番号をSharedPreferenceから取り出し、TextViewに設定している以外は、他のFragmentと同様です。以下に該当部分のみ抜粋しました。textView.setText(number);......(省略)......}次回は電話をする処理とスマホ側のAndroidアプリの実装タクシーを呼ぶアイコンをタップしても、現時点では何も行いません。登録された電話番号に電話をするための処理は、次回のスマートフォン側の実装と合わせて解説します。KitKatの新機能39選もはや無料BaaS。これらに対応したアプリを開発するには、どこを見ればいいのか。概要とともに簡単にまとめてみた。ウェアラブル端末連携のためのAPIなどが盛り込まれている。WearやIoTでの活用で注目したい、Androidがサポートするステップカウンター/検出器、回転ベクター/接近/温度/湿度/気圧/照度センサーなどについて解説。Androidで動く携帯Javaアプリ作成入門(51):ウェアラブル時代に見直したいAndroidの加速度/重力センサー、ジャイロスコープIoT/ウェアラブル時代に見直したいセンシング技術。Androidがサポートするセンサー一覧や基本的なセンサーアプリの作り方を解説します。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。