Spec-Zone.ru › OpenJDK 27

Интерфейс TargetDataLine

Все суперинтерфейсы:
AutoCloseable, DataLine, Line
public interface TargetDataLine extends DataLine
Линия входных данных — это тип DataLine, из которого можно считывать аудиоданные. Наиболее распространённый пример — линия данных, получающая данные от устройства захвата звука. (Устройство реализовано как микшер, записывающий данные в линию входных данных.)

Обратите внимание, что соглашение об именовании этого интерфейса отражает взаимосвязь линии и её микшера. С точки зрения приложения линия входных данных может выступать в качестве источника аудиоданных.

Линию входных данных можно получить от микшера, вызвав метод getLine интерфейса Mixer с соответствующим объектом DataLine.Info.

Интерфейс TargetDataLine предоставляет метод для чтения захваченных данных из буфера линии входных данных. Приложения, записывающие звук, должны считывать данные из линии входных данных достаточно быстро, чтобы предотвратить переполнение буфера, которое может привести к разрывам в захваченных данных, воспринимаемым как щелчки. Приложения могут использовать метод available, определённый в интерфейсе DataLine, чтобы определить объём данных, находящихся в данный момент в очереди буфера линии данных. Если буфер переполняется, самые старые данные в очереди отбрасываются и заменяются новыми.

С момента версии:
1.3
См. также:
  • Mixer
  • DataLine
  • SourceDataLine

Краткое описание вложенных классов

Вложенные классы и интерфейсы, объявленные в интерфейсе DataLine

DataLine.Info
Модификатор и тип Интерфейс Описание
static class  DataLine.Info
Помимо информации о классе, унаследованной от суперкласса, DataLine.Info предоставляет дополнительные сведения, относящиеся к линиям данных.

Краткое описание методов

Модификатор и тип Метод Описание
void open(AudioFormat format)
Открывает линию в указанном формате, обеспечивая получение необходимых системных ресурсов и её готовность к работе.
void open(AudioFormat format, int bufferSize)
Открывает линию в указанном формате и с заданным размером буфера, обеспечивая получение необходимых системных ресурсов и её готовность к работе.
int read(byte[] b, int off, int len)
Считывает аудиоданные из входного буфера линии данных.

Методы, объявленные в интерфейсе DataLine

available, drain, flush, getBufferSize, getFormat, getFramePosition, getLevel, getLongFramePosition, getMicrosecondPosition, isActive, isRunning, start, stop
Модификатор и тип Метод Описание
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(LineListener listener)
Добавляет слушателя к этой линии.
void close()
Закрывает линию, указывая, что используемые ею системные ресурсы можно освободить.
Control getControl(Control.Type control)
Возвращает элемент управления указанного типа, если он имеется.
Control[] getControls()
Возвращает набор элементов управления, связанных с этой линией.
Line.Info getLineInfo()
Возвращает объект Line.Info, описывающий эту линию.
boolean isControlSupported(Control.Type control)
Указывает, поддерживает ли линия элемент управления указанного типа.
boolean isOpen()
Указывает, открыта ли линия, то есть зарезервировала ли она системные ресурсы и готова ли к работе, даже если в данный момент звук не воспроизводится и не захватывается.
void open()
Открывает линию, указывая, что она должна получить необходимые системные ресурсы и перейти в рабочее состояние.
void removeLineListener(LineListener listener)
Удаляет указанного слушателя из списка слушателей этой линии.

Подробное описание методов

open

void open(AudioFormat format, int bufferSize) throws LineUnavailableException
Открывает линию в указанном формате и с заданным размером буфера, обеспечивая получение необходимых системных ресурсов и её готовность к работе.

Размер буфера задаётся в байтах, но должен соответствовать целому числу кадров сэмплов. Вызов этого метода с размером буфера, который не удовлетворяет этому требованию, может привести к IllegalArgumentException. Фактический размер буфера открытой линии может отличаться от запрошенного. Фактически установленное значение можно узнать, вызвав впоследствии DataLine.getBufferSize()

Если эта операция выполнена успешно, линия помечается как открытая, а её слушателям отправляется событие OPEN.

Вызов этого метода для уже открытой линии недопустим и может привести к IllegalStateException.

Некоторые линии после закрытия нельзя открыть повторно. Попытка повторно открыть такую линию всегда приводит к LineUnavailableException.

Параметры:
format — требуемый аудиоформат
bufferSize — требуемый размер буфера в байтах
Исключения:
LineUnavailableException — если линию невозможно открыть из-за ограничений ресурсов
IllegalArgumentException — если размер буфера не соответствует целому числу кадров сэмплов либо format указано не полностью или является недопустимым
IllegalStateException — если линия уже открыта
См. также:
  • open(AudioFormat)
  • Line.open()
  • Line.close()
  • Line.isOpen()
  • LineEvent

open

void open(AudioFormat format) throws LineUnavailableException
Открывает линию в указанном формате, обеспечивая получение необходимых системных ресурсов и её готовность к работе.

Реализация выбирает размер буфера, который измеряется в байтах, но соответствует целому числу кадров сэмплов. Выбранный системой размер буфера можно узнать, вызвав впоследствии DataLine.getBufferSize()

Если эта операция выполнена успешно, линия помечается как открытая, а её слушателям отправляется событие OPEN.

Вызов этого метода для уже открытой линии недопустим и может привести к IllegalStateException.

Некоторые линии после закрытия нельзя открыть повторно. Попытка повторно открыть такую линию всегда приводит к LineUnavailableException.

Параметры:
format — требуемый аудиоформат
Исключения:
LineUnavailableException — если линию невозможно открыть из-за ограничений ресурсов
IllegalArgumentException — если format указано не полностью или является недопустимым
IllegalStateException — если линия уже открыта
См. также:
  • open(AudioFormat, int)
  • Line.open()
  • Line.close()
  • Line.isOpen()
  • LineEvent

read

int read(byte[] b, int off, int len)
Считывает аудиоданные из входного буфера линии данных. Запрошенное количество байтов считывается в указанный массив, начиная с заданного смещения в массиве, выраженного в байтах. Этот метод блокирует выполнение до считывания запрошенного объёма данных. Однако если линия данных закрыта, остановлена, очищена или её буфер опустошён до считывания запрошенного объёма, метод перестаёт блокировать выполнение и возвращает количество байтов, считанных к этому моменту.

Количество байтов, которые можно считать без блокировки, можно определить с помощью метода available интерфейса DataLine. (Гарантируется, что это количество байтов можно считать без блокировки, но нет гарантии, что попытка считать дополнительные данные не приведёт к блокировке.)

Количество считываемых байтов должно соответствовать целому числу кадров сэмплов, то есть:

[ bytes read ] % [frame size in bytes ] == 0

Возвращаемое значение всегда будет удовлетворять этому требованию. Запрос на считывание количества байтов, не соответствующего целому числу кадров сэмплов, не может быть выполнен и может привести к IllegalArgumentException.

Параметры:
b — байтовый массив, в который при возврате этого метода будут записаны запрошенные входные данные
off — смещение от начала массива в байтах
len — запрошенное количество байтов для чтения
Возвращает:
фактическое количество считанных байтов
Исключения:
IllegalArgumentException — если запрошенное количество байтов не соответствует целому числу кадров сэмплов или если len отрицательно
ArrayIndexOutOfBoundsException — если off отрицательно или off+len превышает длину массива b
См. также:
  • SourceDataLine.write(byte[], int, int)
  • DataLine.available()

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, включая концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API