2012-01-09 4 views
1

내 응용 프로그램에는 여러 가지 활동이 있으며 백그라운드에서 음악이 재생되고 있으며 원하는 것은 응용 프로그램이 시작될 때 음악이 시작되고 응용 프로그램이 재생 될 때 재생이 시작되어야한다는 것입니다 배경으로 간다. 간단한 해결 방법이 있습니까? 아니면 모든 활동에서 재생을 관리하는 시스템을 구현해야합니까? 미리 감사드립니다.다중 활동 응용 프로그램에서 음악 재생 처리

+0

이 링크는 서비스를 사용하지 않고도 도움이됩니다. http://www.rbgrn.net/content/307-light-racer-20-days-61-64-completion – Arash

답변

2

언제든지 시작하고 중지 할 수있는 서비스를 사용하여 음악 파일을 재생할 수 있습니다.

+0

이것은 문제를 해결하지 못합니다. 어디서 서비스를 중단해야할지 정확히 알 수 없기 때문에 사용자는 하나의 액티비티에서 이전 액티비티로 돌아갈 수 있습니다. 그런 다음 재생을 멈추지 말고 전체 앱을 닫을 수도 있습니다. 이제 그만하면됩니다. 어떤 아이디어? – Egor

+0

ActivityManager를 확인하여 응용 프로그램 상태 및 모든 정보를 확인하십시오. –

0

MediaPlayer 서비스를 사용하여 구현하면 가장 손쉽게 얻을 수 있습니다. 각 활동은 재생중인 현재 노래, 재생의 현재 시간을 알고 있어야합니다

  • - 당신이 활동을 구현하는 경우에

    당신은해야합니다.

  • 새로운 활동을 시작하면 현재 활동에서 미디어 플레이어를 중지하고 새로운 활동에서 다시 시작한 다음 미디어 플레이어를 찾아 다시 시작해야합니다.
  • 오디오 재생시 결함이 있습니다. 사용자가 활동을 전환하는 경우 사용자에게 고민 거리가됩니다.

    • 당신은 음악이 재생되어 새로운 활동에 통신 할 필요가 - 당신이 서비스로 구현하는 경우

    . 부울을 그냥 넘기십시오 (isplaying)

  • 각 활동은 앱 자체가 종료되기 전에 마지막 활동인지 여부를 알아야합니다. 이 정보를 알고 있다면 플래그를 확인하고 서비스를 다시 얻은 다음 종료하기 전에 닫아야합니다.
  • 활동간에 전환하는 동안 장애가 발생하지 않습니다.
+0

실제로 사운드 트랙이 하나 뿐이며 영원히 반복됩니다. 주요 문제는 사용자가 하드웨어 홈 버튼을 누를 수 있고 음악이 계속 재생 될 수 있기 때문에 모든 활동이 마지막 일 수 있다는 점입니다. 이는 큰 문제입니다. – Egor

+0

네, 그게 제가 말하고있는 문제였습니다. 하나의 활동에서 미디어 플레이어 인스턴스를 시작하고 잊어 버릴 수는 없으며, 모든 활동에서 각자에게 당신과 함께해야 할 것입니다. 그러나 서비스를 사용하면 언제든지 서비스를 다시 얻을 수 있지만 아무런 결함없이 배경에서 소리를 재생할 수 있습니다. – bluefalcon

0

응용 프로그램 태그를 확장하는 클래스 파일을 만들고 oncreate() 메서드로 음악 재생을 시작합니다. 에 startActivityForResult()를, 그래서 자식 활동이 끝나면 활동이 종료되면 parentActivity는 알게 될 것이다, 그것은 활동에 결과 ::하여 onActivityResult()를 다음 parentActivity에서

public class MyApp extends Application { 
@Override 
public void onCreate() { 
     //start music in a service 
    } 
} 

는 호출 활동에서 다른 활동을 시작합니다.

이 경우 주 상위 활동에서 미디어 재생을 시작할 수 있으며 뒤로를 누르면 음악 (서비스)을 종료 할 수 있습니다.

모든 activies의 HomeButtonClicks를 Incercept하고 플레이어를 일시 중지/중지합니다 (서비스 종료).

+0

Launher 앱에만 허용되는 모든 홈 버튼 클릭 중 첫 번째. 둘째, Application 객체에서 음악 재생을 시작하고 다른 곳에서 멈추는 것은 나쁜 습관입니다. –

관련 문제