简体   繁体   English

如何将录制的音频保存到我的应用程序?

[英]How To save Recorded audio to my app?

Please help me i tired to getting answer using following Answer in stackOverflow 请帮我,我很累在stackOverflow中使用以下答案获得答案

Ans 1 Ans 1

Ans 2 Ans 2

My code is 我的代码是

- (IBAction)RecordBtnClicked:(UIButton *)sender {
if (sender.isSelected) {
    if (!recorder.recording) {
 [session setActive:YES error:nil];
        NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
        temporaryRecFile = [prefs URLForKey:@"Test1"];
        player = [[AVAudioPlayer alloc]initWithContentsOfURL:temporaryRecFile error:nil];
        player.delegate = self;
        player.volume = 1;
        [player prepareToPlay];
        [player play];
        [sender setSelected:false];
    }
    `[recordBtn setImage:[UIImage imageNamed:@"a_recordp.png"] forState:UIControlStateSelected];
    [recorder stop];
}`else{
    if (player.playing) {
        [player stop];
    }`
    if (!recorder.recording) {
        [recordBtn setImage:[UIImage imageNamed:@"a_records.png"] forState:UIControlStateSelected];
        NSString *documentPath = [pathComponent objectAtIndex:0];
        NSString *pathTosave =[documentPath stringByAppendingPathComponent:[self fileNameForRecording]];
        NSURL *url = [NSURL fileURLWithPath:pathTosave];
        NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
        [prefs setURL:url forKey:@"test1"];
        session = [AVAudioSession sharedInstance];
        [session setActive:YES error:Nil];
       // temporaryRecFile = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByDeletingLastPathComponent]];
        [recorder record];
        recordTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateTimeInterval) userInfo:nil repeats:YES];
    }
    [sender setSelected:true];
    [discardBtn setHidden:false];
    [saveBtn setHidden:false];
}

} }

I have One button On first tap Recording is start and on 2 tap same button recording is stop and also third tap on same button i want to play same sound but i don't get desired file. 我有一个按钮在第一次点击开始录制,在第二次点击停止录制相同的按钮,再一次点击同一按钮录制第三次,我想播放相同的声音,但没有得到想要的文件。

 temporaryRecFile = [prefs URLForKey:@"Test1"];

it gives nil value ? 它给出零值? please provide me some suggestions for this if i do code in wrong way ? 如果我以错误的方式编写代码,请为此提供一些建议? any answer will be appreciated Thanks in advance 任何答案将不胜感激预先感谢

Sometimes you cannot rely on iOS to save your data, you need to force it to do so by synchronizing. 有时您不能依靠iOS保存数据,您需要通过同步来强制它这样做。

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setURL:url forKey:@"test1"];
[prefs synchronize]; //this will ensure it is written to the disk

Also one advice I can give you is to split that button functionality, you are doing way too much (record, stop record and play) in this IBAction. 我还能给您的一个建议是拆分按钮功能,您在此IBAction中做的太多了(录制,停止录制和播放)。 Perhaps it will be better for you to have 2 buttons first one recordOrStop() and playOrStop() but that's just my point of view as it will avoid problems. 最好有两个按钮,第一个是recordOrStop()playOrStop()但这只是我的观点,因为这样可以避免出现问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM