2012-03-15 41 views
2

我正在使用OpenSL ES,並且我的Android應用程序需要多個頻道,因此我創建了多個播放器對象(爲每個MP3文件添加一個播放器對象)需要玩)。這對於一個應用程序工作正常,但是當我跑我創建了另一個應用程序,它將無法播放任何聲音文件和日誌文件說使用OpenSL ES時「沒有更多曲目名稱可用」

E/AudioFlinger( 119): no more track names available 
E/AudioTrack(6884): AudioFlinger could not create track, status: -12 
E/libOpenSLES(6884): AudioTrack::initCheck status 4294967284 
W/libOpenSLES(6884): Leaving Object::Realize (SL_RESULT_CONTENT_UNSUPPORTED) 

好吧,我讀過,這意味着我走了免費的對象,我應該釋放一些對象。

然而,根據http://mobilepearls.com/labs/native-android-api/opensles/

OpenSL ES的Android支持每個應用程序的單個發動機和 多達32個對象

因此是每個應用程序32米的物體,或者是全局它32個對象?如果是這樣,每當我的應用程序變爲非活動狀態時(onPause/onStop),我都被迫去銷燬()(並重新創建)Player對象?

回答

1

它似乎是每個設備32個對象。所以最好是Destroy,只要不需要(onStop,onDestroy