| 
 | JavaTM Platform Standard Ed. 6 | |||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
public interface TargetDataLine
目标数据行是可以从中读取音频数据的某种类型的 DataLine
注意,此接口的命名约定反映了行及其混频器之间的关系。从应用程序的角度来看,目标数据行可以充当音频数据的源。
可以通过使用适当 DataLine.InfoMixer 的 getLine
该 TargetDataLine 接口提供从目标数据行的缓冲区读取所捕获数据的方法。录制音频的应用程序应该以足够快的速度从该目标数据行读取数据,以防缓冲区溢出,溢出可能导致单击时所捕获数据中出现可感知的间断。应用程序可以使用 DataLine 接口中定义的 available
Mixer, 
DataLine, 
SourceDataLine| 嵌套类摘要 | 
|---|
| 从接口 javax.sound.sampled.DataLine 继承的嵌套类/接口 | 
|---|
| DataLine.Info | 
| 方法摘要 | |
|---|---|
|  void | open(AudioFormat format)打开具有指定格式的行,这样可使行获得所有所需的系统资源并变得可操作。 | 
|  void | open(AudioFormat format,
     int bufferSize)打开具有指定格式和请求缓冲区大小的行,这样可使行获得所有所需的系统资源并变得可操作。 | 
|  int | read(byte[] b,
     int off,
     int len)从数据行的输入缓冲区读取音频数据。 | 
| 从接口 javax.sound.sampled.DataLine 继承的方法 | 
|---|
| available, drain, flush, getBufferSize, getFormat, getFramePosition, getLevel, getLongFramePosition, getMicrosecondPosition, isActive, isRunning, start, stop | 
| 从接口 javax.sound.sampled.Line 继承的方法 | 
|---|
| addLineListener, close, getControl, getControls, getLineInfo, isControlSupported, isOpen, open, removeLineListener | 
| 方法详细信息 | 
|---|
void open(AudioFormat format,
          int bufferSize)
          throws LineUnavailableException
以字节为单位指定缓冲区大小,但该大小必须表示整数形式的样本帧数。使用不满足此要求的所请求缓冲区大小调用此方法可能导致 IllegalArgumentException。已打开的行实际缓冲区大小可能与请求的缓冲区大小不同。实际设置的值可以通过后续调用 DataLine.getBufferSize()
如果此操作成功,则将该行标记为 open,并向行的侦听器指派一个 OPEN
在已经打开的行上调用此方法是非法的,并且可能导致 IllegalStateException。
 
有些行一旦关闭就不能重新打开。试图重新打开这样的行总是导致 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,并向行的侦听器指派一个 OPEN
在已经打开的行上调用此方法是非法的,并且可能导致 IllegalStateException。
 
有些行一旦关闭就无法重新打开。试图重新打开这样的行总是导致 LineUnavailableException。
format - 所需音频格式
LineUnavailableException - 如果由于资源限制而无法打开行
IllegalArgumentException - 如果 format 未完全指定或是无效的
IllegalStateException - 如果行已经打开
SecurityException - 如果由于安全限制而无法打开行open(AudioFormat, int), 
Line.open(), 
Line.close(), 
Line.isOpen(), 
LineEvent
int read(byte[] b,
         int off,
         int len)
可以使用 DataLine 接口的 available
要读取的字节数必须表示整数形式的样本帧数,比如:
 
[ bytes read ] % [frame size in bytes ] == 0
b - 将在此方法返回时包含所请求输入数据的字节数组off - 数组开始处的偏移量,以字节为单位len - 请求的读取字节数
IllegalArgumentException - 如果所请求的字节数不表示整数形式的样本帧数,或者 len 为负。
ArrayIndexOutOfBoundsException - 如果 off 为负,或者 off+len 大于数组 b 的长度。SourceDataLine.write(byte[], int, int), 
DataLine.available()| 
 | JavaTM Platform Standard Ed. 6 | |||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。