在过去的两年里,我正在使用下一个代码来启动录音机对象,一切都很好。
ar = AVAudioRecorder.ToUrl(url, settings, out errorRecorder);
ar.MeteringEnabled = false;
然而,本周我升级到:Mono 2.10.2,MonoTouch 4.0.1.10285,MonoDevelop 2.4.2。我还在使用Xcode 3.2.6和iOS SDK 4.3。使用此配置,方法
AVAudioRecorder.ToUrl(url, settings, out errorRecorder)
总是向ar对象返回一个空值。
有人有同样的问题吗?这是完整的代码:
NSError errorRecorder;
NSUrl url;
NSDictionary settings;
AVAudioRecorder ar;
string path, audioFile;
NSObject[] values = new NSObject[]
{
NSNumber.FromInt32((int)AudioFileType.M4A),
NSNumber.FromFloat(11025.0f),
NSNumber.FromInt32(1),
NSNumber.FromInt32((int)AVAudioQuality.Min)
};
NSObject[] keys = new NSObject[]
{
AVAudioSettings.AVFormatKey,
AVAudioSettings.AVSampleRateKey,
AVAudioSettings.AVNumberOfChannelsKey,
AVAudioSettings.AVEncoderAudioQualityKey
};
settings = NSDictionary.FromObjectsAndKeys (values, keys);
path = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
path = Path.Combine(path, audioDir);
if (!Directory.Exists(path)){
Directory.CreateDirectory(path);
}
audioFile = newJobEntity.jobid + "_" + numFiles + ".caf";
if (!File.Exists(Path.Combine(path, audioFile)))
FileStream audioFileStream = File.Create(Path.Combine(path, audioFile));
url = NSUrl.FromFilename(Path.Combine(path, audioFile));
ar = AVAudioRecorder.ToUrl(url, settings, out errorRecorder);
ar.MeteringEnabled = false;
先谢谢。
答案 0 :(得分:1)
更改发生在设置对象中。如果你阅读苹果文档,它会与示例相符。这应该为你做。
更改:AudioFileType.M4A
收件人:AudioFormatType.M4A
和
更改:AVAudioSettings.AVFormatKey
收件人:AVAudioSettings.AVFormatIDKey