模块 java.desktop

接口 Line

所有父级接口:
AutoCloseable
所有已知的子接口:
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 方法中接收的事件将指定哪条线创建了该事件、它是什么类型的事件(OPENCLOSESTARTSTOP),以及该线在事件发生时处理了多少个样本帧。

如果在线路是共享音频资源时由非特权代码调用,某些线路操作(例如打开和关闭)可能会产生安全异常。

自从:
1.3
参见:
  • 内部类总结

    内部类
    修饰符和类型
    接口
    描述
    static class 
    Line.Info 对象包含有关行的信息。
  • 方法总结

    修饰符和类型
    方法
    描述
    void
    向该行添加一个监听。
    void
    关闭该行,表示可以释放该行正在使用的任何系统资源。
    获取指定类型的控件(如果有)。
    获取与此行关联的控件集。
    获取描述此行的 Line.Info 对象。
    boolean
    指示该行是否支持指定类型的控件。
    boolean
    指示线路是否打开,这意味着它已保留系统资源并且可以运行,尽管它当前可能没有播放或捕获声音。
    void
    open()
    打开该行,表明它应该获取任何所需的系统资源并开始运行。
    void
    从此行的监听列表中删除指定的监听。
  • 方法详情

    • 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

      void close()
      关闭该行,表示可以释放该行正在使用的任何系统资源。如果此操作成功,该行将被标记为已关闭,并且CLOSE 事件将分派给该行的监听器。
      指定者:
      close 在接口 AutoCloseable
      抛出:
      SecurityException - 如果由于安全限制无法关闭线路
      参见:
    • isOpen

      boolean isOpen()
      指示线路是否打开,这意味着它已保留系统资源并且可以运行,尽管它当前可能没有播放或捕获声音。
      返回:
      true 如果线路打开,否则 false
      参见:
    • getControls

      Control [] getControls()
      获取与此行关联的控件集。某些控件可能仅在线路打开时可用。如果没有控件,此方法返回一个长度为 0 的数组。
      返回:
      控件数组
      参见:
    • isControlSupported

      boolean isControlSupported(Control.Type  control)
      指示该行是否支持指定类型的控件。某些控件可能仅在线路打开时可用。
      参数:
      control - 查询支持的控件类型
      返回:
      true 如果支持至少一种指定类型的控件,否则 false
    • getControl

      Control  getControl(Control.Type  control)
      获取指定类型的控件(如果有)。某些控件可能仅在线路打开时可用。
      参数:
      control - 请求控件的类型
      返回:
      指定类型的控件
      抛出:
      IllegalArgumentException - 如果不支持指定类型的控件
      参见:
    • addLineListener

      void addLineListener(LineListener  listener)
      向该行添加一个监听器。每当线路的状态发生变化时,都会使用描述变化的 LineEvent 对象调用监听器的 update() 方法。
      参数:
      listener - 要作为此行的监听器添加的对象
      参见:
    • removeLineListener

      void removeLineListener(LineListener  listener)
      从此行的监听列表中删除指定的监听。
      参数:
      listener - 要删除的监听器
      参见: