iOS 동 영상 인 터 럽 트 배경 음악 재생 처리 방법

질문(App Store 사용자 댓 글 피드백):
  • 배경 음악 재생 기 를 재생 할 때 앱 음악 재생 기 를 시작 하면 일시 정지 되 고 수 동 으로 만 회복 할 수 있 습 니 다
  • 핸드폰 음소 거 모드 에서 영상 재생 소리 없 음
    해결 방안:
    오디 오 를 재생 할 때 다른 프로그램 을 음소 거 시 키 거나 다른 프로그램의 오디 오 위 에서 오디 오 를 재생 합 니 다.
    AVAudioSession 클래스 는 AVFoundation 프레임 워 크 에서 도입 된다.모든 iOS 응용 프로그램 에는 오디 오 세 션 이 있 습 니 다.이 세 션 은 AVAudioSession 클래스 의 shared Instance 클래스 방법 으로 접근 할 수 있 습 니 다.다음 과 같 습 니 다.
    
    AVAudioSession *audioSession = [AVAudioSession sharedInstance];
    AVAudioSession 클래스 의 인 스 턴 스 를 얻 은 후에 오디 오 세 션 대상 의 setCategory:error:인 스 턴 스 방법 을 호출 하여 iOS 에서 사용 할 수 있 는 다양한 유형 에서 선택 할 수 있 습 니 다.
    사용 가능 한 오디 오 세 션 종 류 를 보 여 줍 니 다:
    AVAudioSessionCategoryAmbient
    이 분 류 는 다른 애플 리 케 이 션 의 소 리 를 멈 추 지 않 습 니 다.반대로 오디 오 를 다른 애플 리 케 이 션 의 소리 위 에 재생 할 수 있 습 니 다.예 를 들 어 iPod.메 인 UI 스 레 드 가 정상적으로 작 동 합 니 다.AVAPlayer 를 호출 하 는 prepareToPlay 와 play 방법 은 모두 YES 로 돌아 갑 니 다.
    AVAudioSessionCategorySoloAmbient
    이것 은 AVAudioSession Category Ambient 클래스 와 매우 비슷 합 니 다.예 를 들 어 iPod 프로그램 과 같은 다른 프로그램의 오디 오 재생 을 중단 합 니 다.장치 가 음소 거 모드 로 설정 되면 오디 오 재생 이 중 단 됩 니 다.
    AVAudioSessionCategoryRecord
    이것 은 다른 응용 프로그램의 소리(예 를 들 어 iPod)를 멈 추고 응용 프로그램 도 오디 오 재생 을 초기 화 할 수 없 게 합 니 다(예 를 들 어 AVAudio Player).이런 모드 에서 너 는 녹음 만 할 수 있다.이 카 테 고 리 를 사용 하면 AVAudioPlayer 의 prepareToPlay 를 호출 하면 YES 로 돌아 가지 만,play 방법 을 호출 하면 NO 로 돌아 갑 니 다.메 인 UI 인터페이스 가 정상적으로 작 동 합 니 다.이 때 장치 화면 이 사용자 에 의 해 잠 겨 있어 도 녹음 은 계 속 됩 니 다.
    AVAudioSessionCategoryPlayback
    이 분 류 는 다른 응용 프로그램의 오디 오 재생 을 금지 합 니 다(예 를 들 어 iPod 응용 오디 오 재생).AVAudio Player 의 prepareToPlay 와 play 방법 을 사용 하여 응용 프로그램 에서 소 리 를 재생 할 수 있 습 니 다.메 인 UI 인터페이스 가 정상적으로 작 동 합 니 다.이 때 화면 이 잠 겨 있 거나 장치 가 음소 거 모드 라 도 오디 오 재생 은 계 속 됩 니 다.
    AVAudioSessionCategoryPlayAndRecord
    이 카 테 고리 에 서 는 사 운 드 재생 과 녹 화 를 동시에 할 수 있 습 니 다.음성 녹음 이나 재생 이 시작 되면 다른 애플 리 케 이 션 의 음성 재생 이 중단 된다.메 인 UI 인터페이스 가 정상적으로 작 동 합 니 다.이 때 화면 이 잠 겨 있 거나 장치 가 음소 거 모드 로 되 어 있어 도 오디 오 재생 과 녹 화 는 계 속 됩 니 다.
    AVAudioSessionCategoryAudioProcessing
    이 분 류 는 오디 오 재생 이나 녹화 가 아 닌 오디 오 처리 에 사 용 됩 니 다.이런 모드 를 설정 하면 응용 프로그램 에서 어떤 소리 도 재생 하고 녹음 할 수 없습니다.AVAPlayer 를 호출 하 는 prepareToPlay 와 play 방법 은 모두 NO 로 돌아 갑 니 다.다른 오디 오 재생,예 를 들 어 iPod 도 이 모드 에서 중단 합 니 다.
    솔 루 션:우리 가 개발 한 응용 프로그램 이 재생 될 때 다른 응용 프로그램의 재생 을 중단 합 니 다.우리 의 응용 프로그램 이 재생 되 었 을 때 다른 응용 프로그램의 재생 을 계속 합 니 다.핵심 코드 는 다음 과 같 습 니 다.
    구체 적 실현
    백 스테이지 음악 재생 일시 정지 및 계속
    
    //           ,          audio session
    + (void)resumeBackgroundSoundWithError:(NSError **)error {
      [[AVAudioSession sharedInstance] setActive:NO withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:error];
    }
     
    //           ,       audio
    + (void)pauseBackgroundSoundWithError:(NSError **)error {
      
      AVAudioSession *session = [AVAudioSession sharedInstance];
      [session setCategory:AVAudioSessionCategoryPlayback withOptions: AVAudioSessionCategoryOptionAllowBluetooth error:error];
      [session setActive:YES error:error];
    }
     
    + (void)pauseBackgroundSoundWithCategoryRecord {
      AVAudioSession *session = [AVAudioSession sharedInstance];
      [session setCategory:AVAudioSessionCategoryRecord error:nil];
      [session setActive:YES error:nil];
    }
    주:
  • Category 의 선택 은 애플 리 케 이 션 의 audio session 을 활성화 할 때 다음 에 녹음 할 지 재생 할 지 에 달 려 있 습 니 다.녹음 할 경우 category 를 AVAudio Session Category Record 로 설정 해 야 합 니 다
  • 재생 이 라면 AVAudioSession Category Playback 을 설정 합 니 다
  • 녹음 을 준비 하고 AVAudio Session Category Playback 으로 설정 하면 예상 치 못 한 결 과 를 얻 을 수 있 습 니 다 Unexpected error or warning
  • 총결산
    iOS 동 영상 이 백 스테이지 음악 재생 을 중단 하 는 처리 방법 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 iOS 동 영상 이 백 스테이지 음악 재생 을 중단 하 는 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기