2013-09-02 7 views
0

연구 일 이후에 나는 여기에 직접 묻는 것 외에 다른 방법이 없다는 결론에 도달했습니다.탭형 앱용 글로벌 오디오 플레이어

내부에 여러 개의 UITableViewController가 포함 된 탭 응용 프로그램이 있습니다. 이 TableViewController 중 하나에서 셀을 클릭하면 오디오 스트림을 재생해야합니다. MPMoviePlayerViewController를 사용하여 지금까지 작업 중입니다. 그러나 플레이어에서 "완료"를 클릭하면 오디오가 재생되지 않습니다.

내가 필요한 것은 오디오 트랙을 시작할 수 있고 "완료"를 클릭하면 멈추지 말아야한다는 것입니다. 또한 플레이어에게 돌아갈 수있는 방법이 있어야합니다.

내가 생각했던 것은 통합 된 플레이어로 "글로벌 뷰"와 같은 것을 만드는 것이었고 앱의 다른 모든 뷰는이 전체보기를 사용하여 선택한 오디오를 재생해야했습니다.

그래서 MPViewer에서 재생을 시작하는 playAudio 메서드가있는 UIView를 만들었습니다. 그러나 다른 사람에게서이 견해로가는 길은 무엇입니까? 지금은이 메서드를 직접 호출하기 전에 그냥 추가했습니다.

[self.navigationController pushViewController:mediaPlayer animated:YES]; 

하지만 잘못된 방법으로 생각합니다. 내가 성취하고자하는 것은 플레이어에서 오디오를 재생하는 것입니다. 플레이어에서 "완료"를 클릭하면 배경에 머무르게됩니다. 이 플레이어는 대부분의 라디오 응용 프로그램 및 음악 응용 프로그램처럼 모든보기에서 (예 : 각 탭 막대보기의 UIButton을 통해) 도달해야합니다.

도움을 주시면 감사하겠습니다.

답변

0

이 목적으로 MPMoviePlayerViewController을 사용하지 않아야합니다. 보기 및 제어 기능으로 나만의 오디오 플레이어를 만들거나 타사 라이브러리를 사용할 수 있습니다 (Google에서 검색 할 수 있음). 행운을 빕니다!

0

동영상을 재생하도록 설계 되었기 때문에 MPMoviePlayerViewController을 사용하여 오디오를 재생하면 안됩니다. AVPlayer을 사용하여 오디오를 재생하는 것이 좋습니다 (로컬 오디오에만 관심이 있고 인터넷에서 스트리밍하지 않는 경우 AVAudioPlayer도 좋습니다).

AVPlayer로 오디오를 재생할 때도 계속 재생됩니다. 너 앱이 배경에 들어간다.

앱 뷰 계층은 다음과 비슷한 모습이 될 것

  • 루트 뷰 컨트롤러

    • 탭 바 컨트롤러

      • 로보기 컨트롤러는 여기
      • 뷰 컨트롤러는 뷰 컨트롤러가 될 것이다 "지금 재생"뷰 컨트롤러

A "지금 재생"당신을 오디오 컨트롤을 넣고 사용자에게 재생중인 내용을 표시 할 수 있습니다. 지금 재생중인 뷰 컨트롤러를 앱 위임자 또는 루트보기 컨트롤러에서 쉽게 액세스 할 수 있도록 속성으로 만들 수 있습니다. 예를 들어 :

id<UIApplicationDelegate> appDelegate = [[UIApplication sharedApplication] delegate]; 
[self.navigationController presentViewController:appDelegate.nowPlayingViewController animated:YES completion:nil]; 

당신은 지금 재생 화면을 표시 할 필요가 뷰 컨트롤러의위한 버튼이 코드를 추가 할 수 있습니다.

+0

오, 감사합니다. 그 소리는 위대하고 논리적입니다. MPMoviePlayer는 처리하기가 매우 쉽기 때문에 사용했습니다. 하나 더 질문 : 오디오 플레이어의 기본 스타일이 있습니까? 그래서 플레이어가 직접 컨트롤 할 필요가 없습니까? 기본 플레이어 스타일만으로 충분하기 때문에 묻습니다. 또한 UITableViewControllers에 "모두 재생"버튼이있어서 큐를 만들어야합니다. 여기에 AVQueuePlayer를 사용하는 것이 좋습니까? –

+0

AVPlayer를 사용하는 경우 불행히도 기본 플레이어가 없으므로 직접 제작해야하지만 AVQueuePlayer를 사용하여 음악을 재생할 수 있습니다. 또한 답변을 수락하십시오. :) – Frank