feat(ios): add PublicAudioSessionManager for audio session management (#4747)
This commit is contained in:
@@ -7,8 +7,12 @@ class AudioSessionManager {
|
||||
private var videoViews = NSHashTable<RCTVideo>.weakObjects()
|
||||
private var isAudioSessionActive = false
|
||||
private var remoteControlEventsActive = false
|
||||
private var isAudioSessionManagementForcedDisabled = false
|
||||
|
||||
private var isAudioSessionManagementDisabled: Bool {
|
||||
if isAudioSessionManagementForcedDisabled {
|
||||
return true
|
||||
}
|
||||
// If no views are registered, disable audio session management
|
||||
if videoViews.allObjects.isEmpty {
|
||||
return true
|
||||
@@ -43,6 +47,10 @@ class AudioSessionManager {
|
||||
|
||||
// MARK: - Public API
|
||||
|
||||
func setIsAudioSessionManagementForcedDisabled(disabled: Bool) {
|
||||
isAudioSessionManagementForcedDisabled = disabled
|
||||
}
|
||||
|
||||
func registerView(view: RCTVideo) {
|
||||
if videoViews.contains(view) {
|
||||
return
|
||||
|
||||
9
ios/Video/PublicAudioSessionManager.swift
Normal file
9
ios/Video/PublicAudioSessionManager.swift
Normal file
@@ -0,0 +1,9 @@
|
||||
import Foundation
|
||||
|
||||
@objc
|
||||
public class PublicAudioSessionManager: NSObject {
|
||||
@objc
|
||||
public static func setIsAudioSessionManagementDisabled(_ disabled: Bool) {
|
||||
AudioSessionManager.shared.setIsAudioSessionManagementForcedDisabled(disabled: disabled)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user