2013-03-21 1 views
0

Android 게임에서 작업 중이며 표준 Android 구성 요소를 사용하고 있습니다.Android 백그라운드 음악 게임이 반복되기 전에 일시 중지합니다.

배경 음악을 반복해서 재생해야하는 미디어 플레이어 개체가 있습니다. 저는 음악을 작곡하고 그것을 렌더링했습니다 ... 그리고 그것은 완벽하게 반복됩니다.

지금은 게임에 내 음악 파일을 추가 한 경우 ... 모든 루프 음악이 잠시 중지 ...하지만 매우 성가신 전에. 왜 그런 일이 일어나는거야?

2.3.3 전화 장치 및 ICS 에뮬레이터에서 테스트 해봤습니다. 매번 같은 일이 발생합니다. 나는 그것을 반복하고 아주 좋은 소리를 PC ... 일부 플레이어에서 같은 파일을 재생할 때

/** Play background music */ 
public static void playMusic() { 

    if (backgroundMusic == null) { 
     backgroundMusic = new MediaPlayer(); 
     backgroundMusic.setVolume(0.5f, 0.5f); 

     try { 
      backgroundMusic.setDataSource(activity.getAssets() 
        .openFd("background_music.ogg") 
        .getFileDescriptor()); 
      backgroundMusic.prepare(); 
      backgroundMusic.setAudioStreamType(AudioManager.STREAM_MUSIC); 
      backgroundMusic.setLooping(true); 
      backgroundMusic.start(); 
     } catch (IllegalArgumentException e) { 
      e.printStackTrace(); 
     } catch (IllegalStateException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

} 

어떻게이 문제를 해결하는 :

이 내 코드? Tnx!

답변

0

글쎄, 불행히도, 그냥 그렇게 작동합니다.
이 끝난 후 플레이어를 다시 시작하는 것이 문제입니다. 당신은 API 16 이상을 사용하는 경우

, 당신은 setNextMediaPlayer(MediaPlayer) -method를 사용할 수 있습니다. 그런 다음 그는 잠시 멈추지 않는 방식으로 다음 MediaPlayer을 시작하려고합니다.

당신이 16보다 작은 API에 대한 개발하는 경우, 당신은 MediaPlayer으로이 문제를 처리 할 수있는 방법을 모르겠어요.

당신은 2 MediaPlayers 작업 및 첫 번째 정지 직전 두 번째를 시작하려고 할 수

. 그러나 나는 그것이 얼마나 효과적인지 모르겠다. 왜냐하면 새로운 플레이어를 정확히 언제 시작해야하는지 알 필요가 있기 때문이다.

편집

:
좀 더 구글 작업 후, 나는 this을 발견했다.
누군가가 mp3 -File을 ogg -File로 변환하도록 제안했는데, 일시 중지하지 않고 루프를 돌릴 수있게 만들었을 것입니다. 그러나 나는 그것을 시도하지 않았다.
의견에 따르면, 이것은 한 사람에게는 효과가 있었지만 다른 사람에게는 효과가 없었습니다. 나는이 코드를 변경 한

내가이 일을 할 수있는 방법을 찾을 생각

+0

우물. – Veljko

+0

나쁜 소식을 알려서 죄송합니다./ – MalaKa

+0

wav, mp3 및 ogg 파일을 사용해 보았습니다 ... 같은 일이 발생했습니다 – Veljko

0

은 ... :

/** Play background music */ 
public static void playMusic() { 

    if (backgroundMusic == null) { 
     backgroundMusic = new MediaPlayer(); 
     backgroundMusic.setVolume(0.5f, 0.5f); 
     AssetFileDescriptor afd; 
     try { 
      afd = activity.getAssets().openFd(
        "background_music.ogg"); 
      backgroundMusic.setDataSource(afd.getFileDescriptor(), 
        afd.getStartOffset(), afd.getLength()); 
      backgroundMusic.setLooping(true); 
      backgroundMusic.prepare(); 
     } catch (IOException e1) { 
      e1.printStackTrace(); 
     } 

     backgroundMusic.start(); 
    } 

} 

이 지금은 잘 루프

... 문제는 '내가 돈이다 왜 진짜로 이해하는지 ...

희망이 나와 같은 문제가있는 사람들에게 도움이 될 것입니다.

건배!

관련 문제