インタフェースTargetDataLine

すべてのスーパー・インタフェース:
AutoCloseable, DataLine, Line

public interface TargetDataLine extends DataLine
ターゲット・データ行は、オーディオ・データを読み取ることができるDataLineのタイプです。 もっとも一般的な例は、データをオーディオ・キャプチャ・デバイスから取得するデータ・ラインです。 デバイスはターゲット・データ・ラインに書き込むミキサーとして実装されます。

このインタフェースの命名規則は、ラインとミキサーの関係を反映しています。 アプリケーションから見ると、ターゲット・データ・ラインはオーディオ・データのソースの役割をします。

ターゲット・データ行は、適切なDataLine.InfoオブジェクトでMixergetLineメソッドを呼び出すことで、ミキサーから取得できます。

TargetDataLineインタフェースは、ターゲット・データ行のバッファから取得されたデータを読み取るためのメソッドを提供します。 オーディオを記録するアプリケーションは、バッファがオーバーフローしないように十分な速さでターゲットのデータ行からデータを読み取る必要があります。これにより、クリックとして認識されるキャプチャされたデータの不連続が発生する可能性があります。 アプリケーションは、DataLineインタフェースで定義されたavailableメソッドを使用して、データ行のバッファに現在キューに入れられているデータの量を判別できます。 バッファがオーバーフローを起こした場合、キューに入っているもっとも古いデータが破棄されて新しいデータに置き換えられます。

