2011-04-14 40 views
0

我很抱歉,如果這與my previous question重複,但這會讓我有點慌亂。找不到iPhone模擬器生成的文件

在試圖找出iPhone Simulator存儲文件的位置時,我使用了Speak Here項目來記錄我的聲音並將其保存到文件中。由於模擬器能夠播放記錄,因此必須是某處的文件,但我無法找到該文件。我已經嘗試了一切,包括使用終端命令定位(使用sudo /usr/libexec/locate.updatedb後)。任何幫助? enter image description here

回答

-1

的#define DOCUMENTS_FOLDER [NSHomeDirectory()stringByAppendingPathComponent:@ 「文檔」]

- (無效)的StartRecording { [自stopPlaying];

NSLog(@"startRecording"); 
[audioRecorder release]; 
audioRecorder = nil; 

// Init audio with record capability 
AVAudioSession *audioSession = [AVAudioSession sharedInstance]; 
[audioSession setCategory:AVAudioSessionCategoryRecord error:nil]; 

NSMutableDictionary *recordSettings = [[NSMutableDictionary alloc] initWithCapacity:10]; 
if(recordEncoding == ENC_PCM) 
{ 
    [recordSettings setObject:[NSNumber numberWithInt: kAudioFormatLinearPCM] forKey: AVFormatIDKey]; 
    [recordSettings setObject:[NSNumber numberWithFloat:44100.0] forKey: AVSampleRateKey]; 
    [recordSettings setObject:[NSNumber numberWithInt:2] forKey:AVNumberOfChannelsKey]; 
    [recordSettings setObject:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey]; 
    [recordSettings setObject:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey]; 
    [recordSettings setObject:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey]; 
} 
else 
{ 
    NSNumber *formatObject; 

    switch (recordEncoding) { 
     case (ENC_AAC): 
      formatObject = [NSNumber numberWithInt: kAudioFormatMPEG4AAC]; 
      break; 
     case (ENC_ALAC): 
      formatObject = [NSNumber numberWithInt: kAudioFormatAppleLossless]; 
      break; 
     case (ENC_IMA4): 
      formatObject = [NSNumber numberWithInt: kAudioFormatAppleIMA4]; 
      break; 
     case (ENC_ILBC): 
      formatObject = [NSNumber numberWithInt: kAudioFormatiLBC]; 
      break; 
     case (ENC_ULAW): 
      formatObject = [NSNumber numberWithInt: kAudioFormatULaw]; 
      break; 
     default: 
      formatObject = [NSNumber numberWithInt: kAudioFormatAppleIMA4]; 
    } 

    [recordSettings setObject:formatObject forKey: AVFormatIDKey]; 
    [recordSettings setObject:[NSNumber numberWithFloat:44100.0] forKey: AVSampleRateKey]; 
    [recordSettings setObject:[NSNumber numberWithInt:2] forKey:AVNumberOfChannelsKey]; 
    [recordSettings setObject:[NSNumber numberWithInt:12800] forKey:AVEncoderBitRateKey]; 
    [recordSettings setObject:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey]; 
    [recordSettings setObject:[NSNumber numberWithInt: AVAudioQualityHigh] forKey: AVEncoderAudioQualityKey]; 
} 

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
// getting an NSInteger 
NSInteger recordID = [prefs integerForKey:@"recordID"]; 
//NSLog(@"---- %d",recordID); 

//NSString *recordFileName = [NSString stringWithFormat:@"%@/record%d.caf", [[NSBundle mainBundle] resourcePath], recordID]; 
NSString *recordFileName = [NSString stringWithFormat:@"%@/record%d.caf", DOCUMENTS_FOLDER, recordID]; 

NSURL *url = [NSURL fileURLWithPath:recordFileName]; 

//NSLog(@"path -- %@",DOCUMENTS_FOLDER); 

NSError *error = nil; 
audioRecorder = [[ AVAudioRecorder alloc] initWithURL:url settings:recordSettings error:&error]; 

if ([audioRecorder prepareToRecord] == YES){ 
    [audioRecorder record]; 
}else { 
    int errorCode = CFSwapInt32HostToBig ([error code]); 
    NSLog(@"Error: %@ [%4.4s])" , [error localizedDescription], (char*)&errorCode); 
} 
NSLog(@"recording"); 

[recordSettings release]; 

}

- (無效)stopRecording { 的NSLog(@ 「stopRecording」); [audioRecorder stop]; NSLog(@「stopped」); }

+0

沒有工作。有錯誤-50。 – 2011-04-14 11:17:20

+0

什麼是錯誤? – 2011-04-14 11:18:22

+0

AudioFileURLCreateWithURL error -50 which can not find in the reference:http://developer.apple.com/library/ios/#documentation/MusicAudio/Reference/AudioFileConvertRef/Reference/reference.html – 2011-04-14 11:21:02

0

SpeakHere應用程序將錄製的文件存儲在臨時目錄中。你可以找出路徑及其內容與此代碼:

NSString *tempPath = NSTemporaryDirectory(); 
    NSArray *dirContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:tempPath error:nil]; 
    NSLog(@"tempPath: %@", tempPath); 
    NSLog(@"dirContents: %@", dirContents); 

在iPhone模擬器這條道路會像 /var/folders/eQ/eQdXXQoxFHmxhq85pgNA+++++TI/-Tmp-/,但在設備上,這是在你的應用程序目錄的子目錄。如/private/var/mobile/Applications/965A9EEF-7FBA-40F4-8A42-FE855A719D52/tmp/