JavaTM Platform
Standard Ed. 6

javax.sound.sampled
接口 Line

所有已知子接口:
Clip, DataLine, Mixer, Port, SourceDataLine, TargetDataLine

public interface Line

Line 接口表示单声道或多声道音频供给。line 是数字音频“管线”(如混频器、输入或输出端口,或往返于混频器的数据路径)的元素。

line 可以有各种控件,如 gain、pan 和 reverb。这些控件本身是扩展基本 Control 类的那些类的实例。Line 接口提供两个获得 line 控件的存取方法:getControls 返回整个集合,getControl 返回指定类型的单个控件。

行在不同的时间以各种状态存在。当行打开时,它保留本身的系统资源;关闭时,这些资源就会为其他对象或应用程序释放。isOpen() 方法让您发现行是打开的还是关闭的。但是打开的行不需要处理数据。此类处理通常由 SourceDataLine.write 和 TargetDataLine.read 之类的子接口方法初始化。

可以注册一个对象,以便每当行状态更改时接收通知。该对象必须实现 LineListener 接口,此接口由单个方法 update 组成。此方法将在行打开和关闭时调用(如果该行在开始和停止时是一个 DataLine)。

可以注册一个对象来侦听多个行。用其 update 方法接收的事件将指定创建该事件的行、事件的类型(OPEN、CLOSE、START 或 STOP),以及发生事件时该行处理的样本帧的数量。

如果行是共享的音频资源时由未授权的代码调用,则某些行操作(如 open 和 close)可以生成安全性异常。

从以下版本开始:
1.3
另请参见:
LineEvent

嵌套类摘要
static class Line.Info
          Line.Info 对象包含关于行的信息。
 
方法摘要
 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)
          从此行的侦听器列表中移除指定侦听器。
 

方法详细信息

getLineInfo

Line.Info getLineInfo()
获得描述此行的 Line.Info 对象。

返回:
该行的描述。

open

void open()
          throws LineUnavailableException
打开行,指示它应该获得所有所需系统资源并变得可操作。如果此操作获得成功,则将行标记为 open,且向行的侦听器指派一个 OPEN 事件。

注意,有些行一旦关闭就无法重新打开。试图重新打开这样的行总是导致 LineUnavailableException。

某些类型的行具有可能影响资源分配的可配置属性。例如,必须使用特定格式和缓冲区大小打开 DataLine。此类行应该提供配置这些属性的机制,如允许应用程序指定所需设置的其他一个或多个 open 方法。

此方法不使用任何参数,并使用当前设置打开行。对于 SourceDataLine 和 TargetDataLine 对象,这意味着使用默认设置打开该行。但对于 Clip,缓冲区大小是在加载数据时确定的。由于此方法不允许应用程序指定任何要加载的数据,因此会抛出 IllegalArgumentException。所以用户应该改用 Clip 接口中提供的某一 open 方法将数据加载到 Clip 中。

对于 DataLine,如果用于检索行的 DataLine.Info 对象至少指定一个完全限定的音频格式,则将使用最后一个格式作为默认格式。

抛出:
IllegalArgumentException - 如果在 Clip 接口上调用此方法。
LineUnavailableException - 如果由于资源限制无法打开该行。
SecurityException - 如果由于安全限制无法打开该行。
另请参见:
close(), isOpen(), LineEvent, DataLine, Clip.open(AudioFormat, byte[], int, int), Clip.open(AudioInputStream)

close

void close()
关闭行,指示可以释放的该行使用的所有系统资源。如果此操作成功,则将行标记为 closed,并给行的侦听器指派一个 CLOSE 事件。

抛出:
SecurityException - 如果由于安全限制无法关闭该行。
另请参见:
open(), isOpen(), LineEvent

isOpen

boolean isOpen()
指示行是否已打开,行已打开则意味着它已保留系统资源并是可操作的,尽管它当前可能没有播放或捕获声音。

返回:
如果行已打开,则返回 true;否则返回 false。
另请参见:
open(), close()

getControls

Control[] getControls()
获得与此行相关的控件集合。有些控件可能只在行打开时可用。如果没有控件,则此方法则返回一个长度为 0 的数组

返回:
控件数组
另请参见:
getControl(javax.sound.sampled.Control.Type)

isControlSupported

boolean isControlSupported(Control.Type control)
指示该行是否支持特定类型的控件。有些控件可能只在行打开时可用。

参数:
control - 查询其是否受支持的控件类型
返回:
如果至少有一个指定类型的控件受支持,则返回 true;否则返回 false。

getControl

Control getControl(Control.Type control)
获得指定类型的控件,如果有的话。有些控件可能只在行打开时可用。

参数:
control - 所请求的控件类型
返回:
指定类型的控件
抛出:
IllegalArgumentException - 如果指定类型的控件不受支持
另请参见:
getControls(), isControlSupported(Control.Type control)

addLineListener

void addLineListener(LineListener listener)
将侦听器添加到此行。每当行的状态发生更改,就要使用描述更改的 LineEvent 对象调用侦听器的 update() 方法。

参数:
listener - 将作为侦听器添加到此行的对象
另请参见:
removeLineListener(javax.sound.sampled.LineListener), LineListener.update(javax.sound.sampled.LineEvent), LineEvent

removeLineListener

void removeLineListener(LineListener listener)
从此行的侦听器列表中移除指定侦听器。

参数:
listener - 要移除的侦听器
另请参见:
addLineListener(javax.sound.sampled.LineListener)

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。