Интерфейс Line
- Все суперинтерфейсы:
- AutoCloseable
- Все известные подинтерфейсы:
- Clip, DataLine, Mixer, Port, SourceDataLine, TargetDataLine
public interface Line extends AutoCloseable
Интерфейс Line представляет собой моно- или многоканальный аудиопоток. Линия — это элемент цифровой аудио«трубы», например, микшер, входной или выходной порт или тракт данных в микшер или из него.
Линия может иметь управления, такие как громкость, панорамирование и реверберацию. Сами управления являются экземплярами классов, которые расширяют базовый класс . Интерфейс ControlLine предоставляет два метода доступа для получения управлений линии: возвращает весь набор, а getControls возвращает одно управление указанного типа.getControl
Линии существуют в различных состояниях в разное время. При открытии линии она резервирует системные ресурсы для себя, а при закрытии эти ресурсы освобождаются для других объектов или приложений. Метод позволяет определить, открыта или закрыта линия. Однако открытая линия не обязательно обрабатывает данные. Такая обработка обычно инициируется методами подинтерфейсов, такими как isOpen() и SourceDataLine.write. TargetDataLine.read
Вы можете зарегистрировать объект для получения уведомлений всякий раз, когда состояние линии изменяется. Объект должен реализовать интерфейс , который состоит из единственного метода LineListener. Этот метод будет вызываться при открытии и закрытии линии (и, если это updateDataLine, при запуске и остановке).
Объект может быть зарегистрирован для прослушивания нескольких линий. Событие, которое он получит в методе 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, размер буфера определяется при загрузке данных. Поскольку этот метод не позволяет приложению указать данные для загрузки, генерируется исключение IllegalArgumentException. Поэтому вместо этого следует использовать один из методов Clipopen интерфейса 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.