Apple在蘋果開發者網站上沒有發佈任何其他代碼。AudioSessionInitialize的修復已過時?
回答
您應該使用AVAudioSession。
以取代過時AudioSessionInitialize提供(例如,如果你需要指定AudioSessionInterruptionListener回調)的功能,你可以訂閱AVAudioSessionInterruptionNotification通知:喜歡處理:
- (void)audioSessionDidChangeInterruptionType:(NSNotification *)notification
{
AVAudioSessionInterruptionType interruptionType = [[[notification userInfo]
objectForKey:AVAudioSessionInterruptionTypeKey] unsignedIntegerValue];
if (AVAudioSessionInterruptionTypeBegan == interruptionType)
{
}
else if (AVAudioSessionInterruptionTypeEnded == interruptionType)
{
}
}
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(audioSessionDidChangeInterruptionType:)
name:AVAudioSessionInterruptionNotification object:[AVAudioSession sharedInstance]];
和實現audioSessionDidChangeInterruptionType
與
的等效代碼// C way
UInt32 category = kAudioSessionCategory_MediaPlayback ;
OSStatus result = AudioSessionSetProperty(
kAudioSessionProperty_AudioCategory, sizeof(category), &category) ;
if(result) // handle the error
是
// Objective-C way
NSError *nsError;
[[AVAudioSession sharedInstance]
setCategory:AVAudioSessionCategoryPlayback error:&nsError];
if(nsError != nil) // handle the error
這樣做會給出錯誤「使用未聲明的標識符AVAudioSession」 –
將AVFoundation添加到框架幷包含在要修復的頭文件中。 –
1. 此代碼
AudioSessionInitialize(NULL, NULL, interruptionCallback, self);
與
[[AVAudioSession sharedInstance] setActive:YES error:nil];
2. 更換來回此代碼
UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord;
AudioSessionSetProperty(
kAudioSessionProperty_AudioCategory,
sizeof(sessionCategory),
&sessionCategory
);
更換
UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord;
[[AVAudioSession sharedInstance]
setCategory:sessionCategory error:nil];
第二個代碼快照的第一行應該改爲'NSString * sessionCategory = AVAudioSessionCategoryPlayAndRecord;' – deko
public void EnableSpeaker(bool speaker)
{
if (AVAudioSession.SharedInstance().SetActive(true, out NSError outError))
{
AudioSession.OverrideCategoryDefaultToSpeaker = speaker;
}
}
- 1. 功能ereg_replace()已過時 - 無法修復
- 2. iOS AudioSessionInitialize錯誤
- 3. 如何修復警告的init()已過時
- 4. 如何修復「'System.Security.Permissions.SecurityAction.RequestMinimum'已過時」的編譯錯誤?
- 5. Dan Kegel的crosstool已過時 - 有誰知道修復?
- 6. 設備訂閱已過期 - 修復
- 7. 如何修復? DeprecationWarning:「全球性」已過時,使用「全球」
- 8. 已過時的用戶:preg_replace():/ e修飾符已棄用錯誤
- 9. SQl服務器我需要修復「超時過期,超時時間已過」的錯誤
- 10. 如何修復錯誤不幸的是,過程「android.process.acore已停止」?
- 11. 使用MsgPack.Cli修復「過時」警告
- 12. 超時過期 - 會話 - 如何修復
- 13. 如何修復已安裝的umbraco?
- 14. 同時修復導致修復掛起
- 15. 修復git-svn「文件或目錄已過時;請嘗試更新」
- 16. 「的setText」已過時
- 17. RSpec的已過時
- 18. 已過時的ActionBarDrawerToggle
- 19. 已過時的NameValuePair
- 20. 如何使用php修復已修改的地址欄
- 21. NSDate修復時區
- 22. 已棄用PHP mysql_db_query。不能修復它
- 23. Android佈局是否已修復?
- 24. Tableau - 列已隱藏 - 如何修復
- 25. iPad背景附件:已修復問題
- 26. 修復已在git中提交CRLF
- 27. gruntjs 0.4 registerHelper已棄用,語法修復?
- 28. 如何修復.exe已停止工作?
- 29. 表格佈局:已修復問題
- 30. 該文件已損壞,無法修復
我認爲你必須使用AVAudioSession。但我不確定這是否也會初始化音頻會話。 – openfrog
更正:蘋果文檔清楚地討論了棄用和它的替代在這裏https://developer.apple.com/library/ios/documentation/audiotoolbox/reference/audiosessionservicesreference/index.html – abbood