SORU
18 HAZİRAN 2009, PERŞEMBE


Nasıl AVAudioRecorder ile iPhone ses kaydı mı?

İPhone 3.0 sdk halk, zaten 3.0 sdk ile oynuyor o sizin için bu soruyu sorabilirim. Benim uygulama ses kaydetmek istiyorum, ama AVAudioRecorder ve örnekteki gibi SpeakHere gösterir kayıt eski yolu kullanmak istiyorum. En iyi iPhone Dev Center'da bunu sadece sınıflar için başvuru nasıl herhangi bir örnek yoktur. Basit bir örnek benim için başlamak için sabırsızlanıyorum bu yüzden iPhone geliştirme de bir acemi değilim. Şimdiden teşekkürler.

CEVAP
18 HAZİRAN 2009, PERŞEMBE


Aslında, örnekler Hiç Yok. İşte benim çalışma kodu. Kayıt kullanıcı gezinti çubuğu üzerindeki bir düğmeye basarak tetiklenir. Kayıt cd kalitesinde (44100 örnekleri), (2 kanal) doğrusal pcm stereo kullanır. Dikkat: kullanmak isterseniz farklı bir biçimde, özellikle bir kodlanmış bir, emin olun tam olarak anlamak için bu AVAudioRecorder ayarları (dikkatle okuyun ses tür belgeler), aksi halde, sen-ecek asla muktedir başlatmak doğru. Bir şey daha var. Kod, ölçüm verilerinin nasıl işleneceğini gösteren değilim, ama bunu kolayca anlayabilirsiniz. Son olarak, AVAudioRecorder yöntemi bu yazı gibi deleteRecording uygulama çöküyor unutmayın. Bu Dosya Yöneticisi ile kaydedilen dosya çıkarıyorum neden olur. Kayıt bittiğinde, şu anda düzenlenmiş bulunan bilimsel deneyler bazen büyük olarak kaydedilmiş ses EP kullanarak nesne Kaydet.

#define DOCUMENTS_FOLDER [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]


- (void) startRecording{

UIBarButtonItem *stopButton = [[UIBarButtonItem alloc] initWithTitle:@"Stop" style:UIBarButtonItemStyleBordered  target:self action:@selector(stopRecording)];
self.navigationItem.rightBarButtonItem = stopButton;
[stopButton release];

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *err = nil;
[audioSession setCategory :AVAudioSessionCategoryPlayAndRecord error:&err];
if(err){
    NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]);
    return;
}
[audioSession setActive:YES error:&err];
err = nil;
if(err){
    NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]);
    return;
}

recordSetting = [[NSMutableDictionary alloc] init];

[recordSetting setValue :[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey:AVFormatIDKey];
[recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey]; 
[recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey];

[recordSetting setValue :[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];
[recordSetting setValue :[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey];
[recordSetting setValue :[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey];



// Create a new dated file
NSDate *now = [NSDate dateWithTimeIntervalSinceNow:0];
NSString *caldate = [now description];
recorderFilePath = [[NSString stringWithFormat:@"%@/%@.caf", DOCUMENTS_FOLDER, caldate] retain];

NSURL *url = [NSURL fileURLWithPath:recorderFilePath];
err = nil;
recorder = [[ AVAudioRecorder alloc] initWithURL:url settings:recordSetting error:&err];
if(!recorder){
    NSLog(@"recorder: %@ %d %@", [err domain], [err code], [[err userInfo] description]);
    UIAlertView *alert =
    [[UIAlertView alloc] initWithTitle: @"Warning"
                               message: [err localizedDescription]
                              delegate: nil
                     cancelButtonTitle:@"OK"
                     otherButtonTitles:nil];
    [alert show];
    [alert release];
    return;
}

//prepare to record
[recorder setDelegate:self];
[recorder prepareToRecord];
recorder.meteringEnabled = YES;

BOOL audioHWAvailable = audioSession.inputIsAvailable;
if (! audioHWAvailable) {
    UIAlertView *cantRecordAlert =
    [[UIAlertView alloc] initWithTitle: @"Warning"
                               message: @"Audio input hardware not available"
                              delegate: nil
                     cancelButtonTitle:@"OK"
                     otherButtonTitles:nil];
    [cantRecordAlert show];
    [cantRecordAlert release]; 
    return;
}

// start recording
[recorder recordForDuration:(NSTimeInterval) 10];

}

- (void) stopRecording{

[recorder stop];

NSURL *url = [NSURL fileURLWithPath: recorderFilePath];
NSError *err = nil;
NSData *audioData = [NSData dataWithContentsOfFile:[url path] options: 0 error:&err];
if(!audioData)
    NSLog(@"audio data: %@ %d %@", [err domain], [err code], [[err userInfo] description]);
[editedObject setValue:[NSData dataWithContentsOfURL:url] forKey:editedFieldKey];   

//[recorder deleteRecording];


NSFileManager *fm = [NSFileManager defaultManager];

err = nil;
[fm removeItemAtPath:[url path] error:&err];
if(err)
    NSLog(@"File Manager: %@ %d %@", [err domain], [err code], [[err userInfo] description]);



UIBarButtonItem *startButton = [[UIBarButtonItem alloc] initWithTitle:@"Record" style:UIBarButtonItemStyleBordered  target:self action:@selector(startRecording)];
self.navigationItem.rightBarButtonItem = startButton;
[startButton release];

}

- (void)audioRecorderDidFinishRecording:(AVAudioRecorder *) aRecorder successfully:(BOOL)flag
{

NSLog (@"audioRecorderDidFinishRecording:successfully:");
// your actions here

}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • RealPapaPit

    RealPapaPit

    16 Mart 2009
  • Theodore Leaf

    Theodore Lea

    29 AĞUSTOS 2006
  • videoisunrelated

    videoisunrel

    5 Mart 2009