Интерфейс 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() |
Останавливает линию. |
Методы, объявленные в интерфейсе javax.sound.sampled.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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/sound/sampled/DataLine.html