Androidで動く携帯Javaアプリ作成入門
連載インデックスへ
Androidで動く携帯Javaアプリ作成入門(29)

Androidのウィジェットにノーティフィケーションするには


株式会社イーフロー
緒方聡
2012/2/16

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

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

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

 「リモコン」というと、赤外線が出る機器を想像するかもしれませんが、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の構成

デフォルトのレイアウトのコード

 これらは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つ表示されてしまう

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

 デフォルトのNotificationは、その名のとおり通知ぐらいにしか使用できません。しかし、Notificationは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

 Index
第29回 Androidのウィジェットにノーティフィケーションするには
Page1
Android 4.0の新機能オーディオリモコンを使う
Notificationのデフォルトのレイアウト
RemoteViewsを使ったオリジナルのレイアウト
  Page2
オーディオリモコン用のNotificationの実装
RemoteViewsを使ったカスタムレイアウトの5カ条

Androidで動く携帯Javaアプリ作成入門 バックナンバー 連載インデックスへ»


ご意見、ご感想は Smart&Social 会議室へどうぞ


 Smart&Social フォーラム トップページへ


TechTargetジャパン

Smart & Social フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH