안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요. 안드로이드 app으로 간단히 metronome을 만들고 있는데요.
예전에 한참 SoundPool로 만들려다가 이런 저런 에러들이 나서 그냥 냅두고 있다가..
mediaplayer로 간단히 만들어봤습니다.
동작이 되긴 하는데..
emul 상에서 소리가 나다가 중간에 끊기더라구요..
아래에서 윗부분은 정상적으로 3회 소리난 경우구요.
아래부분은 소리가 안난 3회 에러부분입니다.
오류 로그를 봐서 뭐가 문제인지 알 능력이 없네요..;;
소리가 나는 부분도 워닝에 버퍼 어쩌고 나오는거보면.. 정상은 아닌듯 한데..
어떻게 해결 방법이 없을까요..?
04-12 05:01:16.773: DEBUG/AudioSink(31): bufferCount (4) is too small and increased to 12 04-12 05:01:16.783: WARN/MediaPlayer(223): info/warning (1, 44) 04-12 05:01:16.783: INFO/MediaPlayer(223): Info (1,44) 04-12 05:01:17.372: DEBUG/AudioSink(31): bufferCount (4) is too small and increased to 12 04-12 05:01:17.383: WARN/MediaPlayer(223): info/warning (1, 44) 04-12 05:01:17.383: INFO/MediaPlayer(223): Info (1,44) 04-12 05:01:17.973: DEBUG/AudioSink(31): bufferCount (4) is too small and increased to 12 04-12 05:01:17.983: WARN/MediaPlayer(223): info/warning (1, 44) 04-12 05:01:17.983: INFO/MediaPlayer(223): Info (1,44) 04-12 05:01:18.542: WARN/PVPlayer(31): Exceeds maximum number of OpenCore instances 04-12 05:01:18.542: ERROR/MediaPlayerService(31): Failed to create player object 04-12 05:01:18.554: ERROR/MediaPlayer(223): Unable to to create media player 04-12 05:01:18.594: DEBUG/MediaPlayer(223): create failed: 04-12 05:01:18.594: DEBUG/MediaPlayer(223): java.io.IOException: setDataSourceFD failed.: status=0x80000000 04-12 05:01:18.594: DEBUG/MediaPlayer(223): at android.media.MediaPlayer.setDataSource(Native Method) 04-12 05:01:18.594: DEBUG/MediaPlayer(223): at android.media.MediaPlayer.create(MediaPlayer.java:642) 04-12 05:01:18.594: DEBUG/MediaPlayer(223): at net.oartism.Metroid.Metroid.metroidPlaySound(Metroid.java:31) 04-12 05:01:18.594: DEBUG/MediaPlayer(223): at net.oartism.Metroid.Metroid.access$0(Metroid.java:30) 04-12 05:01:18.594: DEBUG/MediaPlayer(223): at net.oartism.Metroid.Metroid$1.run(Metroid.java:63) 04-12 05:01:18.594: DEBUG/MediaPlayer(223): at java.util.Timer$TimerImpl.run(Timer.java:290) 04-12 05:01:19.142: WARN/PVPlayer(31): Exceeds maximum number of OpenCore instances 04-12 05:01:19.142: ERROR/MediaPlayerService(31): Failed to create player object 04-12 05:01:19.154: ERROR/MediaPlayer(223): Unable to to create media player 04-12 05:01:19.154: DEBUG/MediaPlayer(223): create failed: 04-12 05:01:19.154: DEBUG/MediaPlayer(223): java.io.IOException: setDataSourceFD failed.: status=0x80000000 04-12 05:01:19.154: DEBUG/MediaPlayer(223): at android.media.MediaPlayer.setDataSource(Native Method) 04-12 05:01:19.154: DEBUG/MediaPlayer(223): at android.media.MediaPlayer.create(MediaPlayer.java:642) 04-12 05:01:19.154: DEBUG/MediaPlayer(223): at net.oartism.Metroid.Metroid.metroidPlaySound(Metroid.java:31) 04-12 05:01:19.154: DEBUG/MediaPlayer(223): at net.oartism.Metroid.Metroid.access$0(Metroid.java:30) 04-12 05:01:19.154: DEBUG/MediaPlayer(223): at net.oartism.Metroid.Metroid$1.run(Metroid.java:63) 04-12 05:01:19.154: DEBUG/MediaPlayer(223): at java.util.Timer$TimerImpl.run(Timer.java:290) 04-12 05:01:19.743: WARN/PVPlayer(31): Exceeds maximum number of OpenCore instances 04-12 05:01:19.743: ERROR/MediaPlayerService(31): Failed to create player object 04-12 05:01:19.752: ERROR/MediaPlayer(223): Unable to to create media player 04-12 05:01:19.752: DEBUG/MediaPlayer(223): create failed: 04-12 05:01:19.752: DEBUG/MediaPlayer(223): java.io.IOException: setDataSourceFD failed.: status=0x80000000 04-12 05:01:19.752: DEBUG/MediaPlayer(223): at android.media.MediaPlayer.setDataSource(Native Method) 04-12 05:01:19.752: DEBUG/MediaPlayer(223): at android.media.MediaPlayer.create(MediaPlayer.java:642) 04-12 05:01:19.752: DEBUG/MediaPlayer(223): at net.oartism.Metroid.Metroid.metroidPlaySound(Metroid.java:31) 04-12 05:01:19.752: DEBUG/MediaPlayer(223): at net.oartism.Metroid.Metroid.access$0(Metroid.java:30) 04-12 05:01:19.752: DEBUG/MediaPlayer(223): at net.oartism.Metroid.Metroid$1.run(Metroid.java:63) 04-12 05:01:19.752: DEBUG/MediaPlayer(223): at java.util.Timer$TimerImpl.run(Timer.java:290
create failed가 있는것을 보니 출력시 create를 이용하여 출력하신건가요?
create 메소드 설명에 보면 이런 부분이 있습니다.
When done with the MediaPlayer, you should call
release()
, to free the resources. If not released, too many MediaPlayer instances will result in an exception.처음 재생한 후에 release()를 안쓰신게 아닌지...