0
私はこのコードを私たちが作ったアプリケーションから取り出しました。これはすでにストアに入っています(まだ問題なく動作しています)。 しかし、私は新しいアプリでそれを実行しようとすると、私はSIGABRTを取得します。SIGABRT AVFoundationを使用しているとき
ここでは、DependencyService経由でXamarin.Formsのクラッシュを再現するために使用したサンプルクラスを示します。レコーダーの作成後、errorプロパティはnullのままです。
public class RedordDependencies : IRecordDependencies
{
NSObject[] values = new NSObject[] {
NSNumber.FromFloat (44100.0f), //Sample Rate
NSNumber.FromInt32 ((int)AudioToolbox.AudioFormatType.LinearPCM), //AVFormat
NSNumber.FromInt32 (2), //Channels
NSNumber.FromInt32 (16), //PCMBitDepth
NSNumber.FromBoolean (false), //IsBigEndianKey
NSNumber.FromBoolean (false) //IsFloatKey
};
NSObject[] keys = new NSObject[] {
AVAudioSettings.AVSampleRateKey,
AVAudioSettings.AVFormatIDKey,
AVAudioSettings.AVNumberOfChannelsKey,
AVAudioSettings.AVLinearPCMBitDepthKey,
AVAudioSettings.AVLinearPCMIsBigEndianKey,
AVAudioSettings.AVLinearPCMIsFloatKey
};
AVAudioRecorder recorder;
NSError error;
NSDictionary settings;
public RedordDep()
{
settings = NSDictionary.FromObjectsAndKeys(values, keys);
}
public string Prepare()
{
NSUrl path = NSUrl.FromString(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), DateTime.Now.Ticks.ToString() + ".wav"));
recorder = AVAudioRecorder.Create(path, new AudioSettings(settings), out error);
bool prepared = recorder.PrepareToRecord();
return path.Path;
}
}
編集: 私はAVFoundationを使用している場合、これはまた、他の例で起こることが分かりました。 私の場合は、ビデオレコーダーとオーディオレコーダーを初期化しようとしたときに起きました。