Не удается найти файл, созданный симулятором iPhone - PullRequest
0 голосов
/ 14 апреля 2011

Приношу свои извинения, если это дубликат моего предыдущего вопроса , но это сводит меня с ума.

Чтобы выяснить, где iPhone Simulator хранит файлы, я использовал проект Speak Here, чтобы записать свой голос и сохранить его в файл. Поскольку симулятор может воспроизводить записи, должен быть файлом где-то, но я не могу его найти. Я пробовал все, в том числе с помощью команды терминала терминала (после использования sudo /usr/libexec/locate.updatedb). Любая помощь? enter image description here

Ответы [ 2 ]

0 голосов
/ 14 апреля 2011

Приложение SpeakHere сохраняет записанный файл во временном каталоге. Вы можете узнать путь и его содержимое с помощью этого кода:

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

В iOS Simulator этот путь будет примерно таким / var/folders/eQ/eQdXXQoxFHmxhq85pgNA+++++TI/-Tmp-/ но на устройстве это подкаталог в директории вашего приложения. как /private/var/mobile/Applications/965A9EEF-7FBA-40F4-8A42-FE855A719D52/tmp/.

0 голосов
/ 14 апреля 2011

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

- (void) startRecording { [self 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];

}

- (void) stopRecording { NSLog (@ "stopRecording"); [audioRecorder stop]; NSLog (@ "остановился"); }

...