iOS通过iPhone接收器播放音频(手机扬声器)

时间:2014-05-14 13:41:18

标签: ios avaudiosession

我目前正在开发一个应该通过iPhone接收器播放音频文件的应用程序。我知道在iOS 6/7之前它很容易实现,但现在这些方法已被弃用。

那么有人知道它在iOS 7上是如何工作的吗?

这是我的代码,不起作用:

    _audioSession = [AVAudioSession sharedInstance];
    [_audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
    [_audioSession overrideOutputAudioPort:AVAudioSessionPortBuiltInReceiver error:nil];

    NSString *ringtone =  [[NSUserDefaults standardUserDefaults] stringForKey:@"ringtone"];
    ringtone = [ringtone stringByReplacingOccurrencesOfString:@".m4r" withString:@""];
    NSString *path;
    path = [[NSBundle mainBundle] pathForResource:@"abto_ringbacktone" ofType:@"wav"];


    NSError *error;
    _player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:path] error:&error];
    if (error) {
        NSLog(@"Error: %@",error.localizedDescription);
    }

}

[_player setNumberOfLoops:10];
[_player prepareToPlay];
[_player play];
[_player setVolume:0.1];

1 个答案:

答案 0 :(得分:1)

您无法将AVAudioSessionPortBuiltInReceiver传递给overrideOutputAudioPort:error:,因为它将枚举作为参数,而不是字符串。

正确的方法是为Receiver配置如下会话:

[_audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
[_audioSession overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:nil];

和演讲者:

[_audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
[_audioSession overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];