WakeLockを自動で取得
バックグラウンドでの安定して再生させるためにWakeLockを取得するわけですが、WakeLockは取得したままだと電池を消耗してしまうので再生状態に応じてWakeLockを自動で取得 / 開放してくれる機能が付きました。
Add automatic WakeLock handling to SimpleExoPlayer, which can be enabled by calling SimpleExoPlayer.setHandleWakeLock (#5846). To use this feature, you must add the WAKE_LOCK permission to your application's manifest file.
使い方はかんたん。 setHandleWakeLock
で true
を設定するだけ
SimpleExoPlayer.Builder(context).build().also {
it.setHandleWakeLock(true)
}
中を見てみると WakeLockManager という WakeLock
を管理するクラスがいて、こいつが管理する模様。Streaming再生する場合は、 WifiLock
も同じところで取るだろうから、 #5846 のissueにかかれているように WifiLock
も取れるオプションつけてくれるともっと嬉しかったですね。
イヤホンが外れたら再生を止める
今まで、ブロードキャストで流れてくる ACTION_AUDIO_BECOMING_NOISY
を受けとって自分で止める処理を書かないといけなかったですが、自動で止めてくれるオプションが入りました。
Add automatic "audio becoming noisy" handling to SimpleExoPlayer, which can be enabled by calling SimpleExoPlayer.setHandleAudioBecomingNoisy.
使い方はかんたん。 setHandleAudioBecomingNoisy
で true
を設定するだけ
SimpleExoPlayer.Builder(context).build().also {
it.setHandleAudioBecomingNoisy(true)
}
イヤホン外れても再生し続けるとかなかなかないと思うので、デフォルトでOnでもいいんじゃないかと思うオプションですね。BroadcastReceiverに登録・解除するのがまるっとなくなるのは良いですが、受信しているときにしている処理が停止しているだけなので、そのときに一緒に別の処理をしたい場合は自前で書くしか無いのがつらいです。