Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c iPhone:未为AVAudioPlayer和AVAudioRecorder调用委托方法_Objective C_Iphone_Cocoa Touch_Ios4_Avaudioplayer - Fatal编程技术网

Objective c iPhone:未为AVAudioPlayer和AVAudioRecorder调用委托方法

Objective c iPhone:未为AVAudioPlayer和AVAudioRecorder调用委托方法,objective-c,iphone,cocoa-touch,ios4,avaudioplayer,Objective C,Iphone,Cocoa Touch,Ios4,Avaudioplayer,我面临的问题是游戏。当我记录存储在文档目录中的文档格式时,即使大小也一样,这意味着正在进行记录。当我的play函数调用时,我将其转换为NSData,尽管它没有播放任何内容 - (void)record{ AVAudioSession *audioSession = [AVAudioSession sharedInstance]; NSError *err = nil; [audioSession setCategory :AVAudioSessionCategory

我面临的问题是游戏。当我记录存储在文档目录中的文档格式时,即使大小也一样,这意味着正在进行记录。当我的
play
函数调用时,我将其转换为
NSData
,尽管它没有播放任何内容

- (void)record{  

    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;
    }

    if(recorder)
    {
        if(recorder.recording)
            [recorder stop];
        [recorder release];
        recorder = nil;
    }

    NSString *fileName = nil;
    if(![myItem audioURL]){
        fileName = [fileFormatter stringFromDate:[NSDate date]];
        [myItem setAudioURL:fileName];        
    } else{
        fileName = [myItem audioURL];}

    NSString *pathString = [NSString stringWithFormat:@"%@/%@", [delegate applicationDocumentsDirectory], fileName];

    NSDictionary *recordSettings = [[NSDictionary alloc] initWithObjectsAndKeys:
                                    [NSNumber numberWithFloat: 44100.0],AVSampleRateKey,
                                    [NSNumber numberWithInt: kAudioFormatAppleIMA4],AVFormatIDKey,
                                    [NSNumber numberWithInt: 1], AVNumberOfChannelsKey,
                                    [NSNumber numberWithInt: AVAudioQualityMax],AVEncoderAudioQualityKey,nil];
    recorder = [[AVAudioRecorder alloc] initWithURL: [NSURL fileURLWithPath:pathString] settings: recordSettings error: nil];
    recorder.delegate = self;
    if ([recorder prepareToRecord] == YES){
        [recorder record];       
        recording = YES;

    [pauseButton setImage:[UIImage imageNamed:@"stop.png"] forState:UIControlStateNormal];
    [pauseButton setEnabled:YES];
    [playButton setEnabled:NO];
    [recordButton setEnabled:NO];


    [self beginAnimation];
    //    NSError *error=nil;
    //    if(![context save: &error])
    //    {
    //        //Couldn't save
    //    }
}

}

- (void)play{

   /* [self silenced];
    UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; 

    AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,          
                             sizeof (audioRouteOverride),&audioRouteOverride);

    UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
    AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);    
    */


    if(pausedPlayback){
        [player play];
        playing = YES;
        pausedPlayback = NO;
        [pauseButton setEnabled:YES];
        [playButton setEnabled:NO];
        [self beginAnimation];
        return;
    }
    NSString *fileName = nil;
    if(![myItem audioURL]){
        return;
    } else
        fileName = [myItem audioURL];
    NSLog(@"file name :%@",fileName);
   // NSError *error;

    NSString *pathString = [NSString stringWithFormat:@"%@/%@", [delegate applicationDocumentsDirectory], fileName];
    NSLog(@"Path : %@",pathString);


//  player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:pathString] error:nil] ;



    NSData *soundData = [NSData dataWithContentsOfURL:[NSURL URLWithString:pathString]];


    player = [[AVAudioPlayer alloc] initWithData:soundData error: nil];         
    player.delegate = self;
    player.volume=1.0;  

    // Play the audio
    [player prepareToPlay];             
    [player play]; 
    playing = YES;  

    [recordButton setEnabled:NO];
    [pauseButton setEnabled:YES];
    [playButton setEnabled:NO];
//    if (player==nil) {
//        NSLog(@"%@",[error description]);
//    }
//    else
//    {
      /*  player.volume=1.0;
        NSLog(@"about to play");
        [player prepareToPlay];
        [player play];
        NSLog(@"player play");
        [player setDelegate:self];
        playing = YES;  

        [recordButton setEnabled:NO];
        [pauseButton setEnabled:YES];
        [playButton setEnabled:NO];*/


        [self beginAnimation];
   // }
}
- (void)audioRecorderDidFinishRecording:(AVAudioRecorder *)_recorder successfully:(BOOL)flag{
    NSLog (@"audioRecorderDidFinishRecording:successfully:");
    [recorder release];
    recorder = nil;
}

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)_player successfully:(BOOL)flag{
    if(![player isPlaying])
    {
        [player stop];
    }
    [player release];
    player = nil;
    playing = NO;
    [playButton setEnabled:YES];
    [pauseButton setEnabled:NO];
    [recordButton setEnabled:YES];
    [self stopAnimation];

}

您在哪里设置
AVAudioRecorder
对象,并设置其委托?是否可以发布初始化AVAudioPlayer和recorder的代码?