-
- All Superinterfaces:
-
AutoCloseable
- All Known Subinterfaces:
-
Clip
,DataLine
,Mixer
,Port
,SourceDataLine
,TargetDataLine
public interface Line extends AutoCloseable
Line
接口表示单声道或多声道音频馈送。 线是数字音频“流水线”的一个元素,例如混频器,输入或输出端口或进入或离开混频器的数据路径。线可以有控制,如增益,平移和混响。 控件本身是扩展基础
Control
类的类的实例。Line
接口提供两种访问方法来获取行的控件:getControls
返回整个集合,而getControl
返回指定类型的单个控件。线条在不同时期存在于各种状态。 当一条线路打开时,它将为其自身保留系统资源,当它关闭时,这些资源被释放用于其他对象或应用程序。
isOpen()
方法可以让您发现线路是开放还是关闭。 然而,开线不需要处理数据。 这样的处理通常由诸如SourceDataLine.write
和TargetDataLine.read
之类的子接口方法来启动。每当线路状态发生变化时,您可以注册一个对象来接收通知。 该对象必须实现
LineListener
接口,它由单一方法update
组成 。 当线路打开和关闭时(如果是DataLine
,启动和停止),将调用此方法。可以注册一个对象来监听多行。 它接收在其事件
update
方法将指定哪些线创建的事件,这是什么类型的事件(OPEN
,CLOSE
,START
,或STOP
)许多样品如何帧的行,并在事件发生的时间已经处理。某些行操作(如打开和关闭)可以在线路为共享音频资源时由非特权代码调用时生成安全异常。
- 从以下版本开始:
- 1.3
- 另请参见:
-
LineEvent
-
-
Nested Class Summary
Nested Classes Modifier and Type 接口 描述 static class
Line.Info
ALine.Info
对象包含有关行的信息。
-
方法摘要
所有方法 接口方法 抽象方法 Modifier and Type 方法 描述 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
事件调度到该行的监听器。请注意,一旦关闭,一些行不能重新打开。 尝试重新打开此行将始终导致一个
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()
关闭该行,表示可以释放该行所使用的任何系统资源。 如果此操作成功,则将该行标记为已关闭,并将CLOSE
事件调度到该行的侦听器。- Specified by:
-
close
接口AutoCloseable
- 异常
-
SecurityException
- 如果由于安全限制,该行不能关闭 - 另请参见:
-
open()
,isOpen()
,LineEvent
-
isOpen
boolean isOpen()
表示线路是否打开,这意味着它已经预留了系统资源并且可以运行,尽管它可能当前没有播放或捕获声音。
-
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)
在此行添加一个侦听器。 只要行的状态发生变化,监听器的update()
方法将使用描述更改的LineEvent
对象进行调用。- 参数
-
listener
- 要作为监听器添加到此行的对象 - 另请参见:
-
removeLineListener(javax.sound.sampled.LineListener)
,LineListener.update(javax.sound.sampled.LineEvent)
,LineEvent
-
removeLineListener
void removeLineListener(LineListener listener)
从此行的侦听器列表中删除指定的侦听器。- 参数
-
listener
- 要删除的监听器 - 另请参见:
-
addLineListener(javax.sound.sampled.LineListener)
-
-