2013-08-14 2 views
0

내 응용 프로그램 (! 내가이 범위 내 자신의 두이) 내가 개발을 존중하기 위해 노력하고있어안드로이드 - 어린이 응용 프로그램, 배경 음악과 종료 버튼

세 어린이 1 ~ 3을 위해 디자인 된 게임이다 앱 디자인을위한 가이드 라인을 따르고 사용자가 (부모와 작은 녀석) 기대하는 것과 정확히 일치하는 경험을 시작하십시오.

게임이 시작되면, 게임을 시작할 때 방해받지 않고 AudioManager.OnAudioFocusChangeListener (시작, 볼륨 레벨 변경, 종료 등)를 구현하는 서비스를 통해 (평화로운) 배경 음악을 시작합니다. 각 게임 화면의 작은 버튼으로 켜기/끄기를 전환 할 수있는 옵션이 있습니다.

안드로이드 방식으로 앱을 종료하기 위해 홈 버튼을 누르면 (예 : 종료 버튼/옵션 없음) 제외한 모든 기능이 예상대로 작동합니다. 음악은 계속 무기한 재생됩니다. 내 스위치에서 변경할 수있는 것이 있습니까 (아래 코드 참조)? 나는 멈춤을 멈추라는 말을 할 수 없기 때문에 활동 들간의 완벽한 배경 음악이 망가져 버린다.

이탈 옵션을 만들 수있는 일반적인 앱 디자인에 대한 사례입니다 ('작별 인사를하는 귀여운 동물'로 집을 누르면 프롬프트가 표시됩니다.) 및 종료 및 취소 버튼)? 다른 옵션이 있습니까?

언제나처럼, 나는 비틀 거리며 나를 인도 해 주셔서 감사합니다! =)

@Override 
public void onAudioFocusChange(int focusChange) { 
    // TODO Auto-generated method stub 
    switch (focusChange) { 
    case AudioManager.AUDIOFOCUS_GAIN: 
     Log.v(TAG, "AUDIOFOCUS_GAIN"); 
     // resume playback 
     if (mp == null) {mp = MediaPlayer.create(this, R.raw.backgroundmusic); mp.start(); mp.setLooping(true);} 
     else if (!mp.isPlaying()) mp.start(); 
     mp.setVolume(1.0f, 1.0f); 
     break; 

    case AudioManager.AUDIOFOCUS_LOSS: 
     Log.v(TAG, "AUDIOFOCUS_LOSS"); 
     // Lost focus for an unbounded amount of time: stop playback and release media player 
     if (mp.isPlaying())mp.stop(); 
     mp.release(); 
     mp = null; 
     break; 

    case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT: 
     Log.v(TAG, "AUDIOFOCUS_LOSS_TRANSIENT"); 
     // Lost focus for a short time, but we have to stop 
     // playback. We don't release the media player because playback 
     // is likely to resume 
     if (mp.isPlaying()) mp.pause(); 
     break; 

    case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK: 
     Log.v(TAG, "AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK"); 
     // Lost focus for a short time, but it's ok to keep playing 
     // at an attenuated level 
     if (mp.isPlaying()) mp.setVolume(0.1f, 0.1f); 
     break; 
    } 
} 

답변

1

네, 이것은 Android에서 매우 일반적인 문제입니다. 귀하의 응용 프로그램은 언제든지 어떤 활동에서든 백그라운드로 이동할 수 있으며, 이런 일이 발생하면 앱은 어떤 종류의 콜백도받지 못합니다. 바라건대 그들은 미래의 릴리스에서 이것을 해결할 수 있습니다.

당신이 원하는 것을 성취 할 수있는 방법이 있지만 그것은 생각보다 훨씬 복잡 할 것입니다. Here's a good answer 당신이 찾고있는 것을 정확하게 찾으십시오.

+0

대단한 답변이었습니다. 내가 원했던 바를 정확히 수행합니다. 앱이 최고의 활동이 아닐 때 음악을 멈 춥니 다. 고맙습니다! –