Cocos2d iphone Cocos2d麦克风在重新启动应用程序时连续播放上一个会话的音频

Cocos2d iphone Cocos2d麦克风在重新启动应用程序时连续播放上一个会话的音频,cocos2d-iphone,playback,microphone,recording,avaudiosession,Cocos2d Iphone,Playback,Microphone,Recording,Avaudiosession,我正在为多台iOS设备开发一款Talking Tom风格的应用程序,使用Cocos2d模板 我遇到的问题是,在第一次播放应用程序,然后关闭并重新启动应用程序时,麦克风会自动开始连续播放上一个会话的音频 当应用程序关闭时,我正在清除AVAudioSession的录音机、音频播放器、输入和输出文件URL以及SimpleAudioEngine的相关功能 有谁能建议这里会发生什么,或者如何解决这个问题 我真的很感激任何帮助 下面是我的代码: if(isVideoAnimationPlaying == N

我正在为多台iOS设备开发一款Talking Tom风格的应用程序,使用Cocos2d模板

我遇到的问题是,在第一次播放应用程序,然后关闭并重新启动应用程序时,麦克风会自动开始连续播放上一个会话的音频

当应用程序关闭时,我正在清除AVAudioSession的录音机、音频播放器、输入和输出文件URL以及SimpleAudioEngine的相关功能

有谁能建议这里会发生什么,或者如何解决这个问题

我真的很感激任何帮助

下面是我的代码:

if(isVideoAnimationPlaying == NO){
    CCLOG(@"In 'update', as Video Animations are NOT playing, listen to Microphone & start the Idle State animations...");
    enable_idle_state = YES;


    // Listen if recording is not playing.
    double peakPowerForChannel = 0;
    if(appDel.isPlaying == NO && appDel.soundPlayer.isPlaying == NO){
        CCLOG(@"---------------------> In 'update', when appDel.isPlaying == NO && appDel.soundPlayer.isPlaying == NO....");

        // Constantly update audio levels picked up by Microphone.
        [appDel.soundRecorder updateMeters];

        // Get values for the audio levels.
        const double alpha = 0.05;
        peakPowerForChannel = pow(10, (0.05 * [appDel.soundRecorder peakPowerForChannel:0]));
        appDel.lowPassResults = alpha * peakPowerForChannel + (1.0 - alpha) * appDel.lowPassResults;


        // Check if audio has been picked up or not.
        low_pass_result_value = 0.500;


        // Check the values with the standard.
        if(appDel.lowPassResults > low_pass_result_value){
            CCLOG(@"---------------------> Microphone has detected voices....hence stop the Idle State animations !!!");

            // Start audio recording.
            [self startRecordingNow];

        } else if(appDel.lowPassResults <= low_pass_result_value) {
            CCLOG(@"---------------------> No voices found....so resume the Idle State animations !!! :(");

            // Stop audio recording.
            [appDel stopRecording:recordLabel];


            // Play the Recording now.
            [appDel playRecording:recordLabel];



            // Enable Idle State animations, only if user is not touching any Body Part button.
            if(/* button.isSelected */)
            {
                CCLOG(@"enable_idle_state = YES");
                enable_idle_state = YES;
            }
        }
    }
if(isVideoAnimationPlaying==NO){
CCLOG(@“在“更新”中,由于未播放视频动画,请收听麦克风并启动空闲状态动画…”);
启用空闲状态=是;
//如果没有播放录音,请收听。
双峰值功率信道=0;
if(appDel.isplay==NO&&appDel.soundPlayer.isplay==NO){
CCLOG(@“------------------>在“更新”中,当appDel.isplay==NO&&appDel.soundPlayer.isplay==NO…);
//不断更新麦克风拾取的音频级别。
[appDel.soundRecorder updateMeters];
//获取音频级别的值。
常数双α=0.05;
峰值功率功率信道=功率(10,(0.05*[appDel.soundRecorder峰值功率信道:0]);
appDel.lowPassResults=alpha*峰值功率ForChannel+(1.0-alpha)*appDel.lowPassResults;
//检查是否已拾取音频。
低通结果值=0.500;
//检查标准值。
if(appDel.lowPassResults>低通结果值){
CCLOG(@“------------------>麦克风检测到声音…因此停止空闲状态动画!!!”;
//开始录音。
[自启动记录现在];

}否则如果(appDel.lowPassResults不太可能是话筒在播放音频文件。可能是您的代码在播放音频文件。显示一些。嗨,YvesLeBorg…感谢您的回复!是的,话筒可以拾取声音,然后播放它们。因此,当我重新启动时,上一个会话的音频正在播放。以下是我在“更新”功能中编写的代码:嗯…我的“注释”部分中的代码不合适。请编辑问题的正文并在此处添加代码。已添加代码-这与麦克风收听周围音频有关。