模块  java.desktop
软件包  javax.sound.sampled

Interface Line

  • All Superinterfaces:
    AutoCloseable
    All Known Subinterfaces:
    ClipDataLineMixerPortSourceDataLineTargetDataLine

    public interface Line
    extends AutoCloseable
    Line接口表示单声道或多声道音频馈送。 线是数字音频“流水线”的元素,例如混频器,输入或输出端口,或进出混频器的数据路径。

    一行可以有控件,例如增益,声像和混响。 控件本身是扩展基类Control类的类的实例。 Line接口提供了两种用于获取行控件的访问器方法: getControls返回整个集合, getControl返回指定类型的单个控件。

    线在不同时间存在于各种状态。 当一行打开时,它会为自己保留系统资源,当它关闭时,这些资源将被释放用于其他对象或应用程序。 isOpen()方法可让您发现线路是打开还是关闭。 然而,开放线不需要处理数据。 这种处理通常由子接口方法启动,例如SourceDataLine.writeTargetDataLine.read

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

    可以注册对象以收听多行。 它接收在其事件update方法将指定哪些线创建的事件,这是什么类型的事件( OPENCLOSESTART ,或STOP )许多样品如何帧的行,并在事件发生的时间已经处理。

    某些行操作(如打开和关闭)可以在行是共享音频资源时由非特权代码调用时生成安全性异常。

    从以下版本开始:
    1.3
    另请参见:
    LineEvent
    • 嵌套类汇总

      嵌套类  
      变量和类型 接口 描述
      static class  Line.Info
      Line.Info对象包含有关行的信息。
    • 方法详细信息

      • getLineInfo

        Line.Info getLineInfo()
        获得描述此行的 Line.Info对象。
        结果
        线的描述
      • open

        void open()
           throws LineUnavailableException
        打开该行,表明它应该获取任何所需的系统资源并开始运行。 如果此操作成功,则该行被标记为打开,并且将OPEN事件分派给该行的侦听器。

        请注意,某些线条一旦关闭,就无法重新打开。 尝试重新打开这样一条线将始终产生LineUnavailableException

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

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

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

        异常
        IllegalArgumentException - 如果在Clip实例上调用此方法
        LineUnavailableException - 如果由于资源限制而无法打开该行
        SecurityException - 如果由于安全限制而无法打开该行
        另请参见:
        close()isOpen()LineEventDataLineClip.open(AudioFormat, byte[], int, int)Clip.open(AudioInputStream)
      • close

        void close()
        关闭该行,表示可以释放该行使用的所有系统资源。 如果此操作成功,则该行标记为已关闭,并将CLOSE事件分派给该行的侦听器。
        Specified by:
        close ,界面 AutoCloseable
        异常
        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