Android 4.0の新機能オーディオリモコンを使う
今回は、連載第26回の「開発者が知らないと損するAndroid 4.0の新機能44選」で取り上げたAndroid 4.0の新機能の中から「オーディオリモコン」と呼ばれている機能を紹介します。
「リモコン」というと、赤外線が出る機器を想像するかもしれませんが、Androidの「android.media.RemoteControlClient」クラスは「android.widget.RemoteViews」で使用可能なオーディオ制御機能であり、Android外部からの機器による操作ではありません。
Android 4.0では「ロック画面でオーディオ操作が可能になった」というのが一番の特徴ですが、 オーディオ操作は「android.app.Notification」でも操作機能が提供されています(エミュレータの音楽アプリでは、「App Widgets」からのみ遠隔操作可能です)。
RemoteViewsは連載第10回の「Androidのホーム画面に常駐するアプリを作るには」で取り上げたApp Widgetsを構成するコンポーネントの1つでした。今回は、同様にRemoteViewsを使用するNotification(ノーティフィケーション)の使い方を掘り下げます。RemoteControlとMediaPlayerの使い方は、次回紹介します。
今回のサンプルアプリは、以下よりダウンロードしてください。
まずは、以下の短い動画を見てみてください。サンプルアプリを動かしています。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
Notificationには、デフォルトのレイアウトで使う方法と、オリジナルのレイアウトで使う方法の2つがあります。順に紹介します。
Notificationのデフォルトのレイアウト
デフォルトのレイアウトの見え方
動画で最初に表示した夏目漱石のNotificationがデフォルトのレイアウトを使用しています。
デフォルトのレイアウトのコード
これらはNotifiactionのコンストラクタと、setLatestEventInfo()メソッドで指定できます。以下に処理を抜粋します。
notification = new Notification( R.drawable.souseki_l, // icon "I am a cat. I don't have a name. I cannot guess my hometown.", // tickerText System.currentTimeMillis()); // when notification.setLatestEventInfo(this, "I am a cat.", // contentTitle "NATSUME Souseki", // contentText pendingIntent);
フィールドの役割
それぞれ以下のような役割があります。
フィールド | 説明 |
---|---|
icon | Notificationのアイコン。Notifiationがステータスバーに存在する間、ずっと表示されるため、分かりやすいものが良い |
tickerText | Notification発生時に簡単な説明が可能。長い場合はスクロール |
contentTitle | Notificationのタイトル |
contentText | Notificationの説明 |
when | Notificationの発生した時刻 |
上記以外にも、LEDの点灯、サウンド再生、バイブレーションなどが指定可能ですが、よっぽどのことがない限り、これらは指定しない方がユーザーフレンドリーだと筆者は考えます。
「largeIcon」「icon」に注意
なお、デフォルトのレイアウトには「largeIcon」というフィールドが用意されていますが、iconと同時に指定すると、以下のような残念なことになってしまいます。
RemoteViewsを使ったオリジナルのレイアウト
デフォルトのNotificationは、その名のとおり通知ぐらいにしか使用できません。しかし、NotificationはRemoteViewsを設定して、好みのレイアウトを使用可能です。
左上からAnalogClock、Button、Chronometer、ImageButton、ImageView、ProgressBar、TextViewです。
Android 4.0のRemoteViews
RemoteViewsは連載第10回でApp Widgetsを取り上げた際にも使用しました。RemoteViewsでは使用できるウィジェットなどに制限があります。Android 4.0ではRemoteViewsは、以下をサポートします。
- レイアウト
- FrameLayout
- LinearLayout
- RelativeLayout
- ウィジェット(部品)
- AnalogClock
- Button
- Chronometer
- ImageButton
- ImageView
- ProgressBar
- TextView
- ViewFlipper
- ListView
- GridView
- StackView
- AdapterViewFlipper
Android 1.6のころに比べ、使用可能なウィジェットが増えています。今回使用したウィジェットは、Android 1.6から使用可能なものばかりを選定しています。
次ページでは、RemoteViewsの詳細やPendingIntent、BroadcastReceiverについて解説します。
Copyright © ITmedia, Inc. All Rights Reserved.