Интерфейс 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, 2023, 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/21/docs/api/java.desktop/javax/sound/sampled/DataLine.html