AVFoundation - AVAudioSession.h (ENUM 、Value)


參考資料Apple

一、Values for the category property##

  • AVAudioSessionCategoryAmbient:后台播放(可與其他音樂混合):下雨聲、騎車發動機噪音等。靜音停止!
  • AVAudioSessionCategorySoloAmbient:后台播放,其他音樂都會停止。靜音停止!
  • AVAudioSessionCategoryPlayback:音樂軌道,獨占。靜音不停止!
  • AVAudioSessionCategoryRecord:錄制音頻。靜音不停止!
  • AVAudioSessionCategoryPlayAndRecord:播放音頻並且錄制。靜音不停止!
  • AVAudioSessionCategoryAudioProcessing:在硬件解碼信號過程中不能播放和錄制音頻,靜音不停止!
  • AVAudioSessionCategoryMultiRoute (6.0以上):通過可以用的音頻輔助設備和內置音頻硬件設備,我們可以自定義使用類型;

前提input/output限制為下面幾種:

Eligible Input

  • AVAudioSessionPortUSBAudio
  • AVAudioSessionPortHeadsetMic
  • AVAudioSessionPortBuiltInMic

Eligible Output

  • AVAudioSessionPortUSBAudio
  • AVAudioSessionPortLineOut
  • AVAudioSessionPortHeadphones
  • AVAudioSessionPortHDMI
  • AVAudioSessionPortBuiltInSpeaker

二、Values for the mode property##

類別的選擇是基於App的基本行為;
而模式的選擇多用於專業音頻的范疇,選擇一個模式將進一步確認App的音頻行為。一共7種模式。

  • AVAudioSessionModeDefault:默認模式
  • AVAudioSessionModeVideoRecording:使用攝像頭捕捉視頻。Record類別搭配
  • AVAudioSessionModeMeasurement:減少設備在處理音頻I/O 的信號量時的影響
  • AVAudioSessionModeMoviePlayback:只能用於內置揚聲器,電影播放場景中適當的信號處理
  • AVAudioSessionModeVideoChat:
  • AVAudioSessionModeSpokenAudio:
  • AVAudioSessionModeVoiceChat:Voip,這樣模式只能跟PlayAndRecord模式搭配。信號通過系統優化語音,(再理解)
  • AVAudioSessionModeGameChat:游戲程序(不介紹)

三、ENUM##

1.AVAudioSessionInterruptionOptions

  • AVAudioSessionInterruptionOptionShouldResume:重啟

2.AVAudioSessionSetActiveOptions

  • AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation:通知中斷的應用程序被中斷已結束,可以申請恢復播放。只有有效的Session才會失活。

3.AVAudioSessionPortOverride

  • AVAudioSessionPortOverrideNone:返回當前音頻默認狀態
  • AVAudioSessionPortOverrideSpeaker:音頻輸出到揚聲器,重寫‘播放和錄音’屬性,通過默認輸出路徑到接受者。(重新理解)

4.AVAudioSessionRouteChangeReason

這個枚舉值是AVAudioSessionRouteChangeNotification字典中的value值。

  • AVAudioSessionRouteChangeReasonUnknown:原因不明
  • AVAudioSessionRouteChangeReasonNewDeviceAvailable:一個新設備可用(例如:耳機已經插入)
  • AVAudioSessionRouteChangeReasonOldDeviceUnavailable:一個舊設備不可用(例如:耳機已經拔出)
  • AVAudioSessionRouteChangeReasonCategoryChange:音頻類別已經改變(例如:Audio從Play back 已給變為Play And Record)
  • AVAudioSessionRouteChangeReasonOverride:音頻route 已經被重寫(例如:類別是Play And Record,輸出設備已經從默認的接收器改變成為揚聲器)
  • AVAudioSessionRouteChangeReasonWakeFromSleep:設備從休眠中醒來
  • AVAudioSessionRouteChangeReasonNoSuitableRouteForCategory:沒有路徑能返回當前的類別(例如:Record類別當前沒有輸入設備)
  • AVAudioSessionRouteChangeReasonRouteConfigurationChange:當前輸入/輸出端口沒變,但設置已經修改(例如:一個端口的數據選擇已經改變)

5.AVAudioSessionCategoryOptions

使用方法:setCategory:withOptions:error:

  • AVAudioSessionCategoryOptionMixWithOthers
  • AVAudioSessionCategoryOptionDuckOthers
  • AVAudioSessionCategoryOptionAllowBluetooth
  • AVAudioSessionCategoryOptionDefaultToSpeaker
  • AVAudioSessionCategoryOptionInterruptSpokenAudioAndMixWithOthers

