首页 > 解决方案 > iOS 音频:preferredPolarPattern 和 selectedPolarPattern 有什么区别?

问题描述

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

从文档:

/// 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);

标签: iosobjective-caudio

解决方案


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

首先,我们应该考虑AVAudioSessionDataSourceDescription对象,特别是在“配置麦克风方向性”小节中进行磨练。

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

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

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

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

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

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

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

这证实了何时preferredPolarPattern将不同于selectedPolarPattern

另请注意:

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

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


推荐阅读