【问题标题】:iOS Audio: What's the difference between preferredPolarPattern and selectedPolarPattern?iOS 音频:preferredPolarPattern 和 selectedPolarPattern 有什么区别?
【发布时间】:2021-09-09 17:05:05
【问题描述】:

preferredPolarPattern 和 selectedPolarPattern 有什么区别? 我已经阅读了文档herehere。也许我很密集,但我看不出两者之间的区别。有什么想法吗?

来自文档:

/// Describes the currently selected polar pattern.  Will be nil for data sources that have no
/// selectable patterns.
@property (readonly, nullable) AVAudioSessionPolarPattern selectedPolarPattern API_AVAILABLE(ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos, macos);

/// Describes the preferred polar pattern.  Will be nil for data sources that have no selectable
/// patterns or if no preference has been set.
@property (readonly, nullable) AVAudioSessionPolarPattern preferredPolarPattern API_AVAILABLE(ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos, macos);

【问题讨论】:

    标签: ios objective-c audio


    【解决方案1】:

    这更像是一个关于阅读苹果文档过程的问题,而不是纯粹的编程问题。

    首先,我们应该考虑AVAudioSessionDataSourceDescription 对象,特别是在配置麦克风方向性小节。

    阅读属性和方法很重要,因为有时重要信息不会在所有相关文章中复制。如果对象、属性或方法的功能不明确,请记得查看另见部分。

    在这种情况下,我们有两个属性乍一看似乎反映了相同的信息。

    这两个属性都处理麦克风的极性模式。在这里区分它们的关键字是 activepreferred。即便如此,这并不能填补所有空白,特别是当这两个属性具有不同的值时。

    这是我们应该阅读文档以获取更多线索的时候。是否有与这些相关的任何其他属性或方法?有supportedPolarPatterns,但这只是设备支持的一系列极性模式。对于preferredPolarPatternsetPreferredPolarPattern 有一个 setter 方法。没有setSelectedPolarPatternsetPolarPattern 方法。奇怪的!。这应该是关于方法行为的标志。

    请记住,使用 Apple 的 API,您不一定可以控制某些操作何时发生。

    这在setPreferredPolarPattern讨论中得到证实,我们在其中读到:

    调用此方法请求更改所选极性模式。要确定更改是否已生效,请检查 selectedPolarPattern 属性。

    这确认preferredPolarPattern 何时不同于selectedPolarPattern

    还要注意:

    如果数据源及其所属端口正在使用中,使用此方法更改方向性配置可能会导致路由重新配置。

    只有在设置音频会话的类别和模式并激活会话后才能设置首选极性模式。

    【讨论】:

    • 好吧,很公平。那么,有没有办法确定更改何时生效?我在任何地方都没有看到这方面的通知或委托。
    • 你可能会在你的 AVAudioSession 层次结构中的其他地方检查这个。这在某种程度上是没有实际意义的,因为要么请求将失败,您可以检查返回的BOOL 和填充的NSError,或者请求成功并且极坐标模式将在它发生变化时发生变化。如果不了解用例和工作示例,这有点棘手。我认为这是一个与提出的问题不同的问题。
    • 也就是说,鉴于更改极地可能会导致重新路由,您可能想看这里developer.apple.com/documentation/avfaudio/avaudiosession/…
    猜你喜欢
    • 2013-08-09
    • 2012-10-18
    • 2019-03-18
    • 2010-12-25
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多