6.AVAudioSessionInterruptionType

  • AVAudioSessionInterruptionTypeBegan
  • AVAudioSessionInterruptionTypeEnded

7.AVAudioSessionSilenceSecondaryAudioHintType

  • AVAudioSessionSilenceSecondaryAudioHintTypeBegin
  • AVAudioSessionSilenceSecondaryAudioHintTypeEnd

8.AVAudioSessionRecordPermission(錄音權限)

  • AVAudioSessionRecordPermissionUndetermined :待定的
  • AVAudioSessionRecordPermissionDenied :拒絕的
  • AVAudioSessionRecordPermissionGranted :授予的

9.AVAudioSessionErrorCode(錯誤原因)

typedef NS_ENUM(NSInteger, AVAudioSessionErrorCode)
{
	AVAudioSessionErrorCodeNone							=  0,
	AVAudioSessionErrorCodeMediaServicesFailed			= 'msrv',			/* 0x6D737276, 1836282486	*/
	AVAudioSessionErrorCodeIsBusy						= '!act',			/* 0x21616374, 560030580	*/
	AVAudioSessionErrorCodeIncompatibleCategory			= '!cat',			/* 0x21636174, 560161140	*/
	AVAudioSessionErrorCodeCannotInterruptOthers		= '!int',			/* 0x21696E74, 560557684	*/
	AVAudioSessionErrorCodeMissingEntitlement			= 'ent?',			/* 0x656E743F, 1701737535	*/
	AVAudioSessionErrorCodeSiriIsRecording				= 'siri',			/* 0x73697269, 1936290409	*/
	AVAudioSessionErrorCodeCannotStartPlaying			= '!pla',			/* 0x21706C61, 561015905	*/
	AVAudioSessionErrorCodeCannotStartRecording			= '!rec',			/* 0x21726563, 561145187	*/
	AVAudioSessionErrorCodeBadParam						= -50,
	AVAudioSessionErrorInsufficientPriority				= '!pri',			/* 0x21707269, 561017449	*/
	AVAudioSessionErrorCodeResourceNotAvailable			= '!res',			/* 0x21726573, 561145203	*/
	AVAudioSessionErrorCodeUnspecified					= 'what'			/* 0x77686174, 2003329396	*/
} NS_AVAILABLE_IOS(7_0);

四、constants for port types

1.input port types

  • AVAudioSessionPortLineIn
  • AVAudioSessionPortBuiltInMic :內置麥克風
  • AVAudioSessionPortHeadsetMic :耳機線中的麥克風

2.output port types

  • AVAudioSessionPortLineOut
  • AVAudioSessionPortHeadphones :耳機或者耳機式輸出設備
  • AVAudioSessionPortBuiltInReceiver :帖耳朵時候內置揚聲器(打電話的時候的聽筒)
  • AVAudioSessionPortBuiltInSpeaker :iOS設備的揚聲器
  • AVAudioSessionPortBluetoothA2DP :A2DP協議式的藍牙設備
  • AVAudioSessionPortHDMI :高保真多媒體接口設備
  • AVAudioSessionPortAirPlay :遠程AirPlay設備
  • AVAudioSessionPortBluetoothLE :藍牙低電量輸出設備

3.可以支持input or output 端口類型

  • AVAudioSessionPortBluetoothHFP :在藍牙免提上的input or output
  • AVAudioSessionPortUSBAudio
  • AVAudioSessionPortCarAudio

五、SourceLocation&Orientations&PolarPattern&ChannelRoles(~ ~!)

1.Source Location

  • AVAudioSessionLocationUpper
  • AVAudioSessionLocationLower

2.Orientation

  • AVAudioSessionOrientationTop
  • AVAudioSessionOrientationBottom
  • AVAudioSessionOrientationFront
  • AVAudioSessionOrientationBack
  • AVAudioSessionOrientationLeft
  • AVAudioSessionOrientationRight

3.Polar pattern

  • AVAudioSessionPolarPatternOmnidirectional
  • AVAudioSessionPolarPatternCardioid
  • AVAudioSessionPolarPatternSubcardioid

六、Helper Class Interface

1. AVAudioSessionChannelDescription

2. AVAudioSessionPortDescription

3. AVAudioSessionRouteDescription

七、 AVAudioSessionDelegate protocol

  • beginInterruption : 一些東西導致音頻被打斷(監聽回調)
  • endInterruptionWithFlags :參數只有一個:AVAudioSessionInterruptionOptions,打斷結束了
  • endInterruption :如果執行這個方法,就會默認執行endInterruptionWithFlags
  • inputIsAvailableChanged:通知input設備是有效的或者無效的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM