reklama

Staňte se programátorem: Napište si vlastní GOM Player II.

Minule jste si s námi mohli naprogramovat jednoduchý multimediální přehrávač v jazyku C#, dnes jeho funkce rozšíříme o paměť a možnost vytvoření jednoduchého playlistu.

V předchozí části našeho programátorského seriálu jsme si ukázali, jak využít komponentu AxWindowsMediaPlayer, která představuje přehrávací část Windows Media Playeru. Ukázali jsme si, jak přehrávat a pozastavovat nahrávky, jak nastavovat jejich hlasitost a jak vykreslit průběh přehrávání pomocí metod třídy System.Drawing.Graphics. V dnešním díle se dozvíte, jak si uložit historii nahrávek do jednoduchého souboru a jak nastavit režim celé obrazovky při stisku klávesy Enter. Esc nám pak pro změnu poslouží k návratu do okenního režimu.

Náš aktualizovaný přehrávač bude disponovat také bohatší nabídkou ovládacích tlačítek, procentuálně zobrazí pozici, ve které se přehrávaný film, internetová televize nebo písnička nachází a dokonce budete moci využít i jednoduchý editor seznamu skladeb včetně podpory pro shuffle – náhodné přehrávání.

Klepněte pro větší obrázek  Klepněte pro větší obrázek
Vylepšený přehrávač a editor skladeb k přehrání

Ukládání historie do XML souboru

Pro ukládání historie je vhodné zvolit XML formát právě díky jeho jednoduchosti. Formát XML souboru bude mít následující podobu:

<?xml version="1.0" encoding="utf-8"?>
<nahravky>
  <nahravka1>D:\beatles – Hey Jude</nahravka1>
  <nahravka2>C:\Program Files\Shared\Overseer – Horndog.mp3</nahravka2>
  *
  *
  *
</nahravky>

Klepněte pro větší obrázek
Historie přehrávání, která se načetla z XML souboru

V kořenovém uzlu nahrávky budou uloženy poduzly obsahující jednotlivé cesty k již dříve přehrávaným nahrávkám. Pro manipulaci s XML dokumentem nám pomůže třída System.Xml.XmlDocument, která načtený XML dokument uchovává celou dobu v paměti – díky tomu je použití této třídy vhodné pro malé XML dokumenty. Pro získání nahrávek, jež jsou uloženy v kořenovém uzlu nahrávky použijeme metodu SelectNodes, která jako argument očekává výraz XPath, což je jednoduchý dotazovací jazyk s podobným použitím jako SQL u databází. Více o tomto jazyce najdete zde. Metoda SelectNodes vrací pole typu XmlNodeList, což je kolekce obsahující instance třídy XmlNode představující jednotlivé uzly vybrané na základě dotazu Xpath. Pro získání textové hodnoty uložené v tomto uzlu slouží vlastnost InnerText.

public static string[] NahrajNahravky()
{
  List<string> list = new List<string>();
  XmlDocument xml = new XmlDocument();
  xml.Load(Application.StartupPath + @"\history.xml");
  XmlNodeList nody = xml.SelectNodes(@"/nahravky/*");
  for (int x = nody.Count - 1; x >= 0; x--)
  {
    XmlNode nod = nody[x];
    if (nod.InnerText != "")
    {
      list.Add(nod.InnerText.Replace(Environment.NewLine,""));
    }
  }
  return list.ToArray();
}

Pro vytvoření nového uzlu použijeme instanci třídy XmlElement, které pomocí vlastnosti InnerText přiřadíme textovou hodnotu, jež bude uložena v tomto uzlu. Pro přiřazení tohoto uzlu k jeho rodiči slouží metoda AppendChild rodičovského uzlu. Nově upravený XML dokument je nutné uložit pomocí metody Save třídy XmlDocument.

public static void UlozNahravku(string cesta)
{
  XmlDocument xml = new XmlDocument();
  xml.Load(Application.StartupPath + @"\history.xml");
  XmlNode nod = xml.SelectSingleNode(@"/nahravky");
  XmlElement el = xml.CreateElement("nahravka" + (nod.ChildNodes.Count+1).ToString());
  el.InnerText = cesta;
  nod.AppendChild(el);
  xml.Save(Application.StartupPath + @"\history.xml");
}

