如何在Xcode中正确创建可以在iOS邮件中听到的音频文件

时间:2012-02-23 19:58:07

标签: xcode ios5 avaudioplayer avaudiorecorder

我有一个具有录制和播放功能的应用。这些工作正常。我也可以发送音频文件。

如果我在电脑上阅读电子邮件,我可以播放音频文件。

我可以在iDevice上阅读电子邮件,但是如果我尝试播放音频文件,我会看到像QT弹出片刻,但随后,消息会返回到屏幕。

如果我按住audiofile图标,我会得到一个可以使用的应用列表 - 但它们都是文档应用,而不是音频应用。

声音文件后缀为.caf(核心音频格式)。

我的音频文件是这样创建的:

NSMutableDictionary* recordSettings = [[NSMutableDictionary alloc] init];

[recordSettings setValue :[NSNumber numberWithInt:kAudioFormatAppleIMA4]     forKey:AVFormatIDKey];
[recordSettings setValue :[NSNumber numberWithInt:16]                           forKey:AVEncoderBitRateKey];
[recordSettings setValue :[NSNumber numberWithFloat:44100.0]                    forKey:AVSampleRateKey]; 
[recordSettings setValue :[NSNumber numberWithInt: 2]                              forKey:AVNumberOfChannelsKey];

NSError *error = nil;
audioRecorder = [[AVAudioRecorder alloc]

initWithURL:soundFileURL settings:recordSettings error:&error];

if (error)
{
NSLog(@"error: %@", [error localizedDescription]);
} else {
// ALL IS OK, START RECORDING
//NSLog(@"DetailVC - recordAudio -  soundFilePath is %@", soundFile);
[audioRecorder prepareToRecord];
recordToggle = 1;

[autoCog startAnimating];
[audioRecorder record];     

recordingTimer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                                         target:self
                                                       selector:@selector(recordingOn)
                                                       userInfo:nil
                                                        repeats:YES];

}

感谢您的任何建议。

2 个答案:

答案 0 :(得分:2)

问题可能不在音频创建中,而在于如何将其附加到电子邮件中。您是否正确设置了MIME类型,以便邮件客户端知道如何读取数据?对于.caf,您应该使用audio/x-caf MIME类型。

答案 1 :(得分:1)

解决问题的代码是:

NSData *soundData = [NSData dataWithContentsOfFile:soundFile];
[mailer addAttachmentData:soundData mimeType:@"audio/mpeg" fileName:@"YourFile.mp3"];