こんにちは、あんどろいどりんご(@mstssk)です。
Android 5.0 Lollipopで、Notification関係が色々変わりました。
Material Design化、アイコンの自動脱色、アクセントカラー、設定へのショートカット、ロックスクリーン上の表示、publicVersion、Heads-up Notification、重要モード、カテゴリの設定、連絡先の紐付け、MediaStyle…という風に列記しただけでも気が遠くなります。
それらNotificationの変更点について、C87で頒布したTechBoosterのAndroid本「甘味アンドロイドパーク」の第5章「Android 5.0でのNotification」にて一通り解説しています。
Notificationの変化の中で、tickerTextの役割も大きく変更されました。
本記事では「甘味アンドロイドパーク」で解説できなかった(というか間違えた)tickerTextの変更について解説します。エラッタも兼ねています。
エラッタ(正誤表)
甘味アンドロイドパーク 67ページ(電子版:70ページ)
内容 | |
---|---|
誤 | Ticker textがDeprecatedになり、表示すらされなくなりました。 |
正 | Ticker textはステータスバーに表示されなくなり、アクセシビリティサービスにNotificationの内容をテキストで知らせるものになりました。 |
解説
tickerTextはアクセシビリティサービスが使う
Android 5.0でtickerTextはステータスバーに表示されなくなりました。
しかし、Deprecatedになったわけではありません。
「アクセシビリティサービスにNotification内容をテキストで知らせるもの」という役割に変更されています。
公式ドキュメントの Notification#tickerText についての説明は、
「もう画面に表示されません。しかしアクセシビリティサービスにとって有用です(Notificationの読み上げなど)。」
という内容に更新されています。
As of the L release, this text is no longer shown on screen,
but it is still useful to accessibility services (where it serves as an audible announcement of the notification's appearance).
https://developer.android.com/reference/android/app/Notification.html#tickerText
Notification.BuilderのsetTicker(CharSequence)メソッドも同様です。
「アクセシビリティサービスに送信するテキストを設定する」という説明になっています。
Set the "ticker" text which is sent to accessibility services.
https://developer.android.com/intl/ja/reference/android/app/Notification.Builder.html#setTicker(java.lang.CharSequence)
tickerViewはDeprecated
Deprecatedではないのは、あくまでtickerTextです。
ステータスバー表示のためのtickerViewはDeprecatedになっています。
Notification.Builder#setTicker(CharSequence, RemoteViews)
も恐らく同じ理由でDeprecatedです。
※tickerTextとtickerViewを一緒に設定するメソッド
tickerTextの今後の役割
※あくまで想像。Android Auto関係は調べてないので的はずれかも。
何故tickerTextをDeprecatedにせず、あくまでアクセシビリティサービスに通知する、という役割を残したのでしょうか。
以下の様な理由があると考えています
- Notificationはユーザーを煩わせるもの、という思想の反映によるtickerTextの非表示化
- 一方でAndroid Autoへの対応のため通知の読み上げという道を残した
- 車載の画面にずらずらテキストが表示されるのは余所見の原因になり危ない
- 運転中はNotificationの要約(tickerText)を読み上げる利用ケースを想定している
Notificationについての公式のドキュメントでは「ユーザーの注意や関心はユーザーにとってのリソースであり、それを徒に着信音やバイブレーションで消費する事は避けるべき」といった事が書いてあり、ユーザーの邪魔をしないようなNotificationを実装するべきだと結構強い感じで解説しています。
Android 5.0では、Notificationでユーザーを極力煩わせないようにしつつ、重要なもののみHeads-up Notificationで表示する、という思想となっているようです。
(とはいえ、今回のNotification周りの変更はあんまりユーザーフレンドリーじゃないと思うのでもんにょりするんですが、それはこことは別の話)