RTSP - это потоковый протокол в реальном времени. Это означает, что вы можете транслировать в режиме реального времени все, что захотите, например, видео, аудио, текст и так далее. RTP - это транспортный протокол, который используется для передачи мультимедийных данных, согласованных по RTSP. Таким образом, мы можем сказать, что RTSP закончился по RTP. Библиотека SharpRSTP, которая упоминается в моем комментарии, поддерживает в UWP. Если вы хотите только потоковое аудио, вы можете использовать G711Payload. G711 - это обычный аудио кодер. Конечно, вы можете найти другую сетевую библиотеку. Вы можете обратиться к сэмплу RTSPClient.cs в репозитории.
Вы можете выполнить поиск образца (название - TCP Audio Streamer and Player (Voice Chat over IP)), он работает отлично. Это собственный проект VoIP для отправки и получения аудиоданных по TCP. Вы можете переместить клиента в UWP.
На самом деле вы можете сделать это довольно просто, поскольку в списке есть метод ForEach
, а так как вы может передать Console.WriteLine
как группу методов. Затем компилятор будет использовать неявное преобразование для преобразования группы методов в, в этом случае, в Action
и выберет наиболее конкретный метод из группы, в этом случае Console.WriteLine ( int)
:
var list = new List<int>(Enumerable.Range(0, 50));
list.ForEach(Console.WriteLine);
Работает и со строками =)
Быть крайне педантичным (и я не предлагаю изменить ваш ответ - просто комментировать ради интереса) Console.WriteLine
является группой методов. Затем компилятор использует неявное преобразование из группы методов в Action
, выбирая наиболее конкретный метод ( Console.
Из того, что я могу сказать, к сожалению, невозможно настроить цвет текста, отображаемого в индексе, ближайшем Мне удалось прийти - возможность изменить цвет фона и шрифт индекса.
В кулинарной книге разработчиков iPhone от Эрики Садун есть некоторый код, который показывает, как получить доступ к представлению UITableViewIndex (недокументированный класс). , Вы можете найти ссылку на нее на странице 175 книги, если она у вас есть. Который дает доступ к цвету фона и шрифту. Вы можете увидеть неофициальный документ, относящийся к этому классу здесь .
ПРЕДУПРЕЖДЕНИЕ Это недокументированное использование недокументированного класса, поэтому вы должны быть осторожны с его использованием.
Вот код фрагмент из поваренной книги с небольшими изменениями:
- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath {
for(UIView *view in [tv subviews])
{
if([[[view class] description] isEqualToString:@"UITableViewIndex"])
{
[view setBackgroundColor:[UIColor whiteColor]];
[view setFont:[UIFont systemFontOfSize:14]];
}
}
//rest of cellForRow handling...
}
Это иллюстрирует, как вы можете получить доступ к представлению UITableViewIndex и изменить его в некоторых аспектах. Похоже, что представление не имеет никаких подпредставлений, поэтому, вероятно, оно выполняет произвольное рисование с массивом заголовков индекса.
Это не идеально, но, надеюсь, это немного поможет.
Пол
ForEach заключается в том, что если у вас есть конкретный тип списка, он будет использовать наиболее подходящую перегрузку. Например:List<int> integers = new List<int> { 1, 2, 3 };
List<string> strings = new List<string> { "a", "b", "c" };
integers.ForEach(Console.WriteLine);
strings.ForEach(Console.WriteLine);
При записи целых чисел будет использоваться Console.WriteLine (int)
, тогда как при записи строк будет использоваться Console.WriteLine (string)
. Если конкретная перегрузка недоступна (или если вы просто используете общий список List
и компилятор не знает, что такое T
), он будет использовать консоль .WriteLine (object)
.
Обратите внимание на использование Console.WriteLine
в качестве группы методов. Это более кратко, чем использование лямбда-выражения, и на самом деле немного более эффективно (поскольку делегат просто будет вызовом Console.WriteLine
,
Вы также можете использовать встроенный foreach List, например:
List<T>.ForEach(item => Console.Write(item));
Этот код также значительно запускает ] быстрее!
Приведенный выше код также позволяет вам манипулировать Console.WriteLine, например:
List<T>.ForEach(item => Console.Write(item + ",")); //Put a,b etc.