[Video] Resume background audio whenever muting video audio (#4915)

This commit is contained in:
Hailey 2024-08-09 16:52:23 -07:00 committed by GitHub
parent c2131bb039
commit 65d6e561d4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 28 additions and 17 deletions

View file

@ -13,20 +13,29 @@ public class ExpoPlatformInfoModule: Module {
try? AVAudioSession.sharedInstance().setCategory(audioCategory)
}
Function("setAudioMixWithOthers") { (mixWithOthers: Bool) in
var options: AVAudioSession.CategoryOptions
Function("setAudioActive") { (active: Bool) in
var categoryOptions: AVAudioSession.CategoryOptions
let currentCategory = AVAudioSession.sharedInstance().category
if mixWithOthers {
options = [.mixWithOthers]
if active {
categoryOptions = [.mixWithOthers]
try? AVAudioSession.sharedInstance().setActive(true)
} else {
options = [.duckOthers]
categoryOptions = [.duckOthers]
try? AVAudioSession
.sharedInstance()
.setActive(
false,
options: [.notifyOthersOnDeactivation]
)
}
try? AVAudioSession
.sharedInstance()
.setCategory(
currentCategory,
mode: .default,
options: options
options: categoryOptions
)
}
}

View file

@ -9,9 +9,9 @@ export function getIsReducedMotionEnabled(): boolean {
return NativeModule.getIsReducedMotionEnabled()
}
export function setAudioMixWithOthers(mixWithOthers: boolean): void {
export function setAudioActive(active: boolean): void {
if (Platform.OS !== 'ios') return
NativeModule.setAudioMixWithOthers(mixWithOthers)
NativeModule.setAudioActive(active)
}
export function setAudioCategory(audioCategory: AudioCategory): void {

View file

@ -6,11 +6,13 @@ export function getIsReducedMotionEnabled(): boolean {
}
/**
* Set whether the app's audio should mix with other apps' audio.
* Set whether the app's audio should mix with other apps' audio. Will also resume background music playback when `false`
* if it was previously playing.
* @param mixWithOthers
* @see https://developer.apple.com/documentation/avfaudio/avaudiosession/setactiveoptions/1616603-notifyothersondeactivation
*/
export function setAudioMixWithOthers(mixWithOthers: boolean): void {
throw new NotImplementedError({mixWithOthers})
export function setAudioActive(active: boolean): void {
throw new NotImplementedError({active})
}
/**

View file

@ -8,8 +8,8 @@ export function getIsReducedMotionEnabled(): boolean {
return window.matchMedia('(prefers-reduced-motion: reduce)').matches
}
export function setAudioMixWithOthers(mixWithOthers: boolean): void {
throw new NotImplementedError({mixWithOthers})
export function setAudioActive(active: boolean): void {
throw new NotImplementedError({active})
}
export function setAudioCategory(audioCategory: AudioCategory): void {