Интерфейс Line
- Все суперинтерфейсы:
AutoCloseable
- Все известные подинтерфейсы:
-
Clip,DataLine,Mixer,Port,SourceDataLine,TargetDataLine
public interface Line extends AutoCloseable
Интерфейс Line представляет собой аудиопоток с одним или несколькими каналами. Линия — это элемент цифровой аудио"трубы", такой как микшер, входной или выходной порт или тракт данных в микшер или из него.
Линия может иметь регуляторы, такие как усиление, панорамирование и реверберацию. Сами регуляторы являются экземплярами классов, расширяющих базовый класс Control. Интерфейс Line предоставляет два метода доступа для получения регуляторов линии: getControls возвращает весь набор, а getControl возвращает один регулятор указанного типа.
Линии существуют в различных состояниях в разное время. Когда линия открывается, она резервирует системные ресурсы для себя, а когда закрывается, эти ресурсы освобождаются для других объектов или приложений. Метод isOpen() позволяет узнать, открыта ли линия или закрыта. Открытая линия не обязательно обрабатывает данные, однако. Такая обработка обычно инициируется подинтерфейсными методами, такими как SourceDataLine.write и TargetDataLine.read.
Вы можете зарегистрировать объект для получения уведомлений всякий раз, когда состояние линии меняется. Объект должен реализовывать интерфейс LineListener, который состоит из одного метода update. Этот метод будет вызван при открытии и закрытии линии (и, если это DataLine, при ее запуске и остановке).
Объект может быть зарегистрирован для прослушивания нескольких линий. В методе update он получит событие, которое укажет, какая линия создала событие, какой тип события это было (OPEN, CLOSE, START, или STOP ), и сколько кадров образцов обработала линия в момент возникновения события.
Некоторые операции с линией, такие как открытие и закрытие, могут генерировать исключения безопасности, если они вызываются не обладающим привилегиями кодом, когда линия является общим аудиоресурсом.
- С момента:
- 1.3
- См. также:
LineEvent
Вложенные классы
| Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static class |
Line.Info |
Объект |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addLineListener(LineListener listener) |
Добавляет слушателя к этой линии. |
void |
close() |
Закрывает линию, указывая, что любые системные ресурсы, используемые линией, могут быть освобождены. |
Control |
getControl(Control.Type control) |
Получает регулятор указанного типа, если он существует. |
Control[] |
getControls() |
Получает набор регуляторов, связанных с этой линией. |
Line.Info |
getLineInfo() |
Получает объект |
boolean |
isControlSupported(Control.Type control) |
Указывает, поддерживает ли линия регулятор указанного типа. |
boolean |
isOpen() |
Указывает, открыта ли линия, что означает, что она зарезервировала системные ресурсы и функционирует, хотя она в данный момент может не воспроизводить или не принимать звук. |
void |
open() |
Открывает линию, указывая, что она должна получить все необходимые системные ресурсы и начать работу. |
void |
removeLineListener(LineListener listener) |
Удаляет указанного слушателя из списка слушателей этой линии. |
Методы
getLineInfo
Line.Info getLineInfo()
Получает объект Line.Info, описывающий эту линию.
- Возвращает:
- описание линии
open
void open() throws LineUnavailableException
Открывает линию, указывая, что она должна получить все необходимые системные ресурсы и начать работу. Если операция выполнена успешно, линия помечается как открытая, и для слушателей линии отправляется событие OPEN.
Обратите внимание, что некоторые линии после закрытия не могут быть повторно открыты. Попытки повторного открытия такой линии всегда приведут к LineUnavailableException.
Некоторые типы линий имеют настраиваемые свойства, которые могут повлиять на распределение ресурсов. Например, DataLine должна открываться с определенным форматом и размером буфера. Такие линии должны предоставлять механизм настройки этих свойств, например, дополнительный метод или методы open, которые позволяют приложению указать желаемые настройки.
Этот метод не принимает аргументов и открывает линию с текущими настройками. Для объектов SourceDataLine и TargetDataLine это означает, что линия открывается с параметрами по умолчанию. Однако для Clip размер буфера определяется при загрузке данных. Поскольку этот метод не позволяет приложению указать какие-либо данные для загрузки, выбрасывается IllegalArgumentException. Поэтому вы должны вместо этого использовать один из методов open, предоставленных в интерфейсе Clip, чтобы загрузить данные в Clip.
Для DataLine, если объект DataLine.Info, который использовался для получения линии, указывает хотя бы один полностью квалифицированный аудиоформат, последний будет использоваться в качестве формата по умолчанию.
- Выбрасывает:
-
IllegalArgumentException- если этот метод вызван для объекта Clip -
LineUnavailableException- если линия не может быть открыта из-за ограничений ресурсов -
SecurityException- если линия не может быть открыта из-за ограничений безопасности - См. также:
-
close(),isOpen(),LineEvent,DataLine,Clip.open(AudioFormat, byte[], int, int),Clip.open(AudioInputStream)
close
void close()
Закрывает линию, указывая, что любые системные ресурсы, используемые линией, могут быть освобождены. Если операция выполнена успешно, линия помечается как закрытая, и для слушателей линии отправляется событие CLOSE.
- Определяется:
-
closeв интерфейсеAutoCloseable - Выбрасывает:
-
SecurityException- если линия не может быть закрыта из-за ограничений безопасности - См. также:
-
open(),isOpen(),LineEvent
isOpen
boolean isOpen()
Указывает, открыта ли линия, что означает, что она зарезервировала системные ресурсы и функционирует, хотя она в данный момент может не воспроизводить или не принимать звук.
getControls
Control[] getControls()
Получает набор регуляторов, связанных с этой линией. Некоторые регуляторы могут быть доступны только когда линия открыта. Если регуляторов нет, этот метод возвращает массив длины 0.
- Возвращает:
- массив регуляторов
- См. также:
getControl(javax.sound.sampled.Control.Type)
isControlSupported
boolean isControlSupported(Control.Type control)
Указывает, поддерживает ли линия регулятор указанного типа. Некоторые регуляторы могут быть доступны только когда линия открыта.
- Параметры:
-
control- тип регулятора, для которого запрашивается поддержка - Возвращает:
-
trueесли поддерживается хотя бы один регулятор указанного типа, иначеfalse
getControl
Control getControl(Control.Type control)
Получает регулятор указанного типа, если он существует. Некоторые регуляторы могут быть доступны только когда линия открыта.
- Параметры:
-
control- тип запрашиваемого регулятора - Возвращает:
- регулятор указанного типа
- Выбрасывает:
-
IllegalArgumentException- если регулятор указанного типа не поддерживается - См. также:
-
getControls(),isControlSupported(Control.Type control)
addLineListener
void addLineListener(LineListener listener)
Добавляет слушателя к этой линии. Всякий раз, когда меняется состояние линии, вызывается метод update() слушателя с объектом LineEvent, который описывает изменение.
- Параметры:
-
listener- объект, который нужно добавить в качестве слушателя этой линии - См. также:
-
removeLineListener(javax.sound.sampled.LineListener),LineListener.update(javax.sound.sampled.LineEvent),LineEvent
removeLineListener
void removeLineListener(LineListener listener)
Удаляет указанного слушателя из списка слушателей этой линии.
- Параметры:
-
listener- слушатель для удаления - См. также:
addLineListener(javax.sound.sampled.LineListener)
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/sound/sampled/Line.html