Apple没有在Apple Developer网站上发布任何替代代码。
答案 0 :(得分:9)
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];
答案 1 :(得分:8)
你应该使用AVAudioSession。
要替换弃用的AudioSessionInitialize提供的功能(例如,如果您需要指定AudioSessionInterruptionListener回调),您可以订阅AVAudioSessionInterruptionNotification通知:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(audioSessionDidChangeInterruptionType:)
name:AVAudioSessionInterruptionNotification object:[AVAudioSession sharedInstance]];
实现你的audioSessionDidChangeInterruptionType:handler,如:
- (void)audioSessionDidChangeInterruptionType:(NSNotification *)notification
{
AVAudioSessionInterruptionType interruptionType = [[[notification userInfo]
objectForKey:AVAudioSessionInterruptionTypeKey] unsignedIntegerValue];
if (AVAudioSessionInterruptionTypeBegan == interruptionType)
{
}
else if (AVAudioSessionInterruptionTypeEnded == interruptionType)
{
}
}
答案 2 :(得分:5)
的等效代码
// 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
答案 3 :(得分:0)
我们可以迅速添加以下内容
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setActive(true)
try audioSession.setCategory(AVAudioSessionCategoryPlayback)
} catch {
print("Setting category to AVAudioSessionCategoryPlayback failed.")
}
来自:https://developer.apple.com/documentation/avfoundation/avaudiosession
答案 4 :(得分:0)
快速版本:
do {
try AVAudioSession.sharedInstance().setActive(true)
} catch let error {
print("\(error.localizedDescription)")
}
do {
try AVAudioSession.sharedInstance().setCategory(.playback, mode: .spokenAudio)
} catch let error {
print("\(error.localizedDescription)")
}