From 41faaffd342bf46e15b48673aeeb6de378361395 Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Wed, 11 Jan 2023 11:42:31 +0100 Subject: [PATCH] video: stop when becoming noisy --- CHANGELOG.md | 2 ++ .../aves/channel/calls/MediaSessionHandler.kt | 20 +++++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e19fc93b..39e9e869b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ All notable changes to this project will be documented in this file. - Viewer: optionally show description on overlay - Collection: unlocated/untagged overlay icons +- Video: stop when losing audio focus +- Video: stop when becoming noisy - Czech translation (thanks vesp) ### Changed diff --git a/android/app/src/main/kotlin/deckers/thibault/aves/channel/calls/MediaSessionHandler.kt b/android/app/src/main/kotlin/deckers/thibault/aves/channel/calls/MediaSessionHandler.kt index 327a9eded..b72f0de11 100644 --- a/android/app/src/main/kotlin/deckers/thibault/aves/channel/calls/MediaSessionHandler.kt +++ b/android/app/src/main/kotlin/deckers/thibault/aves/channel/calls/MediaSessionHandler.kt @@ -1,7 +1,7 @@ package deckers.thibault.aves.channel.calls -import android.content.ComponentName -import android.content.Context +import android.content.* +import android.media.AudioManager import android.media.session.PlaybackState import android.net.Uri import android.support.v4.media.MediaMetadataCompat @@ -24,6 +24,14 @@ class MediaSessionHandler(private val context: Context, private val mediaCommand private val ioScope = CoroutineScope(SupervisorJob() + Dispatchers.IO) private var session: MediaSessionCompat? = null + private var wasPlaying = false + private val noisyAudioReceiver = object : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + if (intent.action == AudioManager.ACTION_AUDIO_BECOMING_NOISY) { + mediaCommandHandler.onStop() + } + } + } override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) { when (call.method) { @@ -94,6 +102,14 @@ class MediaSessionHandler(private val context: Context, private val mediaCommand isActive = true } } + + val isPlaying = state == PlaybackStateCompat.STATE_PLAYING + if (!wasPlaying && isPlaying) { + context.registerReceiver(noisyAudioReceiver, IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY)) + } else if (wasPlaying && !isPlaying) { + context.unregisterReceiver(noisyAudioReceiver) + } + wasPlaying = isPlaying } result.success(null)