2011-07-30 3 views
1

저는 현재 음악 플레이어를 개발 중이며 백그라운드에서 음악을 재생하기 위해 서비스를 만들었습니다. 내 갤럭시 SI의 작업 관리자는 내 앱의 CPU 사용량이 0,30-1,10 %에서 증가한 것을 확인했으며, 네이티브 뮤직 플레이어 (및 기타 사용자)의 CPU 사용량도 0 , 00 % (안정). 증가 된 사용량의 원인은 무엇일까요?Android : CPU 사용에 대한 질문.

참고 : 내 응용 프로그램에서 멀티 스레딩이나 asynctasks를 사용하지 않습니다.

+0

재생을 위해 MediaPlayer 클래스를 사용하고 있습니까? – Shash316

답변

1

기본 Android 스택 대신 맞춤형 멀티미디어 스택을 사용하는 경우에 발생할 수 있습니다. 즉, MediaPlayer 클래스를 사용하지 않는 경우입니다. MediaPlayer 클래스는 Stagefright 또는 Opencore라고하는 적절한 미디어 프레임 워크와 내부적으로 상호 작용합니다. 이러한 미디어 프레임 워크는 하드웨어 가속 디코더 => CPU 소모량이 적습니다.

그러나 AudioTrack을 사용하는 경우 파싱 및 디코딩이 필요하며 상당한 시간이 소요되는 디코딩입니다. 확실히 CPU 사용량이 증가 할 수 있습니다.

샤시

+0

잘 이해하는지 모르겠지만 "MediaPlayer player = new MediaPlayer"와 같은 플레이어를 만듭니다. MediaPlayer는 Android (android.media.MediaPlayer)의 클래스입니다. – Tim

+0

그렇다면 맞춤형 멀티미디어 스택의 소프트웨어 코덱 때문이 아닙니다. 미디어 플레이어와 관련된 코드를 어쨌든 공유 할 수 있습니까? – Shash316

+0

좋아요. 그래서 onCreate() 메서드에서 플레이어를 만듭니다. "MediaPlayer player = new MediaPlayer();" \t 문자열 이름 = position.get (curtrack); player.setDataSource (파일명) 그때는 "... \t player.reset()를 재생하기위한 방법이 player.prepare을()을 player.start () player.seekTo (progr); ("위치"는 내 노래의 경로가있는 ArrayList 임) – Tim

관련 문제