我目前正在为IOS拧一个应用程序,他们的应用程序有代码通过将麦克风的音频录制到/ dev / null来对音量水平进行采样,我会立即将其删除,但同时也是这个我需要能够同时播放iPod音乐。由于正在进行录制,音乐会停止,无法再次启动。
我查看了苹果开发文档,到目前为止我还无法理解,所以如果不仅仅发布了这样的内容,我将不胜感激。
是否有人能够查看下面的代码并告诉我哪里出错了,或者告诉我采用另一种方式来获取不会让iDevice停止播放音乐的音频级别。
- (void)startAudioSampler {
//Check to see if the sampler is already set.
if (audioSampler == nil) {
//It is not set up, so set it up.
//Set up the location as it needs to save as a recording, so save it to /dev/null which should delete straight away.
NSURL *url = [NSURL fileURLWithPath:@"/dev/null"];
//Set up the settings for the sampler.
NSDictionary *settings = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithFloat: 44100.0], AVSampleRateKey,
[NSNumber numberWithInt: kAudioFormatAppleLossless], AVFormatIDKey,
[NSNumber numberWithInt: 1], AVNumberOfChannelsKey,
nil];
//Create the error for it to report to.
NSError *error;
//Create the sampler.
audioSampler = [[AVAudioRecorder alloc] initWithURL:url settings:settings error:&error];
//Check it set up correctly.
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
if (audioSampler != nil) {
//Start the sampler.
[audioSampler prepareToRecord];
audioSampler.meteringEnabled = YES;
[audioSampler record];
//Set to sampler every 0.03 seconds (by running the updateInputAudioLevel every 0.03 seconds).
samplerUpdateTimer = [NSTimer scheduledTimerWithTimeInterval:0.03 target:self selector:@selector(updateInputAudioLevel) userInfo:nil repeats:YES];
} else {
//There was an error during the set up so report it to the log.
NSLog(@"%@", error.description);
}
}
感谢您的帮助 托马斯