diff options
author | Hailey <me@haileyok.com> | 2024-08-09 03:05:12 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-09 11:05:12 +0100 |
commit | cb574b7be3757c25063957ff561bae6f1be7577f (patch) | |
tree | 5a351be0e58bf36be131af489d83903e7e65e142 /modules | |
parent | a4f0c9c753ec8844eda094080d81fbba566de7df (diff) | |
download | voidsky-cb574b7be3757c25063957ff561bae6f1be7577f.tar.zst |
[Videos] Add iOS function to set `AVAudioSession.CategoryOptions` to `.mixWithOthers` (#4905)
* audio mixing pref * lint
Diffstat (limited to 'modules')
4 files changed, 26 insertions, 0 deletions
diff --git a/modules/expo-bluesky-swiss-army/ios/PlatformInfo/ExpoPlatformInfoModule.swift b/modules/expo-bluesky-swiss-army/ios/PlatformInfo/ExpoPlatformInfoModule.swift index 4a1e6d7e7..ff1148a0b 100644 --- a/modules/expo-bluesky-swiss-army/ios/PlatformInfo/ExpoPlatformInfoModule.swift +++ b/modules/expo-bluesky-swiss-army/ios/PlatformInfo/ExpoPlatformInfoModule.swift @@ -7,5 +7,15 @@ public class ExpoPlatformInfoModule: Module { Function("getIsReducedMotionEnabled") { return UIAccessibility.isReduceMotionEnabled } + + Function("setAudioMixWithOthers") { (mixWithOthers: Bool) in + var options: AVAudioSession.CategoryOptions + if mixWithOthers { + options = [.mixWithOthers] + } else { + options = [] + } + try? AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.playback, mode: .default, options: options) + } } } diff --git a/modules/expo-bluesky-swiss-army/src/PlatformInfo/index.native.ts b/modules/expo-bluesky-swiss-army/src/PlatformInfo/index.native.ts index e05f173d6..949bd78a2 100644 --- a/modules/expo-bluesky-swiss-army/src/PlatformInfo/index.native.ts +++ b/modules/expo-bluesky-swiss-army/src/PlatformInfo/index.native.ts @@ -1,3 +1,4 @@ +import {Platform} from 'react-native' import {requireNativeModule} from 'expo-modules-core' const NativeModule = requireNativeModule('ExpoPlatformInfo') @@ -5,3 +6,8 @@ const NativeModule = requireNativeModule('ExpoPlatformInfo') export function getIsReducedMotionEnabled(): boolean { return NativeModule.getIsReducedMotionEnabled() } + +export function setAudioMixWithOthers(mixWithOthers: boolean): void { + if (Platform.OS !== 'ios') return + NativeModule.setAudioMixWithOthers(mixWithOthers) +} diff --git a/modules/expo-bluesky-swiss-army/src/PlatformInfo/index.ts b/modules/expo-bluesky-swiss-army/src/PlatformInfo/index.ts index 9b9b7fc0c..2665748b0 100644 --- a/modules/expo-bluesky-swiss-army/src/PlatformInfo/index.ts +++ b/modules/expo-bluesky-swiss-army/src/PlatformInfo/index.ts @@ -3,3 +3,7 @@ import {NotImplementedError} from '../NotImplemented' export function getIsReducedMotionEnabled(): boolean { throw new NotImplementedError() } + +export function setAudioMixWithOthers(mixWithOthers: boolean): void { + throw new NotImplementedError({mixWithOthers}) +} diff --git a/modules/expo-bluesky-swiss-army/src/PlatformInfo/index.web.ts b/modules/expo-bluesky-swiss-army/src/PlatformInfo/index.web.ts index c7ae6b7cd..917c97396 100644 --- a/modules/expo-bluesky-swiss-army/src/PlatformInfo/index.web.ts +++ b/modules/expo-bluesky-swiss-army/src/PlatformInfo/index.web.ts @@ -1,6 +1,12 @@ +import {NotImplementedError} from '../NotImplemented' + export function getIsReducedMotionEnabled(): boolean { if (typeof window === 'undefined') { return false } return window.matchMedia('(prefers-reduced-motion: reduce)').matches } + +export function setAudioMixWithOthers(mixWithOthers: boolean): void { + throw new NotImplementedError({mixWithOthers}) +} |