video: stop when becoming noisy

This commit is contained in:
Thibault Deckers 2023-01-11 11:42:31 +01:00
parent 856050f7b3
commit 41faaffd34
2 changed files with 20 additions and 2 deletions

View file

@ -8,6 +8,8 @@ All notable changes to this project will be documented in this file.
- Viewer: optionally show description on overlay - Viewer: optionally show description on overlay
- Collection: unlocated/untagged overlay icons - Collection: unlocated/untagged overlay icons
- Video: stop when losing audio focus
- Video: stop when becoming noisy
- Czech translation (thanks vesp) - Czech translation (thanks vesp)
### Changed ### Changed

View file

@ -1,7 +1,7 @@
package deckers.thibault.aves.channel.calls package deckers.thibault.aves.channel.calls
import android.content.ComponentName import android.content.*
import android.content.Context import android.media.AudioManager
import android.media.session.PlaybackState import android.media.session.PlaybackState
import android.net.Uri import android.net.Uri
import android.support.v4.media.MediaMetadataCompat 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 val ioScope = CoroutineScope(SupervisorJob() + Dispatchers.IO)
private var session: MediaSessionCompat? = null 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) { override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) {
when (call.method) { when (call.method) {
@ -94,6 +102,14 @@ class MediaSessionHandler(private val context: Context, private val mediaCommand
isActive = true 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) result.success(null)