Недавно от товарища пришел вопрос на засыпку: "Почему в интерфейсe java.util.Map метод get в качестве ключа принимает Object, а метод put использует женерики?"
V get(Object key); V put(K key, V value); |
Сходу ответить не смог, пришлось разбираться.
Недавно от товарища пришел вопрос на засыпку: "Почему в интерфейсe java.util.Map метод get в качестве ключа принимает Object, а метод put использует женерики?"
V get(Object key); V put(K key, V value); |
Сходу ответить не смог, пришлось разбираться.
Работа с мультимедийными данными в Android-е проработана довольно не плохо, но к сожалению существуют ряд определенных сложностей.
Например, для проигрывания потокового видео можно использовать VideoView или использовать напрямую низкоуровневый класс MediaPlayer.
Естественно, VideoView внутри использует тот же MediaPlayer.
Примеры работы с VideoView и MediaPlayer есть в стандартной поставке: ApiDemos
Примеры вполне пригодные для самообучения и достаточно подробные. Самое интересное возникает при работе в реальной жизни.
Например, при начале трансляции по протоколу RTSP может возникнуть более чем ~10 секундная задержка.
Этот баг был зарегистрирован еще в 1999г.
Проблема была не только с русскими файлами, а например с французскими (как в примере).
Корни довольно глубокие и существовали серьезные (надеюсь) причины, по которым эту ошибку долгое время не исправляли. В итоге, много-много лет в Java нельзя было сделать простыми штатными средствами zip-архив, который бы содержал файлы с именами не на латинице.
К сожалению, жизнь такова, что все это время некоторых java-программистов заставляли делать такие zip-архивы. Приходилось использовать например apache-вский commons-compress.
Использовать очень просто. Алгоритм буквально в два шага: