インタフェースDataLine

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

public interface DataLine extends Line
DataLineは、メディア関連機能をそのスーパー・インタフェースLineに追加します。 この機能には、ラインを介して渡されるオーディオ・データを開始、停止、排出、およびフラッシュする転送制御メソッドが含まれます。 データ・ラインは現在の位置、ボリューム、メディアのオーディオ形式についてもレポートできます。 データ行は、アプリケーション・プログラムがデータを書き込むことができるサブインタフェースSourceDataLineまたはClipを使用して、オーディオの出力に使用されます。 同様に、オーディオ入力はサブ・インタフェースTargetDataLineによって処理され、データを読み込むことができます。

データ・ラインには、受信または送信オーディオ・データをキューに入れる内部バッファがあります。 drain()メソッドは、通常、キューに入れられたすべてのデータが処理されたために、この内部バッファが空になるまでブロックします。 flush()メソッドは、使用可能なキューに入れられたデータを内部バッファから破棄します。

データ行は、アクティブなプレゼンテーションまたはデータの取得を開始または停止するたびに、STARTおよびSTOPイベントを生成します。 これらのイベントは、特定の要求に応答して、または直接変更された状態が少ない場合に生成されます。 たとえば、start()が非アクティブなデータ行でコールされ、データを取得または再生できる場合、データの再生または取得が実際に開始されるとすぐにSTARTイベントが生成されます。 あるいは、アクティブなデータ・ラインに対するデータのフローを収縮した結果、データの表示にギャップが生じると、STOPイベントが生成されます。

