インタフェースTargetDataLine
- すべてのスーパー・インタフェース:
AutoCloseable, DataLine, Line
DataLineのタイプです。 もっとも一般的な例は、データをオーディオ・キャプチャ・デバイスから取得するデータ・ラインです。 デバイスはターゲット・データ・ラインに書き込むミキサーとして実装されます。
このインタフェースの命名規則は、ラインとミキサーの関係を反映しています。 アプリケーションから見ると、ターゲット・データ・ラインはオーディオ・データのソースの役割をします。
ターゲット・データ行は、適切なDataLine.InfoオブジェクトでMixerのgetLineメソッドを呼び出すことで、ミキサーから取得できます。
TargetDataLineインタフェースは、ターゲット・データ行のバッファから取得されたデータを読み取るためのメソッドを提供します。 オーディオを記録するアプリケーションは、バッファがオーバーフローしないように十分な速さでターゲットのデータ行からデータを読み取る必要があります。これにより、クリックとして認識されるキャプチャされたデータの不連続が発生する可能性があります。 アプリケーションは、DataLineインタフェースで定義されたavailableメソッドを使用して、データ行のバッファに現在キューに入れられているデータの量を判別できます。 バッファがオーバーフローを起こした場合、キューに入っているもっとも古いデータが破棄されて新しいデータに置き換えられます。
- 導入されたバージョン:
- 1.3
- 関連項目:
-
ネストされたクラスのサマリー
インタフェースで宣言されたネストされたクラス/インタフェース DataLine
DataLine.Info修飾子と型インタフェース説明static classスーパー・クラスから継承されたクラス情報以外に、DataLine.Infoはデータ・ラインに固有の追加情報を提供します。 -
メソッドのサマリー
修飾子と型メソッド説明voidopen(AudioFormat format) 指定されたフォーマットでラインを開き、ラインが必要なシステム・リソースを獲得して操作可能になるようにします。voidopen(AudioFormat format, int bufferSize) 指定されたフォーマットと指定されたバッファ・サイズでラインを開き、ラインが必要なシステム・リソースを獲得して操作可能になるようにします。intread(byte[] b, int off, int len) データ・ラインの入力バッファからオーディオ・データを読み込みます。インタフェースで宣言されたメソッド DataLine
available, drain, flush, getBufferSize, getFormat, getFramePosition, getLevel, getLongFramePosition, getMicrosecondPosition, isActive, isRunning, start, stop修飾子と型メソッド説明intアプリケーションがデータ・ラインの内部バッファ内で現在処理できるデータのバイト数を取得します。voiddrain()データの入出力をデータ・ラインの内部バッファが空になるまで継続して、そのラインからキューに入っているデータを排出します。voidflush()ラインからキューに入っているデータをフラッシュします。intデータ・ラインの内部バッファ内に収まるデータの最大バイト数を取得します。データ・ラインのオーディオ・データの現在の形式(エンコーディング、サンプル・レート、チャネル数など)を取得します。intオーディオ・データの現在の位置をサンプル・フレーム数で取得します。floatgetLevel()ラインの現在のボリューム・レベルを取得します。longオーディオ・データの現在の位置をサンプル・フレーム数で取得します。longオーディオ・データ内の現在の位置をマイクロ秒単位で取得します。booleanisActive()ラインがアクティブな入出力(再生や取り込みなど)を実行しているかどうかを示します。booleanラインが実行中かどうかを示します。voidstart()ラインでのデータ入出力を可能にします。voidstop()ラインを停止します。インタフェースLineで宣言されたメソッド
addLineListener, close, getControl, getControls, getLineInfo, isControlSupported, isOpen, open, removeLineListener修飾子と型メソッド説明voidaddLineListener(LineListener listener) リスナーをこのラインに追加します。voidclose()ラインを閉じ、ラインで使用していたシステム・リソースを解放できることを示します。getControl(Control.Type control) 指定されたタイプのコントロールがある場合、そのコントロールを取得します。Control[]このラインに関連付けられたコントロールのセットを取得します。このラインを説明するLine.Infoオブジェクトを取得します。booleanisControlSupported(Control.Type control) 指定されたタイプのコントロールをラインがサポートしているかどうかを示します。booleanisOpen()ラインが開いているかどうか、つまり現在はサウンドを再生または収集していなくてもシステム・リソースを確保し操作可能であるかどうかを示します。voidopen()ラインを開き、必要なシステム・リソースを獲得して操作可能になっていることを示します。voidremoveLineListener(LineListener listener) このラインのリスナーのリストから、指定されたリスナーを削除します。
-
メソッドの詳細
-
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の長さより大きい場合- 関連項目:
-