連載
» 2012年02月16日 00時00分 UPDATE

Androidで動く携帯Javaアプリ作成入門(29):Androidのウィジェットにノーティフィケーションするには (1/2)

[緒方聡,株式会社イーフロー]

Android 4.0の新機能オーディオリモコンを使う

 今回は、連載第26回の「開発者が知らないと損するAndroid 4.0の新機能44選」で取り上げたAndroid 4.0の新機能の中から「オーディオリモコン」と呼ばれている機能を紹介します。

図1 リモートコントロール 図1 リモートコントロール

 「リモコン」というと、赤外線が出る機器を想像するかもしれませんが、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の使い方は、次回紹介します。

 今回のサンプルアプリは、以下よりダウンロードしてください。

 まずは、以下の短い動画を見てみてください。サンプルアプリを動かしています。


 Notificationには、デフォルトのレイアウトで使う方法と、オリジナルのレイアウトで使う方法の2つがあります。順に紹介します。

Notificationのデフォルトのレイアウト

デフォルトのレイアウトの見え方

 動画で最初に表示した夏目漱石のNotificationがデフォルトのレイアウトを使用しています。

図2 デフォルトのNotificationの構成 図2 デフォルトの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と同時に指定すると、以下のような残念なことになってしまいます。

図3 アイコンが2つ表示されてしまう 図3 アイコンが2つ表示されてしまう

RemoteViewsを使ったオリジナルのレイアウト

 デフォルトのNotificationは、その名のとおり通知ぐらいにしか使用できません。しかし、NotificationはRemoteViewsを設定して、好みのレイアウトを使用可能です。

図4 RemoteViewsを使用したカスタムレイアウト 図4 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について解説します。

       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

Focus

- PR -

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。