Интерфейс DataLine
- Все суперинтерфейсы:
AutoCloseable, Line
- Все известные подинтерфейсы:
Clip, SourceDataLine, TargetDataLine
public interface DataLine extends Line
DataLine добавляет функциональность, связанную с мультимедиа, к своему суперинтерфейсу Line. Эта функциональность включает методы управления передачей данных, которые запускают, останавливают, опустошают и очищают аудиоданные, проходящие через линию. Линия данных также может сообщать текущую позицию, громкость и аудиоформат мультимедиа. Линии данных используются для вывода звука посредством подинтерфейсов SourceDataLine или Clip, которые позволяют приложению записывать данные. Аналогичным образом, ввод звука выполняется подинтерфейсом TargetDataLine, который позволяет считывать данные. Линия данных имеет внутренний буфер, в котором ставятся в очередь входящие или исходящие аудиоданные. Метод drain() блокирует выполнение до опустошения этого внутреннего буфера, обычно после обработки всех данных в очереди. Метод flush() удаляет все доступные данные из очереди внутреннего буфера.
Линия данных генерирует события START и STOP при начале или прекращении активного воспроизведения или захвата данных. Эти события могут генерироваться в ответ на определённые запросы или в результате менее прямых изменений состояния. Например, если для неактивной линии данных вызвать start(), и данные доступны для захвата или воспроизведения, вскоре будет сгенерировано событие START, когда фактически начнётся воспроизведение или захват данных. Или, если поток данных к активной линии данных ограничен настолько, что при воспроизведении данных возникает пауза, генерируется событие STOP.
Микшеры часто поддерживают синхронизированное управление несколькими линиями данных. Синхронизацию можно настроить с помощью метода synchronize интерфейса Mixer. Более подробное описание см. в описании интерфейса Mixer.
- Начиная с:
- 1.3
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static class |
DataLine.Info |
Помимо информации о классе, унаследованной от суперкласса, DataLine.Info предоставляет дополнительные сведения, относящиеся к линиям данных. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
int |
available() |
Возвращает количество байтов данных, доступных в данный момент приложению для обработки во внутреннем буфере линии данных. |
void |
drain() |
Опустошает очередь данных линии, продолжая ввод-вывод данных до тех пор, пока внутренний буфер линии данных не опустеет. |
void |
flush() |
Очищает очередь данных линии. |
int |
getBufferSize() |
Возвращает максимальное количество байтов данных, помещающихся во внутренний буфер линии данных. |
AudioFormat |
getFormat() |
Возвращает текущий формат (кодировку, частоту дискретизации, количество каналов и т. д.) аудиоданных линии данных. |
int |
getFramePosition() |
Возвращает текущую позицию в аудиоданных в отсчётных кадрах. |
float |
getLevel() |
Возвращает текущий уровень громкости линии. |
long |
getLongFramePosition() |
Возвращает текущую позицию в аудиоданных в отсчётных кадрах. |
long |
getMicrosecondPosition() |
Возвращает текущую позицию в аудиоданных в микросекундах. |
boolean |
isActive() |
Указывает, выполняет ли линия активный ввод-вывод (например, воспроизведение или захват). |
boolean |
isRunning() |
Указывает, запущена ли линия. |
void |
start() |
Позволяет линии выполнять ввод-вывод данных. |
void |
stop() |
Останавливает линию. |
Методы, объявленные в интерфейсе Line
addLineListener, close, getControl, getControls, getLineInfo, isControlSupported, isOpen, open, removeLineListener | Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addLineListener |
Добавляет слушателя к этой линии. |
void |
close() |
Закрывает линию, указывая, что системные ресурсы, используемые линией, можно освободить. |
Control |
getControl |
Возвращает элемент управления указанного типа, если он существует. |
Control[] |
getControls() |
Возвращает набор элементов управления, связанных с этой линией. |
Line.Info |
getLineInfo() |
Возвращает объект Line.Info, описывающий эту линию. |
boolean |
isControlSupported |
Указывает, поддерживает ли линия элемент управления указанного типа. |
boolean |
isOpen() |
Указывает, открыта ли линия, то есть зарезервировала ли она системные ресурсы и работает ли она, хотя в данный момент звук может не воспроизводиться и не захватываться. |
void |
open() |
Открывает линию, указывая, что она должна получить необходимые системные ресурсы и начать работу. |
void |
removeLineListener |
Удаляет указанного слушателя из списка слушателей этой линии. |
Подробное описание методов
drain
void drain()
drain() вызывается для остановленной линии, в очереди которой есть данные, метод будет блокировать выполнение до тех пор, пока линия не запустится и очередь данных не опустеет. Если drain() вызывается одним потоком, а другой поток продолжает заполнять очередь данных, операция не завершится. Этот метод всегда возвращает управление при закрытии линии данных.- См. также:
flush
void flush()
- См. также:
start
void start()
START.- См. также:
stop
void stop()
flush. При остановке захвата или воспроизведения звука генерируется событие STOP.- См. также:
isRunning
boolean isRunning()
false. Открытая линия начинает работать, когда первые данные представлены в ответ на вызов метода start, и продолжает работать, пока представление данных не прекратится в ответ на вызов stop или вследствие завершения воспроизведения.- Возвращает:
-
true, если линия запущена; в противном случае —false - См. также:
isActive
boolean isActive()
START. Аналогичным образом, когда активная линия становится неактивной, она отправляет событие STOP.- Возвращает:
-
true, если линия активно захватывает или воспроизводит звук; в противном случае —false - См. также:
getFormat
AudioFormat getFormat()
Если линия не открыта и никогда не открывалась, возвращается формат по умолчанию. Формат по умолчанию — это аудиоформат, определяемый реализацией, либо, если объект DataLine.Info, использованный для получения этого DataLine, задаёт хотя бы один полностью определённый аудиоформат, в качестве формата по умолчанию используется последний из них. Открытие линии с конкретным аудиоформатом (например, SourceDataLine.open(AudioFormat)) переопределяет формат по умолчанию.
- Возвращает:
- текущий формат аудиоданных
- См. также:
getBufferSize
int getBufferSize()
- Возвращает:
- размер буфера в байтах
available
int available()
Обратите внимание, что размер измеряется в байтах, но всегда соответствует целому числу отсчётных кадров аудиоданных.
Гарантируется, что операция чтения или записи объёма данных, не превышающего количество байтов, возвращаемое available(), не будет блокироваться; однако нет гарантии, что попытка прочитать или записать больше данных приведёт к блокировке.
- Возвращает:
- объём доступных данных в байтах
getFramePosition
int getFramePosition()
getLongFramePosition.- Возвращает:
- количество кадров, обработанных с момента открытия линии
- См. также:
getLongFramePosition
long getLongFramePosition()
- Возвращает:
- количество кадров, обработанных с момента открытия линии
- Начиная с:
- 1.5
getMicrosecondPosition
long getMicrosecondPosition()
- Возвращает:
- количество микросекунд обработанных данных с момента открытия линии
getLevel
float getLevel()
- Возвращает:
- текущую амплитуду сигнала в этой линии или
AudioSystem.NOT_SPECIFIED
© 1993, 2025, 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.