導入されたバージョン:
1.3
関連項目:
  • ネストされたクラスのサマリー

    インタフェースで宣言されたネストされたクラス/インタフェース DataLine

    DataLine.Info
    修飾子と型
    インタフェース
    説明
    static class 
    スーパー・クラスから継承されたクラス情報以外に、DataLine.Infoはデータ・ラインに固有の追加情報を提供します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    void
    open(AudioFormat format)
    指定されたフォーマットでラインを開き、ラインが必要なシステム・リソースを獲得して操作可能になるようにします。
    void
    open(AudioFormat format, int bufferSize)
    指定されたフォーマットと指定されたバッファ・サイズでラインを開き、ラインが必要なシステム・リソースを獲得して操作可能になるようにします。
    int
    read(byte[] b, int off, int len)
    データ・ラインの入力バッファからオーディオ・データを読み込みます。

    インタフェースで宣言されたメソッド DataLine

    available, drain, flush, getBufferSize, getFormat, getFramePosition, getLevel, getLongFramePosition, getMicrosecondPosition, isActive, isRunning, start, stop
    修飾子と型
    メソッド
    説明
    int
    アプリケーションがデータ・ラインの内部バッファ内で現在処理できるデータのバイト数を取得します。
    void
    データの入出力をデータ・ラインの内部バッファが空になるまで継続して、そのラインからキューに入っているデータを排出します。
    void
    ラインからキューに入っているデータをフラッシュします。
    int
    データ・ラインの内部バッファ内に収まるデータの最大バイト数を取得します。
    データ・ラインのオーディオ・データの現在の形式(エンコーディング、サンプル・レート、チャネル数など)を取得します。
    int
    オーディオ・データの現在の位置をサンプル・フレーム数で取得します。
    float
    ラインの現在のボリューム・レベルを取得します。
    long
    オーディオ・データの現在の位置をサンプル・フレーム数で取得します。
    long
    オーディオ・データ内の現在の位置をマイクロ秒単位で取得します。
    boolean
    ラインがアクティブな入出力(再生や取り込みなど)を実行しているかどうかを示します。
    boolean
    ラインが実行中かどうかを示します。
    void
    ラインでのデータ入出力を可能にします。
    void
    ラインを停止します。

    インタフェースLineで宣言されたメソッド

    addLineListener, close, getControl, getControls, getLineInfo, isControlSupported, isOpen, open, removeLineListener
    修飾子と型
    メソッド
    説明
    void
    リスナーをこのラインに追加します。
    void
    ラインを閉じ、ラインで使用していたシステム・リソースを解放できることを示します。
    指定されたタイプのコントロールがある場合、そのコントロールを取得します。
    このラインに関連付けられたコントロールのセットを取得します。
    このラインを説明するLine.Infoオブジェクトを取得します。
    boolean
    指定されたタイプのコントロールをラインがサポートしているかどうかを示します。
    boolean
    ラインが開いているかどうか、つまり現在はサウンドを再生または収集していなくてもシステム・リソースを確保し操作可能であるかどうかを示します。
    void
    ラインを開き、必要なシステム・リソースを獲得して操作可能になっていることを示します。
    void
    このラインのリスナーのリストから、指定されたリスナーを削除します。
  • メソッドの詳細

    • open

      void open(AudioFormat format, int bufferSize) throws LineUnavailableException
      指定されたフォーマットと指定されたバッファ・サイズでラインを開き、ラインが必要なシステム・リソースを獲得して操作可能になるようにします。

      バッファ・サイズはバイト単位で指定しますが、サンプル・フレームの整数値を表す必要があります。 リクエストされたバッファ・サイズがこの要件を満たさない場合にこのメソッドを呼び出すと、IllegalArgumentExceptionが返される可能性があります。 開いたラインの実際のバッファ・サイズは、指定したバッファ・サイズとは異なることがあります。 実際に設定された値は、その後DataLine.getBufferSize()を呼び出して照会することができます

      この操作が成功すると、行はオープンとしてマークされ、OPENイベントが行のリスナーにディスパッチされます。

      すでに開いているラインでこのメソッドを呼び出すのは不適切であり、IllegalStateExceptionが表示されることがあります。

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

      パラメータ:
      format - 目的のオーディオ形式
      bufferSize - 必要なバッファ・サイズ(バイト単位)
      スロー:
      LineUnavailableException - リソースの制約のためにラインを開けない場合
      IllegalArgumentException - バッファ・サイズがサンプル・フレームの整数値を表さない場合、あるいはformatの指定が不完全または無効な場合
      IllegalStateException - ラインがすでに開いている場合
      関連項目:
    • open

      void open(AudioFormat format) throws LineUnavailableException
      指定されたフォーマットでラインを開き、ラインが必要なシステム・リソースを獲得して操作可能になるようにします。

      バッファ・サイズは実装により選択されます。バッファ・サイズはバイト単位ですが、サンプル・フレームの整数値であることが必要です。 システムが選択したバッファ・サイズは、その後DataLine.getBufferSize()を呼び出すことによって照会することができます

      この操作が成功すると、行はオープンとしてマークされ、OPENイベントが行のリスナーにディスパッチされます。

      すでに開いているラインでこのメソッドを呼び出すのは不適切であり、IllegalStateExceptionが表示されることがあります。

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

      パラメータ:
      format - 目的のオーディオ形式
      スロー:
      LineUnavailableException - リソースの制約のためにラインを開けない場合
      IllegalArgumentException - formatの指定が不完全または無効な場合
      IllegalStateException - ラインがすでに開いている場合
      関連項目:
    • read

      int read(byte[] b, int off, int len)
      データ・ラインの入力バッファからオーディオ・データを読み込みます。 要求されたバイト数が、指定された配列の指定されたオフセット位置(バイト単位)を始点として読み込まれます。 このメソッドは、要求された量のデータを読込み終えるまでブロックされます。 ただし、要求された量が読み込まれる前にデータ・ラインがクローズ、停止、排出、またはフラッシュされると、メソッドのブロックが解除され、それまでに読み込まれたバイト数が返されます。

      ブロックせずに読み取れるバイト数は、DataLineインタフェースのavailableメソッドを使用して確認できます。 このバイト数はブロックされずに確実に読み込めますが、追加データを読み込もうとしたときにブロックされるかどうかは確実ではありません。

      読み込まれるバイト数は、次のようにサンプル・フレームの整数値を表す必要があります。

      [ bytes read ] % [frame size in bytes ] == 0

      戻り値は常にこの条件を満たしています。 サンプル・フレームの非整数値を表すバイト数を読み込む要求は実行できず、IllegalArgumentExceptionがスローされる場合があります。

      パラメータ:
      b - このメソッドが返るときの、要求された入力データを含むバイト配列
      off - 配列の先頭からの座標、バイト単位
      len - 読込み要求されたバイト数
      戻り値:
      実際に読み込まれるバイト数
      スロー:
      IllegalArgumentException - 要求されたバイト数がサンプル・フレームの整数値を表さない場合、またはlenが負の値の場合
      ArrayIndexOutOfBoundsException - offが負の値の場合、またはoff+lenが配列bの長さより大きい場合
      関連項目: