ToneGeneratorでトーンを鳴らす
|ToneGeneratorクラスを使うと様々なトーンを鳴らせることができます。
トーン信号で動作する機器をAndroidアプリから制御したいような場合に利用することが可能です。
詳細は続きからどうぞ。
コンストラクタ
ToneGeneratorクラスのコンストラクタは以下のような定義になっています。
public ToneGenerator (int streamType, int volume)
- streamType:ストリームタイプを指定します。
- volume:トーンのボリュームを最大ボリュームに対するパーセンテージ(0-100)で指定します。
なお、最大ボリュームと最小ボリュームには以下の定数を使うことができます。
- MAX_VOLUME:最大ボリューム
- MIN_VOLUME:最小ボリューム
各種メソッド
ToneGeneratorクラスのメソッドには以下のようなものがあります。
public boolean startTone (int toneType) public boolean startTone (int toneType, int durationMs)
指定した種類のトーンの再生を開始します。
- toneType:トーンの種類を指定します。
- durationMs:トーンの再生時間を指定します。
public void stopTone ()
トーンの再生を停止します。
public void release ()
ToneGeneratorのオブジェクトを解放します。
トーンの種類
指定できるトーンの種類ですが非常に多くのトーンを再生することができます。
今回全ての種類のトーンをご紹介することはできませんが、たとえば日本のプッシュ式電話回線での送出信号に用いられているトーンの場合ですと以下のようなものがあります。
TONE_DTMF_0 | DTMFトーンのキー0: 1336Hz, 941Hzの合成音, 継続音 |
TONE_DTMF_1 | DTMFトーンのキー1: 1209Hz, 697Hzの合成音, 継続音 |
TONE_DTMF_2 | DTMFトーンのキー2: 1336Hz, 697Hzの合成音, 継続音 |
TONE_DTMF_3 | DTMFトーンのキー3: 1477Hz, 697Hzの合成音, 継続音 |
TONE_DTMF_4 | DTMFトーンのキー4: 1209Hz, 770Hzの合成音, 継続音 |
TONE_DTMF_5 | DTMFトーンのキー5: 1336Hz, 770Hzの合成音, 継続音 |
TONE_DTMF_6 | DTMFトーンのキー6: 1477Hz, 770Hzの合成音, 継続音 |
TONE_DTMF_7 | DTMFトーンのキー7: 1209Hz, 852Hzの合成音, 継続音 |
TONE_DTMF_8 | DTMFトーンのキー8: 1336Hz, 852Hzの合成音, 継続音 |
TONE_DTMF_9 | DTMFトーンのキー9: 1477Hz, 852Hzの合成音, 継続音 |
TONE_DTMF_A | DTMFトーンのキーA: 1633Hz, 697Hzの合成音, 継続音 |
TONE_DTMF_B | DTMFトーンのキーB: 1633Hz, 770Hzの合成音, 継続音 |
TONE_DTMF_C | DTMFトーンのキーC: 1633Hz, 852Hzの合成音, 継続音 |
TONE_DTMF_D | DTMFトーンのキーD: 1633Hz, 941Hzの合成音, 継続音 |
TONE_DTMF_P | DTMFトーンのキーP: 1477Hz, 941Hzの合成音, 継続音 |
TONE_DTMF_S | DTMFトーンのキーS: 1209Hz, 941Hzの合成音, 継続音 |
上記のトーンは一度再生を始めると停止するまで鳴り続けてしまう種類になりますが、他の種類のトーンでは一定時間だけ再生するというようなものもあります。
他の種類のトーンに関してはAndroid Developersをご覧下さい。
サンプルプログラム
サンプルプログラムでは再生ボタンを押すとTONE_DTMF_0を5秒間だけ再生します。
また、トーンが再生中に停止ボタンを押すとトーンが停止します。
// ToneGeneratorインスタンス作成 ToneGenerator tg; // ToneGenerator初期化 tg = new ToneGenerator(android.media.AudioManager.STREAM_DTMF, ToneGenerator.MAX_VOLUME); // 再正開始ボタン Button startButton = (Button) findViewById(R.id.startButton); startButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TONE_DTMF_0を5秒間再生。 tg.startTone(ToneGenerator.TONE_DTMF_0, 5000); } }); // 再正停止ボタン Button stopButton = (Button) findViewById(R.id.stopButton); stopButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 再生停止 tg.stopTone(); } });