Какие должны быть причины для использования OpenSL ES вместо AudioTrack в Android?

В настоящее время я использую AudioTrack, передавая ему аудиоданные из собственного слоя для воспроизведения.

Кажется, я могу использовать OpenSL ES на собственном уровне вместо AudioTrack в Java. Каковы предполагаемые преимущества OpenSL ES по сравнению с AudioTrack?


person Alexander Kulyakhtin    schedule 25.06.2012    source источник
comment
Я предполагаю, что преимущества заключаются в основном в портативности. Предполагая, что другие ОС также поддерживают OpenSL ES.   -  person harism    schedule 26.06.2012


Ответы (1)


OpenSL ES:

Преимущества:

  1. API низкоуровневого аудио в Android
  2. Независимость от устройства на телефонах Android
  3. Подходит для игр

Недостатки:

  1. Поддерживает только на ОС 2.3+

Аудиотрек:

Преимущества:

  1. API высокого уровня

Недостатки:

  1. Работает на уровне Java, а собственный код должен вызывать javalayer для воспроизведения звука.
person codetiger    schedule 26.06.2012
comment
Спасибо. Как вы понимаете «независимо от устройства» и «хорошо для игр», не могли бы вы немного уточнить или дать мне ссылку? - person Alexander Kulyakhtin; 26.06.2012
comment
С OpenSL ES вы кодируете все в собственной библиотеке, и вам не нужно вызывать уровень Java для аудио, что дает некоторые преимущества в производительности в играх. И это более независимо от платформы, чем любой другой API в Android. - person codetiger; 26.06.2012
comment
Поскольку OpenSL ES является родным C API, потоки приложений, отличных от Dalvik, которые вызывают OpenSL ES, не имеют накладных расходов, связанных с Dalvik, таких как паузы при сборке мусора. Тем не менее, использование OpenSL ES не дает дополнительных преимуществ в производительности, кроме этого. В частности, использование OpenSL ES не приводит к меньшей задержке звука, более высокому приоритету планирования и т. д. по сравнению с тем, что обычно обеспечивает платформа. из: mobilepearls.com/labs/native-android-api/opensles/ index.html - person codetiger; 26.06.2012