Spec-Zone .ru
спецификации, руководства, описания, API
|
public interface SourceDataLine extends DataLine
Отметьте, что соглашение о присвоении имен для этого интерфейса отражает отношение между строкой и ее микшером. С точки зрения приложения строка исходных данных может действовать как цель для аудиоданных.
Строка исходных данных может быть получена из микшера, вызывая
метод getLine
Mixer
с соответствующим
объект. DataLine.Info
SourceDataLine
интерфейс обеспечивает метод для того, чтобы он записал аудиоданные в буфер строки данных. Приложения, которые играют или смешивают аудио, должны записать данные в строку исходных данных достаточно быстро, чтобы препятствовать буферу терять значимость (освобождение), которое могло вызвать разрывы в аудио, которые воспринимаются как щелчки. Приложения могут использовать
метод, определенный в available
DataLine
интерфейс, чтобы определить объем данных, в настоящий момент поставленный в очередь в буфере строки данных. Объем данных, который может быть записан буферу без блокирования, является различием между размером буфера и количеством данных с очередями. Если поставка звукового выхода останавливается должный потерять значимость, a
событие сгенерировано. A STOP
событие сгенерировано, когда звуковой выход возобновляется.START
Mixer
, DataLine
, TargetDataLine
DataLine. Информация
Модификатор и Тип | Метод и Описание |
---|---|
void |
open(AudioFormat format)
Открывает строку с указанным форматом, заставляя строку получить любые необходимые системные ресурсы и стать операционным.
|
void |
open(AudioFormat format, int bufferSize)
Открывает строку с указанным форматом и предложенным размером буфера, заставляя строку получить любые необходимые системные ресурсы и стать операционным.
|
int |
write(byte[] b, int off, int len)
Аудиоданные записей к микшеру через эту строку исходных данных.
|
available, drain, flush, getBufferSize, getFormat, getFramePosition, getLevel, getLongFramePosition, getMicrosecondPosition, isActive, isRunning, start, stop
addLineListener, close, getControl, getControls, getLineInfo, isControlSupported, isOpen, open, removeLineListener
void open(AudioFormat format, int bufferSize) throws LineUnavailableException
Размер буфера определяется в байтах, но должен представить целое число демонстрационных фреймов. Вызов этого метода с требуемым размером буфера, который не удовлетворяет это требование, может привести к IllegalArgumentException. Фактический размер буфера для открытой строки может отличаться от требуемого размера буфера. Значение фактически набор может быть запрошено, впоследствии вызывая
. DataLine.getBufferSize()
Если эта работа успешно выполняется, строка отмечается как открытая, и
событие диспетчеризируется слушателям строки. OPEN
Вызов этого метода на строке, которая уже открыта, недопустим и может привести к IllegalStateException
.
Отметьте, что некоторые строки, когда-то закрытые, не могут быть вновь открыты. Попытки вновь открыть такую строку будут всегда приводить к a LineUnavailableException
.
format
- требуемый аудиоформатbufferSize
- требуемый размер буфераLineUnavailableException
- если строка не может быть открыта из-за ограничений ресурсаIllegalArgumentException
- если размер буфера не представляет целое число демонстрационных фреймов, или если format
не полностью определяется или не недопустимIllegalStateException
- если строка уже открытаSecurityException
- если строка не может быть открыта из-за ограничений безопасностиopen(AudioFormat)
, Line.open()
, Line.close()
, Line.isOpen()
, LineEvent
void open(AudioFormat format) throws LineUnavailableException
Реализация выбирает размер буфера, который измеряется в байтах, но который охватывает целое число демонстрационных фреймов. Размер буфера, который выбрала система, может быть запрошен, впоследствии вызывая
. DataLine.getBufferSize()
Если эта работа успешно выполняется, строка отмечается как открытая, и
событие диспетчеризируется слушателям строки. OPEN
Вызов этого метода на строке, которая уже открыта, недопустим и может привести к IllegalStateException
.
Отметьте, что некоторые строки, когда-то закрытые, не могут быть вновь открыты. Попытки вновь открыть такую строку будут всегда приводить к a LineUnavailableException
.
format
- требуемый аудиоформатLineUnavailableException
- если строка не может быть открыта из-за ограничений ресурсаIllegalArgumentException
- если format
не полностью определяется или не недопустимIllegalStateException
- если строка уже открытаSecurityException
- если строка не может быть открыта из-за ограничений безопасностиopen(AudioFormat, int)
, Line.open()
, Line.close()
, Line.isOpen()
, LineEvent
int write(byte[] b, int off, int len)
available
), этот метод блоки до требуемого объема данных был записан. Это применяется, даже если требуемый объем данных, чтобы записать больше чем размер буфера строки данных. Однако, если строка данных закрывается, остановилась, или сбросила прежде, чем требуемое количество было записано, метод больше не блокирует, но возвращает число байтов, записанных к настоящему времени. Число байтов, которые могут быть записаны без блокирования, может быть установлено, используя
метод available
DataLine
интерфейс. (В то время как гарантируется, что это число байтов может быть записано без блокирования, нет никакой гарантии, которая пытается записать, что дополнительные данные блокируют.)
Число байтов, чтобы записать должно представить целое число демонстрационных фреймов, так, что:
[ bytes written ] % [frame size in bytes ] == 0
IllegalArgumentException
.b
- байтовый массив, содержащий данные, которые будут записаны строке данныхlen
- длина, в байтах, допустимых данных в массиве (другими словами, требуемый объем данных, чтобы записать, в байтах)off
- смещение с начала массива, в байтахIllegalArgumentException
- если требуемое число байтов не представляет целое число демонстрационных фреймов, или если len
отрицательноArrayIndexOutOfBoundsException
- если off
отрицательно, или off+len
больше чем длина массива b
.TargetDataLine.read(byte[], int, int)
, DataLine.available()
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.