From 13e4bd582647221ea2ae6b71261edb11dda065fc Mon Sep 17 00:00:00 2001 From: Lucas Vanhalst Date: Thu, 3 Oct 2019 15:27:08 +0200 Subject: [PATCH] Add mute/unMute functionality --- .../chromecastsender/ChromecastYouTubePlayer.kt | 15 +++++++++++++++ .../youtube/ChromecastCommunicationConstants.kt | 6 +++++- .../core/player/YouTubePlayer.kt | 3 +++ .../core/player/views/WebViewYouTubePlayer.kt | 8 ++++++++ core/src/main/res/raw/ayp_youtube_player.html | 8 ++++++++ 5 files changed, 39 insertions(+), 1 deletion(-) diff --git a/chromecast-sender/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/chromecast/chromecastsender/ChromecastYouTubePlayer.kt b/chromecast-sender/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/chromecast/chromecastsender/ChromecastYouTubePlayer.kt index 78342839..5a019a76 100644 --- a/chromecast-sender/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/chromecast/chromecastsender/ChromecastYouTubePlayer.kt +++ b/chromecast-sender/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/chromecast/chromecastsender/ChromecastYouTubePlayer.kt @@ -66,6 +66,21 @@ class ChromecastYouTubePlayer internal constructor(private val chromecastCommuni chromecastCommunicationChannel.sendMessage(message) } + override fun mute() { + val message = JSONUtils.buildFlatJson( + "command" to ChromecastCommunicationConstants.MUTE + ) + + chromecastCommunicationChannel.sendMessage(message) + } + + override fun unMute() { + val message = JSONUtils.buildFlatJson( + "command" to ChromecastCommunicationConstants.UNMUTE + ) + + chromecastCommunicationChannel.sendMessage(message) + } override fun setVolume(volumePercent: Int) { val message = JSONUtils.buildFlatJson( diff --git a/chromecast-sender/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/chromecast/chromecastsender/io/youtube/ChromecastCommunicationConstants.kt b/chromecast-sender/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/chromecast/chromecastsender/io/youtube/ChromecastCommunicationConstants.kt index 0abf35ba..933cefdd 100644 --- a/chromecast-sender/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/chromecast/chromecastsender/io/youtube/ChromecastCommunicationConstants.kt +++ b/chromecast-sender/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/chromecast/chromecastsender/io/youtube/ChromecastCommunicationConstants.kt @@ -27,6 +27,8 @@ internal object ChromecastCommunicationConstants { const val PAUSE = "PAUSE" const val SET_VOLUME = "SET_VOLUME" const val SEEK_TO = "SEEK_TO" + const val MUTE = "MUTE" + const val UNMUTE = "UNMUTE" fun asJson() = JSONUtils.buildFlatJson( IFRAME_API_READY to IFRAME_API_READY, @@ -45,6 +47,8 @@ internal object ChromecastCommunicationConstants { PLAY to PLAY, PAUSE to PAUSE, SET_VOLUME to SET_VOLUME, - SEEK_TO to SEEK_TO + SEEK_TO to SEEK_TO, + MUTE to MUTE, + UNMUTE to UNMUTE ) } \ No newline at end of file diff --git a/core/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/core/player/YouTubePlayer.kt b/core/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/core/player/YouTubePlayer.kt index 780d6d7f..7fdfdeac 100644 --- a/core/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/core/player/YouTubePlayer.kt +++ b/core/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/core/player/YouTubePlayer.kt @@ -23,6 +23,9 @@ interface YouTubePlayer { fun play() fun pause() + fun mute() + fun unMute() + /** * @param volumePercent Integer between 0 and 100 */ diff --git a/core/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/core/player/views/WebViewYouTubePlayer.kt b/core/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/core/player/views/WebViewYouTubePlayer.kt index c167b877..d1d5a35d 100644 --- a/core/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/core/player/views/WebViewYouTubePlayer.kt +++ b/core/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/core/player/views/WebViewYouTubePlayer.kt @@ -56,6 +56,14 @@ internal class WebViewYouTubePlayer constructor(context: Context, attrs: Attribu mainThreadHandler.post { loadUrl("javascript:pauseVideo()") } } + override fun mute() { + mainThreadHandler.post { loadUrl("javascript:mute()") } + } + + override fun unMute() { + mainThreadHandler.post { loadUrl("javascript:unMute()") } + } + override fun setVolume(volumePercent: Int) { if (volumePercent < 0 || volumePercent > 100) throw IllegalArgumentException("Volume must be between 0 and 100") diff --git a/core/src/main/res/raw/ayp_youtube_player.html b/core/src/main/res/raw/ayp_youtube_player.html index 7ba6e1d4..84d99ac2 100644 --- a/core/src/main/res/raw/ayp_youtube_player.html +++ b/core/src/main/res/raw/ayp_youtube_player.html @@ -132,6 +132,14 @@ YouTubePlayerBridge.sendVideoId(videoId); } + function mute() { + player.mute(); + } + + function unMute() { + player.unMute(); + } + function setVolume(volumePercent) { player.setVolume(volumePercent); }