Вторник, 2019-06-25, 2:48 PM
Главная страница | Регистрация | Вход Приветствую Вас заблудившийся пакет | RSS
Меню сайта

Категории каталога
Программирование [58]
.. все с этим делом связаное..
Нейронные сети [4]
Нейронные сети, использование алгоритмы роботы
HACK [5]
Здесь материалы находятся лишь для ознакомления и НЕ БОЛЬШЕ!!!! Автор не несет отвественности за использование материалов даной категории
OC [6]
Unix, FreeBSD, Windows, Linux Описание, совети, секреты, настройки
WEB [25]
web-programming и все с этим связаное
Сети [2]
Описание сетей, сетевых технологий, настройки и некоторые секреты
Мабила [9]
Описание мобильных технологий, программинг под мабилу, и просто интересные моменты
Разное [10]
то что не вошло в другие категории.. прикольные истории про программеров и деятелей информационной индустрии
История [6]
История этого компьтерного мира и некоторых ее учасников
FREE [3]
free on the web..

Наш опрос
Какие категории сайта вам самые интересные?

Результаты · Архив опросов

Всего ответов: 138

Начало » Статьи » Мабила

Проигрывание WAV-файлов в Symbian

Проигрывание WAV-файлов в Symbian



Проигрывание WAV-файла более просто, чем это может показаться на первый взгляд, так как ОС делает большинство работы. В этом проекте класс CSoundPlayer осуществляет все необходимое для этого:




#include <MdaAudioSamplePlayer.h>

class CSoundPlayer: public CBase, public MMdaAudioPlayerCallback
{
public:
   static CSoundPlayer* NewL(const TDesC& aFile);
   static CSoundPlayer* NewLC(const TDesC& aFile);
   ~CSoundPlayer();
   void PlayL();
   void StopL();

   //
   // from MMdaAudioPlayerCallback
   //
   void MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& aDuration);
   void MapcPlayComplete(TInt aError);

private:
   CSoundPlayer();
   void ConstructL(const TDesC& aFile);

private:
   enum TState
   {
       ENotReady,
       EReady,
       EPlaying
   };

   TState iState;
   CMdaAudioPlayerUtility* iMdaPlayer;
};


Ключевые классы:
  CMdaAudioPlayerUtility который осуществляет декодер. Класс CSoundPlayer имеет частный член, называемый iMdaPlayer.
  MMdaAudioPlayerCallback который является своего рода обозревателем в iMdaPlayer. В основном этот смешанный класс требует выполнения  MapcInitComplete() и MapcPlayComplete()которые будут описаны ниже.


Инициализация проигрывателя


Проигрыватель инициализируется вызовом CSoundPlayer::NewL() или CSoundPlayer::NewLC().Конструктор второй стадии объекта CSoundPlayer инициализирует объект iMdaPlayer, использующий CMdaAudioPlayerUtility::NewFilePlayerL():




void CSoundPlayer::ConstructL(const TDesC& aFile)
{
 //
 // Create a file audio player utility instance
 //
 iMdaPlayer=CMdaAudioPlayerUtility::NewFilePlayerL(aFile,*this);
}


Второй тип конструктора, CMdaAudioPlayerUtility::NewDesPlayerL() доступен если Ваш WAV-сэмпл уже загружен в  RAM.


Но проигрыватель пока не готов. Фактически, если вы попробуете вызвать iMdaPlayer->PlayL() сразу после вызова NewFilePlayerL() , вы, вероятно ничего не услышите: вы должны дождаться, пока образец будет готов к проигрыванию Это будет сообщено к Вам, когда метод повторного вызова MapcInitComplete () вызовет структура. Два типичных примера выполнения этой функции показаны ниже:




//
// Implementation 1: set a iState flag to ready
// to reflect the fact that the player is ready
//
void CSoundPlayer::MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& /*aDuration*/)
{
   iState = aError ? ENotReady : EReady;
}


//
// Implementation 2: play the file immediately
//
void CSoundPlayer::MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& /*aDuration*/)
{
   if (!aError)
       iMdaPlayer->PlayL();
}


Проигрывание файла


Как только инициализация закончена, как показано выше, воспроизведение файла делает запрос к CMdaAudioPlayerUtility:: PlayL (). В проекте Sound1, это сделано  посредством вызова CSoundPlayer:: PlayL ():


 




void CSoundPlayer::Play()
{
   if(iState==EReady)
   {
       iState=EPlaying;
       iMdaPlayer->Play();
   }
}


Система уведомит Вас об окночании воспроизведения вызовом MapcPlayComplete(). Это пример выполнения для Sound1:




void CSoundPlayer::MapcPlayComplete(TInt aError)
{
   iState = aError ? ENotReady : EReady;
}


 



Чтобы выполнить этот пример, Вы должны поместить WAV-файл, названный play.wav в каталоге C:\System\Apps\Sound\ вашего устройства (C:\Symbian\6.1\Series60\Epoc32\Wins\c\system\apps\Sound для симулятора).






Источник: http://www.mobilab.ru
Категория: Мабила | Добавил: X-SAM (2006-05-15) | Автор: http://www.mobilab.ru
Просмотров: 939 | Рейтинг: 0.0

Всего комментариев: 0
Имя *:
Email *:
Код *:

Украинская Баннерная Сеть
Поиск по каталогу

Кнопки друзей

Статистика
Рейтинг сайтов Powered by MyPagerank.Net

Copyright DEBUGGER © 2007 Используются технологии uCoz