Иллюстрированный самоучитель по программированию мобильных телефонов

Воспроизведение тональных звуков

Листинг 9.2. Класс TonMIDlet воспроизводит тональные звуки.

import javax.microedition.Icdui.*;
import javax.microedition.midlet.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;
import java.io.*;
public class TonMIDlet
extends MIDlet implements CommandListener
// команда выхода
private Command
exitMidlet = new Command("Выход",Command.EXIT, 0);
// команда воспроизведения
private Command pi = new
Command("Играть", Command.OK, 1);
// объект mydisplay представляет экран телефона
private Display mydisplay;
public TonMIDlet()
{
mydisplay = Display.getDisplay(this);
}
public void startApp()
Form Is = new Form("Тональные звуки");
// добавляем команду выхода
ls.addCommand(exitMidlet);
// добавляем команду воспроизведения
ls.addCoiranand(pl);
ls.setCommandListener(this);
// отражаем текущий дисплей
my.display .setCurrent (Is);
}
private void TonPlay() {
// нота До
byte Do = ToneControl.C4;,
// нота Ре
byte Re = (byte)(ToneControl.C4 + 1);
// нота Ми
byte Mi = (byte)(ToneControl.C4 + 2);
// нота Фа
byte Fa = (byte)(ToneControl.C4 + 3);
// нота Соль
byte So = (byte)(ToneControl.C4 + 4);
// нота Ля
byte Lj = (byte)(ToneControl.C4 + 5);
// нота Си
byte Si = (byte)(ToneControl.C4 + 6);
// пауза
byte stop = ToneControl.SILENCE;
// скорость воспроизведения тональных звуков
byte speed = 30;
// продолжительность воспроизведения ноты
byte pr = 4;
// секвенсор
byte[] Nota = {
// атрибут, задающий номер версии
ToneControl.VERSION, 1,
// скорость воспроизведения
ToneControl.TEMPO, speed,
// начало блока
ToneControl.BLOCK_START, 0,
// последовательность нот для воспроизведения
Do,pr,stop,pr,Re,pr,stop,pr,Mi,pr,stop,pr,
Fa,pr,stop,pr,So,pr,stop,pr,Lj,pr,stop,pr,Si,pr,
// конец блока
ToneControl.BLOCK_END, 0,
// воспроизведение блока
ToneControl.PLAY_BLOCK, 0,
};
// воспроизводим тональные звуки из секвенсора
try{
Player player =
Manager.createPlayer(Manager.TONE_DEVICE_LOCATOR);
player.realize();
ToneControl toncontrl =
(ToneControl)player.getControl("ToneControl");
toncontrl.setSequence(Nota);
player.start();
}
catch (IOException zxz){}
catch (MediaException zmz){}
}
public void pauseApp() {}
public void destroyApp(boolean unconditional){}
public void commandAction(Command c, Displayable d)
{
if (c = = exitMidlet)
{
destroyApp(false);
notifyDestroyed();
}
if (c == pi)
{
TonPlay();
}
}
}

В основе программы из листинга 9.2 лежит модель, используемая в предыдущем разделе при воспроизведении wav-файла. В классе TonMIDlet создается пустая форма классом Form и назначаются две команды: выход из программы и воспроизведение тональных звуков. При нажатии на кнопку Играть, задействуется метод TonPlay (), где создаются ноты, секвенсор, после чего происходит воспроизведение последовательности нот.

Заключение

В книге вы изучили практически все компоненты платформы Java 2 Micro Edition, за исключением ряда специфических свойств, ознакомиться с которыми можно с помощью справочника, находящегося в приложении 2 этой книги.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.