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 videoViews = NSHashTable<RCTVideo>.weakObjects()
|
||||||
private var isAudioSessionActive = false
|
private var isAudioSessionActive = false
|
||||||
private var remoteControlEventsActive = false
|
private var remoteControlEventsActive = false
|
||||||
|
private var isAudioSessionManagementForcedDisabled = false
|
||||||
|
|
||||||
private var isAudioSessionManagementDisabled: Bool {
|
private var isAudioSessionManagementDisabled: Bool {
|
||||||
|
if isAudioSessionManagementForcedDisabled {
|
||||||
|
return true
|
||||||
|
}
|
||||||
// If no views are registered, disable audio session management
|
// If no views are registered, disable audio session management
|
||||||
if videoViews.allObjects.isEmpty {
|
if videoViews.allObjects.isEmpty {
|
||||||
return true
|
return true
|
||||||
@@ -43,6 +47,10 @@ class AudioSessionManager {
|
|||||||
|
|
||||||
// MARK: - Public API
|
// MARK: - Public API
|
||||||
|
|
||||||
|
func setIsAudioSessionManagementForcedDisabled(disabled: Bool) {
|
||||||
|
isAudioSessionManagementForcedDisabled = disabled
|
||||||
|
}
|
||||||
|
|
||||||
func registerView(view: RCTVideo) {
|
func registerView(view: RCTVideo) {
|
||||||
if videoViews.contains(view) {
|
if videoViews.contains(view) {
|
||||||
return
|
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