2011-03-07 8 views
3

몇 가지 활동이있는 간단한 애플리케이션이 있습니다. 사용자가 앱을 사용하는 동안 배경 음악을 재생해야했습니다. 또한 사용자가 앱을 사용하는 동안 전체 시간을 재생하고 앱이 더 이상 포 그라운드에 없을 때 재생하지 않기를 원합니다.Android 앱을 배경으로 음악 재생

나는 몇 가지를 읽고 시도했다. 나는 옵션 메뉴와 같은 첫 번째 활동에서 MediaPlayer를 시작하려고 시도했지만 다음 활동에서는 무작위로 종료되거나 중단되지 않습니다. 첫 번째 활동에서 MediaPlayer를 시작한 다음 다음 활동을 시작하기 위해 버튼을 누르면 현재 위치 시간을 저장하고 MediaPlayer를 일시 중지 한 후 다음 활동으로 시간을 전달한 후 MediaPlayer에서 새 MediaPlayer를 만듭니다. 다음 활동을 시작하고 다시 시작하십시오. 이 방법은 괜찮습니다.하지만 사용자가 뒤로 버튼을 클릭하면 일이 끝나기 시작하며 앱이 보이지 않을 때에도 계속 재생됩니다.

나는 또한 onResume() 및 onPause()를 사용하여 보았지만 한 번에 하나의 활동에만 유용합니다. 서비스를 만들어야합니까? 전에는 서비스를 사용한 적이 없었으며 앱이 보이지 않을 때 음악을 멈추지 않을 것이라고 생각합니다.

난 그냥 내 애플 리케이션에 배경 음악을 추가하고 싶습니다. 나는 이것보다 쉬울 것이라고 생각했다. 어떤 도움이나 아이디어라도 크게 감사 할 것입니다. 또한 이것이 가능한지 아는 것은 도움이 될 것입니다.

+0

같은 것을 u는 비동기 클래스를 사용하여 시도해야합니까? – Piyush

+0

참조 http://stackoverflow.com/questions/11490236/android-comprehensive-failproof-music-service-across-multiple-activites –

답변

0

당신은 서비스를 생성하고 onResume 활동에 바인드하고 바인딩 해제합니다. 그래서 모든 활동이 바인딩 해제되면 서비스가 끝납니다. 음악을 구현하는 가장 좋은 방법은 전체 응용 프로그램입니다.

는 서비스를 만든 다음 그

public ServiceConnection Scon = new ServiceConnection() { 

    public void onServiceConnected(ComponentName name, IBinder binder) 
    { 
     mServ = ((DMusic.ServiceBinder) binder).getService(); 
    } 

    public void onServiceDisconnected(ComponentName name) 
    { 
     mServ = null; 
    } 
}; 

public void doBindService() 
{ 
    if (!mIsBound) 
    { 
     bindService(new Intent(this, DMusic.class), Scon, Context.BIND_AUTO_CREATE); 
     mIsBound = true; 
    } 
} 

public void doUnbindService() 
{ 
    if (mIsBound) 
    { 
     unbindService(Scon); 
     mIsBound = false; 
    } 
} 


@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    doBindService(); 
} 




@Override 
public void onStop() 
{ 
    super.onStop(); 
    doUnbindService(); 
} 
관련 문제