見せたいね2019-08-18ObservableでないプロパティをKotlinのChannelで定期的に通知させるAndroidコールバックがなくて値が変わった時にそのことがわからないようなプロパティを観測可能にしたい。KotlinのChannelの機能を使ってそれっぽい仕組みを作ってみた。1.1.1)ではExperimental。Androidで動画や音楽を再生するときに使うMediaPlayerは再生の進捗状況を外部に通知する機能がない。そこでMediaPlayer.currentPositionを定期的に読み取ってChannelに流すことにする。そのChannelを購読してプログレスバーや残り時間のテキストを更新する。MediaPlayerを保持する関係上、ActivityやFragmentにCoroutineScopeを実装して、そのなかでReceiveChannelを作ったりそれを購読するためのコルーチンを起動しなければならない。次のようなCoroutineScopeを実装してActivityで使えるようにする。{}でラップしてReceiveChannelをつくり、launchして流れてくるたびにViewを更新する。}値が変わった時だけ流したりとか、経過時間を表示するか残り時間を表示するかはお好みで。Dispatcherを変えたりしたほうがいいのか、でも変えるとうまくいかないのかとか、いろんな試行錯誤はまだやっていないがとりあえず動いているっぽいという感じ。間違っていたりよくない使い方をしているようでしたら教えてください。読者になるリンクはてなブログブログをはじめる(無料)お知らせ検索はてなブログをはじめよう!akihito104さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。