At least OpenSL should be an option that is available in an official release. The Samsung Galaxy S2 has some serious issues when trying to play sounds using the SoundPool API (simply crashes sooner or later) and MediaPlayer maybe to slow for sound effects in action games.
The same is true for OpenSL however, we had some issues with destroying an OpenSL player object that has streamed a sound before. The Destroy() call never returned, freeting the application.
Therefore I would recommend the following for Sound playback on android.
- Use MediaPlayer for music and sounds that aren’t played very often (intro jingles for example)
- Use OpenSL to play low-latency sound effects (use BufferQueue for playback). When OpenSL is not available fall back to SoundPool to play the sound.
- OpenSL library should be manually loaded using dlopen() and used if availlable. Actually the same could be done with the native AssetManager, so we would not even need to drop 2.2 for that.
So maybe we only need to drop 2.2 when we are making a change to use NativeActivity.