Всем привет! Сегодня мы попробуем написать небольшое приложение на языке C#, которое позволяло бы нам прослушивать радиостанции. Сразу хочется сказать, что предстоящее действо, будет нести только образовательный характер, ведь средств для прослушивания интернет радио, написано уже не мало.
Наверное не надо никому объяснять что такое интернет радио, поэтому обойдёмся без прелюдий и перейдём прямо к делу, поэтому открываем Visual Studio(некоторые могут открыть и Mono) и создаём новый проект. Для простоты, будем использовать стандартный компонент Media Player потому, что в самом начале договорились, что приложение будет небольшим. Но его надо ещё добавить, потому что в стандартной комплектации, на панеле инструментов его нет. Поэтому после создания проекта, жмём правой кнопкой мыши на “Панель элементов”, выбираем “Выбрать элементы” и переходим во вкладку “COM - компоненты”. После этого, находим компонент Windows Media Player, подключаем и кидаем на форму в её нижнюю часть. Также нам понадобится один ListView, два textbox`а и один Button. В результате должно получиться что-то вроде этого:
Теперь перейдём к внутреннему наполнению кодом. Но перед этим, сразу определимся что все данные( т.е названия радиостанция, URL и др) ,будем хранить в формате XML, который очень удобно использовать как раз для таких вещей. Далее пишем обработчик события для нажатия кнопки. Тут надо сразу условится, что в первое поле будем вводить название для радиостанции, а во вторую её URL. Чтобы был корректным адрес, нужно не допустить некоторые символы. Запишем их в отдельный массив.
private char []symb = {'!','@','&','#','%','*','"'};
И теперь можно писать функцию, которая проверяет корректность символов в полях
Листинг 1.1public bool CheckFields()
{
string t1 = textBox1.Text; string t2 = textBox2.Text;
if ( (t1.Length == 0 || t2.Length == 0)
|| (t1.Length > 100 || t2.Length > 100) )
return false;
if ( t1.IndexOfAny(symb) != -1 || t2.IndexOfAny(symb) != -1 )
return false;
return true;
}
{
string t1 = textBox1.Text; string t2 = textBox2.Text;
if ( (t1.Length == 0 || t2.Length == 0)
|| (t1.Length > 100 || t2.Length > 100) )
return false;
if ( t1.IndexOfAny(symb) != -1 || t2.IndexOfAny(symb) != -1 )
return false;
return true;
}
Думаю всё понятно,а если не всё , то в конце заметки, будет архив с исходниками и с подробными комментариями. Скажу только, что в лучшем случае функция вернёт true, а в худшем false. Если функция вернула true, то можно переходить непосредственно к заполнению ListView
Листинг 1.2
private void button1_Click(object sender, EventArgs e)
{
if (CheckFields())
{
string[] items = { textBox1.Text, textBox2.Text, "Отключено" };
ListViewItem lv = new ListViewItem(items);
listView1.Items.Add(lv);
}
}
private void button1_Click(object sender, EventArgs e)
{
if (CheckFields())
{
string[] items = { textBox1.Text, textBox2.Text, "Отключено" };
ListViewItem lv = new ListViewItem(items);
listView1.Items.Add(lv);
}
}
В массив записывается {имя,ссылка, и текущий статус}, который добавляется в наш список. Давайте попробуем добавить первую радиостанцию, например
Эхо-Москвы, http://radio.echo.msk.ru:8000/listen.pls . После нажатия кнопки добавить, мы видим, что радиостанция успешно добавилась. Теперь неплохо бы и послушать. Для этого, пишем обработчик события для двойного клика для ListView. Пишем слудующее.
Листинг 1.3
Эхо-Москвы, http://radio.echo.msk.ru:8000/listen.pls . После нажатия кнопки добавить, мы видим, что радиостанция успешно добавилась. Теперь неплохо бы и послушать. Для этого, пишем обработчик события для двойного клика для ListView. Пишем слудующее.
Листинг 1.3
//Проверяем в что мы в онлайне
if (axWindowsMediaPlayer1.isOnline)
{
//URL
axWindowsMediaPlayer1.URL = listView1.SelectedItems[0].SubItems[1].Text;
axWindowsMediaPlayer1.Ctlcontrols.play(); //Запускаем проигрывание
//Изменяем параметры включено и отключено
foreach (ListViewItem it in listView1.SelectedItems)
{
if (ll == -1)
it.SubItems[2].Text = "Работает";
else
{
listView1.Items[ll].SubItems[2].Text = "Отключено";
it.SubItems[2].Text = "Работает";
}
ll = listView1.SelectedItems[0].Index;
}
}
if (axWindowsMediaPlayer1.isOnline)
{
//URL
axWindowsMediaPlayer1.URL = listView1.SelectedItems[0].SubItems[1].Text;
axWindowsMediaPlayer1.Ctlcontrols.play(); //Запускаем проигрывание
//Изменяем параметры включено и отключено
foreach (ListViewItem it in listView1.SelectedItems)
{
if (ll == -1)
it.SubItems[2].Text = "Работает";
else
{
listView1.Items[ll].SubItems[2].Text = "Отключено";
it.SubItems[2].Text = "Работает";
}
ll = listView1.SelectedItems[0].Index;
}
}
Вот собственно и весь запуск. Теперь можно включать радиостанцию и наслаждаться звуком, который выдаёт Windows Media Player:) Кстати таким же образом можно слушать и подкасты. Для них можно также, придумать дополнительные фишки типа выбора выпуска итд, но данная тема уже выходит за рамки нашего сегодняшнего обсуждения. Теперь, когда все радиостанции добавлены, надо их сохранить в файл. Как было уже сказано, данные будем хранить в XML файле. Для записи, воспользуемся интерфейсом Linq to XML, который обеспечивает более простую работу с XML файлами.
Листинг 1.4
Листинг 1.4
try
{
XDocument doc = new XDocument();
XElement library = new XElement("radio");
doc.Add(library);
foreach (ListViewItem lv in listView1.Items)
{
XElement name = new XElement(lv.Text);
name.Value = lv.SubItems[1].Text;
library.Add(name);
}
doc.Save("test.xml");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
{
XDocument doc = new XDocument();
XElement library = new XElement("radio");
doc.Add(library);
foreach (ListViewItem lv in listView1.Items)
{
XElement name = new XElement(lv.Text);
name.Value = lv.SubItems[1].Text;
library.Add(name);
}
doc.Save("test.xml");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Сначала создаём объект XDocument, после этого создаём элементы в нашей базе, которые будут носит имя радиостанций. Опять же, более подробные комментарии, ищите в архиве с исходниками.
Вот вроде бы и всё. Сегодня мы написали небольшое приложения для прослушивания радио. Надеюсь, эта заметка была вам полезна. В архиве вы найдёте готовую программу и исходные тексты, которые вы сможете править по собственному желанию. Удачи!
Вот вроде бы и всё. Сегодня мы написали небольшое приложения для прослушивания радио. Надеюсь, эта заметка была вам полезна. В архиве вы найдёте готовую программу и исходные тексты, которые вы сможете править по собственному желанию. Удачи!
Дополнение.
1. Архив и исходниками
http://zalil.ru/30393243
2. Полезные ссылки
Исходника нет в http://zalil.ru/30393243 , а так же если можно сделать урок более информативным, т.е не все знают как в визуал студио перейти к редактированию и вставки кода (как я (работал в досе всегда)) , напишите более подробно. Спасибо.
ОтветитьУдалить