Интерфейс 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 или из-за завершения воспроизведения.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, 2021, 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/17/docs/api/java.desktop/javax/sound/sampled/DataLine.html