- 所有父级接口:
AutoCloseable
- 所有已知的子接口:
Clip,DataLine,Mixer,Port,SourceDataLine,TargetDataLine
Line 接口表示单声道或多声道音频馈送。线路是数字音频“管道”的一个元素,例如混音器、输入或输出端口,或者进出混音器的数据路径。
一条线可以有控制,例如增益、声相和混响。控件本身是扩展基类 Control 类的类的实例。 Line 接口提供了两种获取行控件的访问器方法:getControls 返回整个集合,getControl 返回指定类型的单个控件。
线在不同的时间以不同的状态存在。当一条线路打开时,它会为自己保留系统资源,而当它关闭时,这些资源会被释放给其他对象或应用程序使用。 isOpen() 方法可让您发现线路是打开还是关闭。然而,开放线路不一定要处理数据。此类处理通常由 SourceDataLine.write 和 TargetDataLine.read 等子接口方法启动。
您可以注册一个对象以在线路状态更改时接收通知。该对象必须实现 LineListener 接口,该接口由单一方法 update 组成。当一行打开和关闭时(如果是 DataLine ,则在它开始和停止时)将调用此方法。
可以注册一个对象来监听多条线路。它在其 update 方法中接收的事件将指定哪条线创建了该事件、它是什么类型的事件(OPEN、CLOSE、START 或 STOP),以及该线在事件发生时处理了多少个样本帧。
如果在线路是共享音频资源时由非特权代码调用,某些线路操作(例如打开和关闭)可能会产生安全异常。
- 自从:
- 1.3
- 参见:
-
内部类总结
内部类 -
方法总结
修饰符和类型方法描述voidaddLineListener(LineListener listener) 向该行添加一个监听。voidclose()关闭该行,表示可以释放该行正在使用的任何系统资源。getControl(Control.Type control) 获取指定类型的控件(如果有)。Control[]获取与此行关联的控件集。获取描述此行的Line.Info对象。booleanisControlSupported(Control.Type control) 指示该行是否支持指定类型的控件。booleanisOpen()指示线路是否打开,这意味着它已保留系统资源并且可以运行,尽管它当前可能没有播放或捕获声音。voidopen()打开该行,表明它应该获取任何所需的系统资源并开始运行。voidremoveLineListener(LineListener listener) 从此行的监听列表中删除指定的监听。
-
方法详情
-
getLineInfo
Line.Info getLineInfo()获取描述此行的Line.Info对象。- 返回:
- 线路说明
-
open
打开该行,表明它应该获取任何所需的系统资源并开始运行。如果此操作成功,该线路将被标记为打开,并且OPEN事件将分派给该线路的监听器。请注意,某些线路一旦关闭,将无法重新开通。尝试重新打开此类行将始终导致
LineUnavailableException。某些类型的线路具有可能影响资源分配的可配置属性。例如,
DataLine必须以特定格式和缓冲区大小打开。这些行应该提供一种机制来配置这些属性,例如一个额外的open方法或允许应用程序指定所需设置的方法。此方法不带任何参数,并使用当前设置打开行。对于
SourceDataLine和TargetDataLine对象,这意味着该行以默认设置打开。但是,对于Clip,缓冲区大小是在加载数据时确定的。由于此方法不允许应用程序指定要加载的任何数据,因此抛出IllegalArgumentException。因此,您应该改为使用Clip接口中提供的一种open方法将数据加载到Clip中。对于
DataLine的,如果用于检索行的DataLine.Info对象指定至少一种完全合格的音频格式,则最后一种将用作默认格式。- 抛出:
IllegalArgumentException- 如果在 Clip 实例上调用此方法LineUnavailableException- 如果由于资源限制而无法打开该行SecurityException- 如果由于安全限制而无法打开线路- 参见:
-
close
void close()关闭该行,表示可以释放该行正在使用的任何系统资源。如果此操作成功,该行将被标记为已关闭,并且CLOSE事件将分派给该行的监听器。- 指定者:
close在接口AutoCloseable中- 抛出:
SecurityException- 如果由于安全限制无法关闭线路- 参见:
-
isOpen
boolean isOpen()指示线路是否打开,这意味着它已保留系统资源并且可以运行,尽管它当前可能没有播放或捕获声音。- 返回:
true如果线路打开,否则false- 参见:
-
getControls
Control [] getControls()获取与此行关联的控件集。某些控件可能仅在线路打开时可用。如果没有控件,此方法返回一个长度为 0 的数组。- 返回:
- 控件数组
- 参见:
-
isControlSupported
指示该行是否支持指定类型的控件。某些控件可能仅在线路打开时可用。- 参数:
control- 查询支持的控件类型- 返回:
true如果支持至少一种指定类型的控件,否则false
-
getControl
获取指定类型的控件(如果有)。某些控件可能仅在线路打开时可用。- 参数:
control- 请求控件的类型- 返回:
- 指定类型的控件
- 抛出:
IllegalArgumentException- 如果不支持指定类型的控件- 参见:
-
addLineListener
向该行添加一个监听器。每当线路的状态发生变化时,都会使用描述变化的LineEvent对象调用监听器的update()方法。- 参数:
listener- 要作为此行的监听器添加的对象- 参见:
-
removeLineListener
从此行的监听列表中删除指定的监听。- 参数:
listener- 要删除的监听器- 参见:
-