ミキサーは、複数のデータ・ラインの同期制御をサポートする場合がよくあります。 同期は、Mixerインタフェースのsynchronizeメソッドを使用して確立できます。 詳細は、Mixerインタフェースの説明を参照してください。

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

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

    修飾子と型
    メソッド
    説明
    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
    このラインのリスナーのリストから、指定されたリスナーを削除します。
  • メソッドの詳細

    • drain

      void drain()
      データの入出力をデータ・ラインの内部バッファが空になるまで継続して、そのラインからキューに入っているデータを排出します。 このメソッドは排出が完了するまでブロックされます。 これはブロッキング・メソッドのため、注意して使用する必要があります。 キュー内にデータがあるラインが停止している状態でdrain()を呼び出すと、ラインが実行されてデータ・キューが空になるまでこのメソッドはブロックされます。 drain()を1つのスレッドで呼び出し、別のスレッドでデータ・キューの格納を継続すると、操作は完了しません。 このメソッドはデータ・ラインが閉じると常に戻ります。
      関連項目:
    • flush

      void flush()
      ラインからキューに入っているデータをフラッシュします。 フラッシュされたデータは破棄されます。 一部のキュー・データしか破棄できない場合もあります。 たとえば、ミキサーは特定の入力ラインのバッファからデータをフラッシュできますが、出力バッファ内にある再生されていないデータ(混在の結果)は、そのまま再生されます。 再生や取込みを再開するときに「無効な」データをスキップする場合は、通常ラインを一時停止したあとこのメソッドを呼び出すことができます。 停止されていないラインをフラッシュするのは正当な方法ですが、この方法をアクティブなラインで実行すると、データ内で不連続部が発生する場合があり、音が途切れるのがわかります。
      関連項目:
    • start

      void start()
      ラインでのデータ入出力を可能にします。 このメソッドを、すでに実行しているラインで呼び出しても、何も機能しません。 バッファ内のデータがフラッシュされていない場合、ラインが停止した時点で処理されなかった最初のフレームから、ラインは入出力を再開します。 オーディオのキャプチャまたは再生が開始されると、STARTイベントが生成されます。
      関連項目:
    • stop

      void stop()
      ラインを停止します。 停止されたラインは入出力アクティビティを停止します。 ただし、ラインを開いて実行すると、アクティビティを再開するのに必要なリソースが保持されます。 停止されたラインではオーディオ・データは破棄されずにバッファ内に保持されるため、ラインを再開するとオフになっていた場所から継続できる場合があります。 この場合は当然、現在のバッファ以外に不連続部が発生する可能性があります。停止状況が非常に長く続く場合は、入力または出力のサンプルが無効になることがあります。 必要に応じてflushメソッドを呼び出して、保持されているデータを破棄できます。 オーディオのキャプチャまたは再生が停止すると、STOPイベントが生成されます。
      関連項目:
    • isRunning

      boolean isRunning()
      ラインが実行中かどうかを示します。 デフォルトは「false」です。 開かれたラインは、startメソッドの呼出しに応じて最初のデータが提示されると実行が開始され、stopメソッドの呼出しに応じて、あるいは再生が完了して、提示されなくなるまで継続して実行されます。
      戻り値:
      ラインが実行中である場合はtrue、そうでない場合はfalse
      関連項目:
    • isActive

      boolean isActive()
      ラインがアクティブな入出力(再生や取り込みなど)を実行しているかどうかを示します。 非アクティブな行がアクティブになると、STARTイベントがそのリスナーに送信されます。 同様に、アクティブな行が非アクティブになると、STOPイベントが送信されます。
      戻り値:
      ラインがサウンドの取り込みやレンダリングを実行している場合はtrue、そうでない場合はfalse
      関連項目:
    • getFormat

      AudioFormat getFormat()
      データ・ラインのオーディオ・データの現在の形式(エンコーディング、サンプル・レート、チャネル数など)を取得します。

      現在開いておらず、これまでも開いたことがないラインは、デフォルトの形式を返します。 デフォルトの形式は、実装固有のオーディオ形式になります。または、DataLine.Infoオブジェクト(このDataLineの取得に使用)が1つ以上の完全指定オーディオ形式を指定する場合、最後のものがデフォルトの形式になります。 特定のオーディオ形式(SourceDataLine.open(AudioFormat)など)でラインを開くと、デフォルトの形式はオーバーライドされます。

      戻り値:
      オーディオ・データの現在の形式
      関連項目:
    • getBufferSize

      int getBufferSize()
      データ・ラインの内部バッファ内に収まるデータの最大バイト数を取得します。 ソース・データ・ラインの場合は、データを書込みできるバッファのサイズの値になります。 ターゲット・データ・ラインの場合は、データを読取りできるバッファのサイズの値になります。 使用される単位はバイトですが、オーディオ・データのサンプル・フレームの整数値に常に一致します。
      戻り値:
      バッファのサイズ(バイト単位)
    • available

      int available()
      アプリケーションがデータ・ラインの内部バッファ内で現在処理できるデータのバイト数を取得します。 ソース・データ・ラインの場合は、ブロックされずにバッファに書き込めるデータ量がこの値になります。 ターゲット・データ・ラインの場合は、アプリケーションで読み込めるデータ量がこの値になります。 クリップの場合は、クリップを開くとオーディオ・データはバッファにロードされてクリップが閉じるまで変更されずに維持されるため、この値は常に0になります。

      使用される単位はバイトですが、オーディオ・データのサンプル・フレームの整数値に常に一致します。

      アプリケーションでは、available()から返されたバイト数までの読み込みまたは書込み操作はブロックされません。ただし、そのバイト数より多くのデータの読み込みまたは書込み操作を実行するとブロックされるかどうかは確実ではありません。

      戻り値:
      使用可能なデータ量(バイト数)
    • getFramePosition

      int getFramePosition()
      オーディオ・データの現在の位置をサンプル・フレーム数で取得します。 フレーム位置は、ラインが開かれてから取り込まれた、またはレンダリングされたサンプル・フレーム数で測定されます。 この戻り値は、2から31フレーム後でラップされます。 かわりにgetLongFramePositionを使用することをお薦めします。
      戻り値:
      ラインが開かれてからすでに処理されたフレーム数
      関連項目:
    • getLongFramePosition

      long getLongFramePosition()
      オーディオ・データの現在の位置をサンプル・フレーム数で取得します。 フレーム位置は、ラインが開かれてから取り込まれた、またはレンダリングされたサンプル・フレーム数で測定されます。
      戻り値:
      ラインが開かれてからすでに処理されたフレーム数
      導入されたバージョン:
      1.5
    • getMicrosecondPosition

      long getMicrosecondPosition()
      オーディオ・データ内の現在の位置をマイクロ秒単位で取得します。 マイクロ秒の位置は、ラインが開かれてから取り込まれた、またはレンダリングされたサンプル・フレーム数に相当する時間で測定されます。 精度のレベルは保証されません。 たとえば、実装では、現在のフレーム位置およびオーディオ・サンプル・フレーム・レートからマイクロ秒位置が計算される場合があります。 マイクロ秒単位の精度は、1サンプル・フレームあたりのマイクロ秒数に制限されます。
      戻り値:
      ラインが開かれてから処理されたデータのマイクロ秒数
    • getLevel

      float getLevel()
      ラインの現在のボリューム・レベルを取得します。 このレベルは信号の現在の振幅の尺度です。また、このレベルとゲイン・コントロールの現在の設定とを混同しないでください。 範囲は0.0 (無音)から1.0 (サウンド波形の最大振幅)までです。 単位はデシベルではなく線形振幅で測定されます。
      戻り値:
      この行のシグナルの現在の振幅、またはAudioSystem.NOT_SPECIFIED