Díl šestý - ovládáme zvuky

V tomto fóru se budeme zabívat tvorbou pluginů pro QIP Infium.
Ukážeme si jak využívat všech možností SDK.
Celý seriál bude doplněn o příklady.
Předpokladem pro dokončení seriálu je instalace DELPHI.
Další podmínkou je alespoň základní znalost programování a používání tohoto vývojového prostředí.

Moderátor: sutrus

Zamčeno
Uživatelský avatar
sutrus
Administrátor
Administrátor
Příspěvky: 272
Registrován: 04 úno 2006 18:36
Bydliště: Jihlava
Kontaktovat uživatele:

Díl šestý - ovládáme zvuky

#1

Příspěvek od sutrus »

Po delším čase přicházím s dalším dílem do našeho seriálu. Dnes se budeme věnovat ovládání a přehrávání zvuků.
QIP Infium nám umožnuje jak přehrávání vlastních zvuků tak zvuků externích ve formátu wav.

Pokud tedy chceme přehrát zvuk pošleme zprávu PM_PLUGIN_PLAY_WAV_SND
Parametrem WParam ve zprávě určujeme jaký zvuk se bude přehrávat.

Kód: Vybrat vše

Vlastní externí zvuk      = 0;
QIP_SND_ID_STARTUP        = 1;
QIP_SND_ID_INC_MSG        = 2;
QIP_SND_ID_MSG_SENT       = 3;
QIP_SND_ID_ONLINE_ALERT   = 4;
QIP_SND_ID_STATUS_NOTIFY  = 5;
QIP_SND_ID_TRAY_NOTIFY    = 6;
QIP_SND_ID_AUTH_REQUEST   = 7;
QIP_SND_ID_AUTH_DENIED    = 8;
QIP_SND_ID_AUTH_GRANTED   = 9;
QIP_SND_ID_ADDED          = 10;
QIP_SND_ID_INC_FILE       = 11;
QIP_SND_ID_FT_COMPLETE    = 12;
QIP_SND_ID_SERVER_MSG     = 13;
QIP_SND_ID_EMAIL_MSG      = 14;
Parametrem LParam předáme cestu k externímu wav souboru
Parametrem NParam předáme informaci jesli chceme přehrát zvuk vždy nebo podle nastavení Infia.
True - přehraje zvuk vždy
False - pokud to QIP Infium umožní. Zvuky mohou být uživatelem vypnuté

Celá zpráva pak bude vypadat takto:
Přehrání vlastního externího zvuku

Kód: Vybrat vše

  PlugMsg1.Msg := PM_PLUGIN_PLAY_WAV_SND;

  //Nastavíme 0 protoze budeme prehravat vlastni zvuk
  PlugMsg1.WParam := 0;

  //Zadame cestu k nasemu souboru 
  wPath := IncludeTrailingPathDelimiter(ExtractFilePath(FDllPath)) + 'example.wav';

  //Cestu predame do parametru zpravy
  PlugMsg1.LParam := LongInt(PWideChar(wPath));

  //Zvuk budeme prehravat vzdy i pokud v Infiu zvuk vypnuty
  PlugMsg1.NParam := Byte(True);

  //Odesleme zpravu
  PlugMsg1.DllHandle := FDllHandle;
  FPluginSvc.OnPluginMessage(PlugMsg1);
Přehrání interních zvuků

Kód: Vybrat vše

  PlugMsg1.Msg := PM_PLUGIN_PLAY_WAV_SND;

  //Nastavíme ID interniho zvuku který chceme prehrat
  PlugMsg1.WParam := QIP_SND_ID_INC_MSG;

  //Prevezmeme nastaveni zvuku 
  PlugMsg1.NParam := Byte(False);

  //Odesleme zpravu
  PlugMsg1.DllHandle := FDllHandle;
  FPluginSvc.OnPluginMessage(PlugMsg1);
Další zprávou kterou můžeme poslat je zjištění stavu. Tedy jestli jsou zvuky zapnuty nebo vypnuty.
Do kódu je také přidán příklad programového vypnutí nebo zapnutí zvuků.

Kód: Vybrat vše

  {Zjisteni zapnuti/vypnuti zvuku}
  PlugMsg.Msg := PM_PLUGIN_SOUND_GET;
  PlugMsg.DllHandle := FPluginInfo.DllHandle;

  FPluginSvc.OnPluginMessage(PlugMsg);

  {Vyhodnoceni stavu - pokud jsou zvuky zapnuty provedeme vypnutí  }
  if Boolean(PlugMsg.WParam) then
  begin
    PlugMsg.Msg       := PM_PLUGIN_SOUND_SET;
    PlugMsg.WParam    := Integer(False); // False - vypne zvuky, True - zapne zvuky
    PlugMsg.DllHandle := FPluginInfo.DllHandle;

    FPluginSvc.OnPluginMessage(PlugMsg);
  end;
Poslední možností kterou můžeme v pluginu využít je reakce na změnu zvuku uživatelem.
Tuto zprávu nám Infium pošle a můžete ji zachytit v proceduře TQipPlugin.OnQipMessage

Kód: Vybrat vše

PM_PLUGIN_SOUND_CHANGED   : QipSoundChanged(PlugMsg);
Příklad těla procedury která vyhodnotí příchozí zprávu s výsledkem nastavení zvuků:

Kód: Vybrat vše

procedure TQipPlugin.QipSoundChanged(PlugMsg: TPluginMessage);
var str : string;
begin
  if Boolean(PlugMsg.WParam) then str := 'Zvuky zapnuty' else str := 'Zvuky vypnuty';
end;
Takto můžeme tedy ovládat a přehrávat zvuky. Dnešní díl budete programovat sami a bude bez příkladu ke stažení. V příštím dílu vše napravím a kód doplní.
Také se budeme věnovat zjištení informací o otevřeném kontaktu. Budeme tedy načítat detaily kontaktu.
Zdeněk Kameník - SPSSoftware
Hardware je vše co se nedá ukrást po síťi. Čím rychlejší počítač je, tím rychleji se rozbije.
Počítač vám ušetří spoustu práce, kterou byste bez něj vůbec neměli.
Zamčeno

Zpět na „Seriál - vytváříme vlastní plugin“