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

Воспроизведение wav-файлов

Воспроизведение wav-файлов в телефоне задача не сложная. Wav-файл должен быть размещен в каталоге создаваемого приложения. Если вы используете J2ME Wireless Toolkit 2.1, то расположите wav-файл в папке res. Впоследствии, после компиляции и установки программы, wav-файл будет находиться в JAR – архиве, и доступен для воспроизведения.

Для того чтобы воспроизвести необходимый wav-файл создается объект класса Inputstream для связывания потока данных с ресурсом, а именно wav-файлом,например:

Inputstream input =
getClassf).getResourceAsStream("<strong>файл</strong>.wav");

Затем создается проигрыватель:

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

Проигрыватель формируется с помощью метода createPlayer () класса Manager. Количество создаваемых проигрывателей регламентируется только системными ресурсами телефона. После чего используется метод start () для воспроизведения wav-файла.

В листинге 9.1 вы найдете пример исходного кода, в котором происходит загрузка и воспроизведение wav-файла из JAR-архива. В примере используется класс Form, с помощью которого создается пустой экран, и добавляются две команды: выход из приложения и воспроизведение wav-файла. Основные действия разворачиваются в методе WavPlay (), где создается проигрыватель и воспроизводится wav-файл. Обратите также внимание на подключаемые пакеты.

Листинг 9.1. Класс WavMIDlet воспроизводит wav-файл.

import javax.microedition.Icdui.*;
import javax.microedition.midlet.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;
import java.io.*;
public class WavMIDlet
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 WavMIDlet()
{
mydisplay = Display.getDisplay(this);
}
public void startApp()
{
Form Is = new Form("Воспроизведение wav");
// добавляем команду выхода
ls.addCommand(exitMidlet);
// добавляем команду воспроизведения
ls.addCommand(pl);
ls.setCommandListener(this);
// отражаем текущий дисплей
mydisplay.setCurrent(Is);
}
private void WawPlay()
{
try {
// ищем ресурс с именем melod.wav
InputStream
input =getClass().getResourceAsStream("melod.wav");
// создаем проигрыватель
Player player = Manager.createPlayer(input,
"audio/X-wav");
// воспроизводим player.start();
}
catch (lOException 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) {
WawPlay();
}
}
}
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.