Přepínání režimů obrazovky

Pro zapnutí režimu obrazovky při stisku klávesy enter, musíme danému formuláři registrovat událost OnKeyPress, která bude zavolána vždy při stisku jakékoli klávesy. Pro identifikaci konkrétní klávesy použijeme vlastnost KeyChar instance třídy KeyPressEventArgs, která je argumentem této události. Vlastnost KeyChar vrací typ char obsahující stisknutý znak v kódové sadě Unicode. Klávesa enter má v Unicode index 13.

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
  if (((int)e.KeyChar) == 13) // enter
  {
    // Odstraní okraje formuláře
    this.FormBorderStyle = FormBorderStyle.None;
    // Maximalizuje okno
    this.WindowState = FormWindowState.Maximized;
    // Skryje nabídku a panel hlasitosti
    panel1.Visible = false;
    this.menuStrip1.Visible = false;
  }

Pro zachycení stisku klávesy escape použijeme index číslo 27 v kódovací sadě unicode:

  else if (((int)e.KeyChar) == 27) // escape
  {
    this.FormBorderStyle = FormBorderStyle.Sizable;
    this.WindowState = FormWindowState.Normal;
    panel1.Visible = true;
    this.menuStrip1.Visible = true;
  }
}

S přehrávačem ještě nekončíme

Stávající přehrávač jsem obohatil nejen o výše popsané funkce, navíc jsem přidal okno pro vytváření seznamu přehrávaných nahrávek, tj. playlist. Jeho popis by však byl dosti šložitý a určitě by vyšel na další článek, který bych rád věnoval rozšíření přehrávače o manipulaci s CD mechanikou, titulky, nastavování atributů CD nahrávek. Případně o další vaše nápady.

Pokud si chcete podrobněji prostudovat kód přehrávače, můžete si samozřejmě jako vždy stáhnout kompletní zdrojové kódy včetně projektu pro bezplatné vývojové prostředí Microsoft Visual C# 2008 Express Edition a pokud jazyku C# nevládnete, můžete si stáhnout přeložený EXE program pro operační systém Windows s nainstalovanou platformou Microsoft .NET Framework novější verze.

Témata článku: Software, Programování, Hudba, filmy, seriály, Unicode, Escape, Beatles, Playlist

1 komentář

Nejnovější komentáře

  • wetty 6. 4. 2009 21:04:43
    Zrovna dneska jsem hledal jak přehrávat multimédia :-D. K námětu....
reklama
Určitě si přečtěte

Facebook o nás ví vše. Díky dobře skrytému vyhledávači se to dozví i ostatní

Facebook o nás ví vše. Díky dobře skrytému vyhledávači se to dozví i ostatní

** Facebook o nás ví vše, protože mu to sami řekneme ** V jeho nitru se skrývá mocný vyhledávač ** Mohou jej zneužít stalkeři, sociální inženýři a další nezbedníci

16.  2.  2017 | Jakub Čížek | 74

Pojďme programovat elektroniku: Žádný bastlíř se neobejde bez armády švábů

Pojďme programovat elektroniku: Žádný bastlíř se neobejde bez armády švábů

** Každý bastlíř se po čase neobjede bez armády švábů ** Dnes si některé z nich vyzkoušíme ** Třeba zázračný posuvný registr

Včera | Jakub Čížek | 18

Nevyznáte se ve značení procesorů Intelu? Tady máte tahák

Nevyznáte se ve značení procesorů Intelu? Tady máte tahák

** Z označení procesorů Intelu se toho dá mnoho vyčíst ** Ze čtyř čísel se dozvíte něco o výkonu i grafickém jádru ** Poradíme, jak číst číselné označení i písmena na konci

13.  2.  2017 | Stanislav Janů | 37


Aktuální číslo časopisu Computer

Stavba 3D tiskárny

Výbava domácí elektrodílničky

Budoucnost 5G sítí

Velké testy microSD karet a vodních chladičů

Přehled mobilních tarifů

reklama
reklama