Spec-Zone .ru
спецификации, руководства, описания, API
Содержание документации

<Содержание

Приложение 1: Краткий обзор Кода: AudioSystem.java

В пользу поставщиков услуг и разработчиков API, обеспечивается краткий обзор исходного кода Звука Java.

javax.sound.sampled.AudioSystem точка входа к JavaSound для того, чтобы получить ресурсы; то есть, микшеры, строки, и т.д. И каждый метод AudioSystem включает получение провайдеров некоторой службы —MixerProvider[], FormatConversionProvider[], AudioFileReader[], или AudioFileWriter[]. Затем метод продолжает получать некоторую определенную информацию или выполнять некоторую задачу. Есть большое подобие в том, как эти методы работают. Давайте смотреть на как getMixerInfo() работы.

Следующее является схемой последовательности getMixerInfo() в AudioSystem.java:

Схема последовательности getMixerInfo () в AudioSystem.java

getMixerInfo() в AudioSystem первые вызовы getMixerProviders(), a private static метод AudioSystem. Первая вещь это getMixerProviders() делает попытаться загрузиться sun.misc.Service. Если исключение выдается, это означает, что пред1.3 JRE используются и нет никакого существующего механизма поиска поставщика услуг. Если исключение выдается, то sun.media.sound.DefaultServices используется, чтобы получить поставщиков услуг (не изображенный в вышеупомянутой схеме). Если 1.3 mechanims присутствуют, то getJDK13Serives() вызывается (показанным выше) с "javax.sound.sampled.spi.MixerProvider" как параметр.

getJDK13Services() другой private static метод AudioSystem. Это делает попытку к загрузке класса для "com.sun.media.sound.JDK13Services", и если это следует за этим набор Class jdk13Services равный этому. Немного обмана тогда выполняется при использовании Class.getMethod() добраться getProviders() метод jdk13Services, который возвращается как объект Method m. Метод тогда вызывается, который имеет эффект вызова getProviders("javax.sound.sampled.spi.MixerProvider") на JDK13Services. Это поочередно использует providers() метод sun.misc.Service возвратить вектор провайдеров микшера, MixerProvider[]. getMixerInfo() метод MixerProvider тогда вызывается на каждом элементе вектора, чтобы возвратить информацию (Mixer.info) для всех микшеров всех провайдеров микшера.

Другие службы обрабатываются похожим способом. Например, getTargetEncodings() вызовы getFormatConversionProviders(), getAudioFileFormat() вызовы getAudioFileReaders(), и т.д., которые так же структурируются к getMixerProviders().

 


Oracle и/или его филиалы Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.
Свяжитесь с Нами