feat: media card cover, controls, live progress, multi-session swipe
This commit is contained in:
@@ -304,7 +304,7 @@ class JsBridge(
|
||||
|
||||
fun setMediaListener(source: MediaSessionSource, webView: android.webkit.WebView) {
|
||||
mediaSourceRef = source
|
||||
source.start { info -> pushMedia(info, webView) }
|
||||
source.start { infos -> pushMedia(infos, webView) }
|
||||
}
|
||||
|
||||
// H5 页面就绪后重新拉取一次媒体:修复启动时推送早于页面渲染的时序问题
|
||||
@@ -314,9 +314,26 @@ class JsBridge(
|
||||
mediaSourceRef?.refresh()
|
||||
}
|
||||
|
||||
private fun pushMedia(info: MediaInfo?, webView: android.webkit.WebView) {
|
||||
// 媒体播放控制(作用于当前展示的会话)
|
||||
// Media transport controls (act on the currently shown session)
|
||||
@android.webkit.JavascriptInterface
|
||||
fun mediaPrevious() {
|
||||
mediaSourceRef?.previous()
|
||||
}
|
||||
|
||||
@android.webkit.JavascriptInterface
|
||||
fun mediaPlayPause() {
|
||||
mediaSourceRef?.playPause()
|
||||
}
|
||||
|
||||
@android.webkit.JavascriptInterface
|
||||
fun mediaNext() {
|
||||
mediaSourceRef?.next()
|
||||
}
|
||||
|
||||
private fun pushMedia(infos: List<MediaInfo>, webView: android.webkit.WebView) {
|
||||
webView.post {
|
||||
val json = info?.toJson() ?: "null"
|
||||
val json = gson.toJson(infos)
|
||||
webView.evaluateJavascript(
|
||||
"window.HearthEvents && window.HearthEvents.mediaSessionChanged($json);",
|
||||
null
|
||||
|
||||
Reference in New Issue
Block a user