2012-04-24 9 views
0

나는 안드로이드 MediaPlayer을 사용하여 백그라운드에서 지속적으로 재생되는 노래를 가지고 있는데, 이것은 계속해서 반복된다는 것을 의미합니다.안드로이드 SoundPool 클래스 내 응용 프로그램에서 이상한 행동

클래스를 사용하여 이산 시간에 재생되는 짧은 사운드는 25-30이고, 또한 메인 노래를 반복해서 재생해야합니다.

소리의 길이는 0.5이며, 그 중 일부는 0.7Mb입니다. 노래의 평균 크기는 약 0.4Mb입니다.

이 응용 프로그램을 만든 장치에서이 모든 작업을 원활하게 수행 할 수 있습니다. 그러면 SoundPool에 듀얼 코어 폰에서 문제가 있다는 것을 알게되었습니다. 그래서 나는 그들에 대한지지를 철회했다.

최근에 2.3.3을 실행하는 구형 장치에서이 앱을 테스트했는데 새로운 문제는 사운드가 처음 4-5주기 동안 올바르게 재생되는 것입니다. 예를 들어 주 노래가 4-5 회 재생 될 때까지, 그런 다음 6 일에 재생 될 때까지 시간, 소리의 재생에 눈에 띄는 지연이 있습니다, 나는 SoundPool.play()의 값을 기록하고 그 지연이 ~ (1-2 초)임을 알았습니다. 그리고이 문제는 저급 전화에서만 발생합니다. 왜 이런 일이 일어 났습니까? 문제는 SoundPool 클래스에서 발생했으며 테스트 한 장치가 RAM500Mb이고 괜찮은 600Mhz 프로세서 였기 때문에 하드웨어 문제가 아닙니다.

당분간 듀얼 코어 폰을 제외한 대부분의 기기에서 앱을 실행해야하므로이 문제를 해결해야합니다.

또한 MediaPlayer를 사용하여 사운드를 재생할 수 없습니다. CPU 오버 헤드를 높이고 내 앱이 지연되는 것을 원하지 않고 내가 직접 얼마나 많은 소리를 재생할 지 모릅니다.

이 문제를 해결하고 지연을 줄이는 방법에 대한 모든 단서를 환영합니다.

답변

1

많은 하드웨어/하위 레벨 소프트웨어 요소가 포함되어 있기 때문에 오디오/비디오 재생이 일반적으로 문제가됩니다 (별도의 칩에 특수한 디코딩 하드웨어가 있거나 CPU에 내장되어있을 수 있으며 소프트웨어 디코더, 블루투스, 헤드폰 잭과 스피커 2 대, 커널에서 안드로이드 시스템에 이르는 거대한 소프트웨어 스택 등을 전환합니다. 아마 안드로이드 장치 중 가장 취약한 하위 시스템 일 것입니다. 많은 장치가 해당 영역에서 더 작은 단점을 가지고 있으며 직접 Mhz/RAM/Dualcore와 관련이 없습니다. 그리고 불행히도 그 중 일부와 함께 살아야합니다. (

다른 방법으로 오디오를 재생/압축하는 것이 좋습니다. 5 사이클 후에 재생을 다시 시작하는 것 등