Установка своего рода callback-функции на определенные секунды воспроизведения видео

В Android я пытаюсь реализовать приложение, которое может воспроизводить видео. В этом приложении я хочу запустить некоторые функции обратного вызова для определенных периодов времени видео. Например, когда проигрыватель воспроизводит 30-ю секунду видео, я хочу вызвать функцию f или когда проигрывается 1,30-я секунда, вызывается функция g.

Как я могу реализовать этот функционал? Я могу запустить таймер для каждой функции, но в этом случае я должен отслеживать воспроизведение/вперед и изменять таймер в соответствии с этими изменениями. У вас есть идеи?


person ygk    schedule 12.06.2011    source источник


Ответы (1)


Я никогда не делал этого, поэтому я не могу дать много информации, но просто идея...

Предполагая, что вы собираетесь использовать MediaPlayer, вы можете попробовать расширить его для собственного класса.

В своем собственном классе вы можете поддерживать Handler, который использует postDelayed(Runnable r, long delayMillis) для запуска некоторого кода, например, каждые 100 мс, и вызывать метод getCurrentPosition(). Затем вы можете проверить текущую позицию по списку «триггерных точек» (30 секунд, 1 минута 30 секунд и т. д.), а затем выполнить любую необходимую задачу.

Выполнение этого таким образом будет означать, что если позиция воспроизведения настроена (с использованием полосы поиска, FF / RW и т. д.), вам не нужно будет обновлять таймер - Runnable просто продолжит проверять текущую позицию без необходимости «знать» о каком-либо искать изменения.

person Squonk    schedule 13.06.2011