public interface DataLine extends Line
DataLine
は、メディア関連の機能をそのスーパー・インタフェース、Line
に追加します。 この機能には、ラインを介して渡されるオーディオ・データを開始、停止、排出、およびフラッシュする転送制御メソッドが含まれます。 データ・ラインは現在の位置、ボリューム、メディアのオーディオ形式についてもレポートできます。 データ・ラインは、アプリケーション・プログラムでのデータの書込みを可能にするサブインタフェース、SourceDataLine
またはClip
によって、オーディオの出力に使用されます。 同様に、オーディオ入力は、データの読取りを可能にするサブインタフェース、TargetDataLine
で処理されます。
データ・ラインには、受信または送信オーディオ・データをキューに入れる内部バッファがあります。 通常はキューに入れられたデータはすべて処理されるため、
メソッドはこの内部バッファが空になるまでブロックされます。 drain()
メソッドは、内部バッファからキューに入れられた使用可能なデータをすべて破棄します。
flush()
データ・ラインは、データのアクティブな表示や取込みが開始または停止されると、常に
およびSTART
イベントを生成します。 これらのイベントは、特定の要求に応答して、または直接変更された状態が少ない場合に生成されます。 たとえば、STOP
がアクティブでないデータ・ラインで呼び出され、データの取り込みまたは再生が可能な場合は、実際にデータの再生や取込みが開始されるとstart()
START
イベントがただちに生成されます。 あるいは、アクティブなデータ・ラインに対するデータのフローを収縮した結果、データの表示にギャップが生じると、STOP
イベントが生成されます。
ミキサーは、複数のデータ・ラインの同期制御をサポートする場合がよくあります。 同期化は、ミキサー・インタフェースの
メソッドを介して確立できます。 詳細は、synchronize
インタフェースの説明を参照してください。 Mixer
LineEvent
修飾子と型 | インタフェース | 説明 |
---|---|---|
static class |
DataLine.Info |
スーパー・クラスから継承されたクラス情報以外に、
DataLine.Info はデータ・ラインに固有の追加情報を提供します。 |
修飾子と型 | メソッド | 説明 |
---|---|---|
int |
available() |
アプリケーションがデータ・ラインの内部バッファ内で現在処理できるデータのバイト数を取得します。
|
void |
drain() |
データの入出力をデータ・ラインの内部バッファが空になるまで継続して、そのラインからキューに入っているデータを排出します。
|
void |
flush() |
ラインからキューに入っているデータをフラッシュします。
|
int |
getBufferSize() |
データ・ラインの内部バッファ内に収まるデータの最大バイト数を取得します。
|
AudioFormat |
getFormat() |
データ・ラインのオーディオ・データの現在の形式(エンコーディング、サンプル・レート、チャネル数など)を取得します。
|
int |
getFramePosition() |
オーディオ・データの現在の位置をサンプル・フレーム数で取得します。
|
float |
getLevel() |
ラインの現在のボリューム・レベルを取得します。
|
long |
getLongFramePosition() |
オーディオ・データの現在の位置をサンプル・フレーム数で取得します。
|
long |
getMicrosecondPosition() |
オーディオ・データ内の現在の位置をマイクロ秒単位で取得します。
|
boolean |
isActive() |
ラインがアクティブな入出力(再生や取り込みなど)を実行しているかどうかを示します。
|
boolean |
isRunning() |
ラインが実行中かどうかを示します。
|
void |
start() |
ラインでのデータ入出力を可能にします。
|
void |
stop() |
ラインを停止します。
|
addLineListener, close, getControl, getControls, getLineInfo, isControlSupported, isOpen, open, removeLineListener
void drain()
drain()
を呼び出すと、ラインが実行されてデータ・キューが空になるまでこのメソッドはブロックされます。 drain()
を1つのスレッドで呼び出し、別のスレッドでデータ・キューの格納を継続すると、操作は完了しません。 このメソッドはデータ・ラインが閉じると常に戻ります。 flush()
void flush()
void start()
START
イベントが生成されます。 stop()
、isRunning()
、LineEvent
void stop()
flush
メソッドを呼び出して、保持されているデータを破棄できます。 オーディオの取り込みまたは再生が停止すると、STOP
イベントが生成されます。 start()
、isRunning()
、flush()
、LineEvent
boolean isRunning()
false
です。 開かれたラインは、start
メソッドの呼出しに応じて最初のデータが提示されると実行が開始され、stop
メソッドの呼出しに応じて、あるいは再生が完了して、提示されなくなるまで継続して実行されます。 boolean isActive()
START
イベントをそのリスナーに送信します。 同様に、アクティブなラインがアクティブでなくなると、ラインはSTOP
イベントを送信します。 true
、そうでない場合はfalse
Line.isOpen()
、Line.addLineListener(javax.sound.sampled.LineListener)
、Line.removeLineListener(javax.sound.sampled.LineListener)
、LineEvent
、LineListener
AudioFormat getFormat()
現在開いておらず、これまでも開いたことがないラインは、デフォルトの形式を返します。 デフォルトの形式は、実装固有のオーディオ形式になります。または、DataLine.Info
オブジェクト(このDataLine
の取得に使用)が1つ以上の完全指定オーディオ形式を指定する場合、最後のものがデフォルトの形式になります。 特定のオーディオ形式(SourceDataLine.open(AudioFormat)
など)でラインを開くと、デフォルトの形式はオーバーライドされます。
AudioFormat
int getBufferSize()
int available()
使用される単位はバイトですが、オーディオ・データのサンプル・フレームの整数値に常に一致します。
アプリケーションでは、available()
から返されたバイト数までの読み込みまたは書込み操作はブロックされません。ただし、そのバイト数より多くのデータの読み込みまたは書込み操作を実行するとブロックされるかどうかは確実ではありません。
int getFramePosition()
getLongFramePosition
を使用することをお薦めします。 getLongFramePosition()
long getLongFramePosition()
long getMicrosecondPosition()
float getLevel()
AudioSystem.NOT_SPECIFIED
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。