LoginSignup
14
12

More than 5 years have passed since last update.

[Android][AppCompat]AppCompat22.2.0でv7.NotificationCompatが追加されてMediaStyleが使えるようになっていた

Posted at

Android Support Libraryは最近とても増えていますし、後方互換やらバグ修正が盛んでとっても喜ばしいことと思います。

Support Library

特にv4 Support Libraryとか、v7 Support Libraryとか使うと思います。
あとはDesign Support Libraryとか簡単にMaterialデザインにできるので、最近話題になってますよね。

android.support.v4.app.NotificationCompat

自分はNotificationの後方互換でNotificationCompatとか使っていました。
これはBuilder使う書き方だけ実装されてるんですが、バージョンごとにうまいことやってくれるので重宝します。

NotificationCompat(v4)ではNotification.MediaStyleが使えない。。

NotificationCompat.setStyle() can't get Notification.MediaStyle
こちらのスレですね。。

今更、Lollipopで追加されたNotificatio.MediaStyleの実装を使用として、気づいたのですがSupportLibrary22.1.0のNotificationCompat(v4)ではMediaStyleがありませんでした。。

上記のスレは

new NotificationCompat.Builder(this).setStyle(new Notification.MediaStyle()
         .setMediaSession(mySession))

これができない!という話です。。

解決策でAnswer1(2014 Oct)で言われてるのは自分でBuilderのCompatコードを書いてV21Builderとそれ以前を分ける、という方法。。
まあ、SupportLibrary自体の実装も同じようなものですし、よくやりますが、面倒なので、やりたくないなーと思ったら、最後の回答(2015 Jun)に

There is no NotificationCompat.MediaStyle in v4 package, however, it does exist in v7 package. Make sure to import:

import android.support.v7.app.NotificationCompat;

instead of the v4 package. It's working for me as of v22.2.0 of the appcompat library.

って書いてあります!
v4だったりv7だったりもはやよくわかりませんが、解決できそうなので最新のv22.2.0にしてみました!

android.support.v7.app.NotificationCompat

これが救世主ですが、NotificationCompatがSupportLibrary v22.2.0ではもう一つ追加されていました!
NotificationCompat
えwって感じですね。

で、肝心の実装内容ですが、、本当にNotificationCompatを拡張してNotificationCompat.MediaStyleを設定できるようにしてあるだけでしたw

Notification noti = new NotificationCompat.Builder()
     .setSmallIcon(R.drawable.ic_stat_player)
     .setContentTitle("Track title")
     .setContentText("Artist - Album")
     .setLargeIcon(albumArtBitmap))
     .setStyle(new NotificationCompat.MediaStyle()
         .setMediaSession(mySession))
     .build();

こんな感じで使えます。

v7のパッケージに実装した理由がMediaSessionCompatがv7なのかと思いましたが、v4ですね。。

MediaSessionCompat.Token

詳しく追えばわかるかと思いますが、きっと難しい事情があるのでしょう。
もしくはv4単体ではもう使って欲しくないのかもしれませんね。
v4に本体を残しているのもMediaStyle使っていない人に置換させる手間をかけさせないためでしょう。

とりあえず、若干もやもやしますが、これからはMediaStyleも後方サポートしつつ簡潔に書けるので普通に使っていきましょう!

14
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
12