Интерфейс 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
Подробное описание методов
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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/sound/sampled/DataLine.html