Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы. Мобильные устройства.doc
Скачиваний:
2
Добавлен:
01.05.2019
Размер:
1.8 Mб
Скачать

Использование mmapi

Ниже будет приведен код, показывающий использование MMAPI. Мы будем рассматривать стандартный пример, входящий в WTK: /wtk20/apps/mmademo.

Последовательности нот

Метод Manager.playTone() используется для генерации тонального звука. Вы должны передать ему требуемую ноту, ее длительность и громкость:

..

try {

// Играть ноту C4 ("До") 4000 миллисекунд с громкостью 100 единиц (диапазон громкости от 0 до 100).

Manager.playTone()(ToneControl.C4, 4000, 100);

}

catch(MediaException me) {

}

...

Кроме того, Вы можете создать плеер для синхронизации с последовательностью нот.

...

Player player =

Manager.createPlayer(Manager.TONE_DEVICE_LOCATOR);

player.realize();

ToneControl tc1=(ToneControl)player.getContril("ToneControl");

//Подключаем последовательность нот, указанных в массиве Nots

tc1.setSequence(Nots);

player.start();

...

Последовательность нот должна быть задана в следующем виде:

byte[] Nots={

ToneControl.VERSION, 1, //версия используемого атрибута

ToneControl.TEMPO, speed, //темп мелодии. Переменная speed = 5-127

ToneControl.BLOCK_START, 0, //начало блока 0

ToneControl.С4, 4 //Нота До продолжительностью 4 (можно от 2 до 16)

ToneControl.SILENCE, 4 //Пауза продолжительностью 4

ToneControl.С4+1, 4 //Нота До# продолжительностью 4

ToneControl.SILENCE, 4 //Пауза продолжительностью 4

ToneControl.С4+2, 4 //Нота Ре продолжительностью 4

ToneControl.SILENCE, 4 //Пауза продолжительностью 4

...

...

ToneControl.С4+12, 4 //Нота До следующей октавы

ToneControl.BLOCK_END, 0, //конец блока 0

ToneControl.PLAY_BLOCK, 0} //воспроизведение блока 0

Этот тип плеера создает ToneControl, который можно использовать для программирования последовательности нот. Эта возможность доступна только на мощных устройствах.

Проигрывание мультимедийных файлов

Приведенный ниже пример показывает, как воспроизвести простой mp3 файл без использования контроля.

...

try {

Player p = Manager.createPlayer

("http://server/somemusic.mp3");

p.setLoopCount(5);

p.start();

}

catch(IOException ioe) {

}

catch(MediaException e) {

}

...

Аналогичным способом можно воспроизводить wav и midi файлы.

В приведенном ниже коде добавлена возможность управления:

...

Player p;

VolumeControl vc;

try {

p = Manager.createPlayer("http://server/somemusic.mp3");

p.realize();

// получаем доступ к управлению громкостью и устанавливаем ее на полную мощность.

vc = (VolumeControl) p.getControl("VolumeControl");

if(vc != null) {

vc.setVolume(100);

}

// плеер запускается с минимальным временем ожидания

p.prefetch();

// неблокируемый запуск

p.start();

}

catch(IOException ioe) {

}

catch(MediaException e) {

}

...

Поскольку Manager.createPlayer() можно передавать любой InputStream, ваше приложение может проигрывать информацию, сохраненную в MIDP Record Management System (RMS), или находящуюся внутри JAR архива. В приведенном ниже примере показано, как получить InputStream из RMS и воспроизвести эту информацию.

...

RecordStore store;

int id;

// воспроизведение из RMS

try {

InputStream is = new ByteArrayInputStream(store.getRecord(id));

Player player = Manager.createPlayer(is, "audio/X-wav");

p.start();

}

catch (IOException ioe) {

}

catch (MediaException me) {

}

...

Обратите внимание на строчку Player player = Manager.createPlayer(is, "audio/X-wav"). Если Вы хотите проигрывать midi файл, необходимо указать другой MIME тип: "audio/midi".

Ниже приведен пример, проигрывающий wav файл, входящий в состав JAR архива.

...

try {

InputStream is = getClass().getResourceAsStream("audio.wav");

Player player = Manager.createPlayer(is, "audio/X-wav");

p.start();

}

catch(IOException ioe) {

}

catch(MediaException me) {

}

...