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
イベントが生成されます。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, 2013, Oracle and/or its affiliates. All rights reserved.