モジュール java.desktop
パッケージ javax.sound.sampled

インタフェースLine

すべてのスーパー・インタフェース:
AutoCloseable
既知のすべてのサブインタフェース:
Clip, DataLine, Mixer, Port, SourceDataLine, TargetDataLine

public interface Line
extends AutoCloseable
Lineインタフェースは、モノラル・チャネルまたは多重チャネルのオーディオ・フィードを表します。 ラインは、ミキサー、入出力ポート、ミキサーへのデータ入出力パスなどの、デジタル・オーディオ「パイプライン」の1要素です。

ラインにはゲイン、パン、リバーブなどのコントロールがあります。 コントロール自体は、基本のControlクラスを拡張するクラスのインスタンスです。 Lineインタフェースには、ラインのコントロールを取得するためのアクセス用メソッドが2つ用意されています。getControlsはセット全体を返し、getControlは指定されたタイプの単一のコントロールを返します。

ラインは時間によってさまざまな状態で存在します。 ラインが開くと、ライン自体のためにシステム・リソースが確保され、ラインが閉じると、これらのリソースはほかのオブジェクトまたはアプリケーションのために解放されます。 isOpen()メソッドを使用すると、行が開いているか閉じているかを調べることができます。 ただしラインが開いていても、データを処理しているとは限りません。 このような処理は、通常、SourceDataLine.writeTargetDataLine.readなどのサブ・インタフェース・メソッドによって開始されます。

オブジェクトを登録して、ラインの状態が変化するたびに通知を受け取ることができます。 オブジェクトは、LineListenerインタフェースを実装する必要があります。LineListenerインタフェースは、単一のメソッドupdateで構成されています。 このメソッドは、(DataLineであれば、起動し停止)を開いたり閉じたりするときに呼び出されます。

オブジェクトを登録して複数のラインを監視することができます。 オブジェクトがupdateメソッドで受信するイベントは、どのラインがイベントを作成したのか、それはどのタイプのイベントか(OPENCLOSESTART、またはSTOP)、およびイベント発生時ラインがどれだけのサンプル・フレームを処理し終わっているかを指定します。

開閉などの一定のライン操作は、ラインが共有オーディオ・リソースであるときに特権を持たないコードによって呼び出された場合、セキュリティ例外を生成することがあります。

導入されたバージョン:
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イベントがラインのリスナーにディスパッチされます。

      ラインによっては、一度閉じると再度開くことができない場合があります。 こうしたラインを再度開こうとすると、常にLineUnavailableExceptionが表示されます。

      ラインの種類によっては、リソースの割当てに影響を与える設定可能なプロパティを持っているものもあります。 たとえば、DataLineは特定のフォーマットおよびバッファ・サイズで開く必要があります。 こうしたラインは、openメソッドや、目的の設定をアプリケーションで指定できるメソッドを追加するなどして、これらのプロパティを構成するメカニズムを提供します。

      このメソッドは引数をとらず、現在の設定でラインを開きます。 SourceDataLineオブジェクトとTargetDataLineオブジェクトの場合、これは行がデフォルト設定で開かれていることを意味します。 しかしClipの場合、バッファ・サイズはデータのロード時に決定されます。 このメソッドは、アプリケーションがロードするデータを指定することを許可しないため、IllegalArgumentExceptionがスローされます。 したがって、この代わりに、Clipインタフェースに備わっているopenメソッドの1つを使用して、データをClipにロードするようにしてください。

      DataLineでは、ラインの取得に使用されたDataLine.Infoオブジェクトが、1つ以上の完全指定オーディオ形式を指定する場合、最後の形式がデフォルトになります。

      例外:
      IllegalArgumentException - このメソッドがClipインスタンスに対して呼び出された場合
      LineUnavailableException - リソースの制約のためにラインを開けない場合
      SecurityException - セキュリティの制約のためにラインを開けない場合
      関連項目:
      close()isOpen()LineEventDataLineClip.open(AudioFormat, byte[], int, int)Clip.open(AudioInputStream)
    • close

      void close()
      ラインを閉じ、ラインで使用していたシステム・リソースを解放できることを示します。 この操作が完了すると、ラインは閉じられている状態としてマークされ、CLOSEイベントがラインのリスナーにディスパッチされます。
      定義:
      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 - サポートが照会されるコントロールのタイプ
      戻り値:
      指定されたタイプのコントロールの少なくとも1つがサポートされている場合は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)