Пакет javax.microedition.media
Пакет javax.microedition.media необходим для работы со звуком и содержит четыре основных интерфейса и один класс, на базе которых и происходит воспроизведение звуков в телефоне.
Интерфейс Control
Интерфейс Control – это самый главный интерфейс, с его помощью осуществляется контроль над всеми имеющимися ресурсами, также от этого интерфейса наследуются еще два интерфейса ToneControl и VolumeControl.
Интерфейс Controllable
С помощью интерфейса Controllable можно получить управление над воспроизведением, посредством использования двух методов:
- Control getControl (String controlType) – определяет тип управления;
- Control [ ] getControls () – получает управление.
Интерфейс Player
Интерфейс Player наследуется от интерфейса Controllable и необходим для реализации процесса воспроизведения звуковых данных на основе формирования проигрывателей. Проигрыватели создаются методом createPlayer() класса Manager, например:
Player player 1 = Manager.createPlayer();
После создания проигрывателя можно производить воспроизведения звука, для этого необходимо воспользоваться методами интерфейса Player.
Методы интерфейса Player:
- void addPlayerListener(PlayerListener playerListener) – осуществляет обработку событий от определенного проигрывателя;
- void close () – закрывает проигрыватель;
- void deallocate () – освобождает ресурс, занятый проигрывателем;
- String getContentType () – получает тип звуковых данных воспроизводимых проигрывателем;
- long getDuration () – получает размер звукового файла;
- long getMediaTime () – получает время воспроизведения звуковых данных;
- int getState () – определяет состояние проигрывателя;
- void removePlayerListener(PlayerListener playerListener) – удаляет установленный обработчик событий;
- void setLoopCount (int count) – устанавливает цикличное воспроизведение звуковых данных;
- long setMediaTime(long now) – устанавливает время воспроизведения;
- void start () – дает команду на воспроизведение;
- void stop () – останавливает воспроизведение.
Большинство методов направленно на работу со звуковыми данными, позже в разделе 9.3 мы разберем подробнее работу с методами интерфейса Player.
Интерфейс PlayerListener
Интерфейс PlayerListener позволяет осуществлять обработку событий полученных от проигрывателя. Помните в главе 5 мы разбирали работу интерфейса CommandListener? Интерфейс PlayerListener функционирует почти по такой же схеме, но ориентирован на работу с проигрывателем. В составе интерфейса PlayerListener.имеется всего один метод:
- void playerUpdate (Player player, String event, Object eventData) – обновляет состояние проигрывателя.
С помощью констант интерфейса Player в методе playerUpdate(), нужно задавать тип необходимых событий в параметрах eventData и event:
- static String CLOSED – уведомляет о закрытии проигрывателя;
- static String DEVICE_AVAILABLE – уведомляет о доступности проигрывателя;
- static String DEVICE_UNAVAILABLE – уведомляет о недоступности проигрывателя;
- static String DURATIONJJPDATED – обновляет состояние;
- static String END_OF_MEDIA – уведомляет о конце воспроизведения данных проигрывателем;
- static String ERROR – уведомляет об ошибке;
- static String STARTED – уведомляет о начале работы проигрывателя;
- static String STOPPED – уведомляет о конце работы проигрывателя;
- static String VOLUME_CHANGED – уведомляет о выборе громкости для воспроизведения.
Класс Manager
Класс Manager создает проигрыватель для воспроизведения звуков, а также отслеживает доступные протоколы звуковых данных, с помощью нескольких методов.
- static Player createPlayer(InputStream stream, String type) – создает проигрыватель для воспроизведения звуковых данных из потока;
- static Player createPlayer(String locator) – создает проигрыватель для воспроизведения звуковых данных из определенного файла;
- static String[ ] getSupportedProtocols(String content_type) – возвращает список доступных протоколов для мобильного устройства;
- static void playTone(int note, int duration, int volume) – воспроизводит различные тональные звуки.