Получите mediaPlayer видеопросмотра в Android

Можно ли получить ссылку на экземпляр mediaPlayer, который использует videoView, желательно прямо внутри его ctor? Если да, то как?

Поскольку у videoView не так много слушателей, как у mediaPlayer, я хотел бы иметь возможность обращаться к mediaPlayer для дополнительного контроля и лучшей обработки событий.


person android developer    schedule 25.06.2012    source источник
comment
Вероятно, вы можете сделать это через отражение.   -  person yorkw    schedule 27.06.2012
comment
отражение слишком грязно и слишком опасно. можно ли расширить видеопросмотр и вместо этого получить медиаплеер?   -  person android developer    schedule 27.06.2012


Ответы (1)


вы можете слушать из VideoView.

VideoView mVideoView=new VideoView();
mVideoView.setOnPreparedListener( new MediaPlayer.OnPreparedListener() {
  @Override
  public void onPrepared(MediaPlayer pMp) {
   //use a global variable to get the object
  }
});

В качестве альтернативы, если вас интересуют только события Media Player, вы можете использовать любое из них, и они реализованы в VideoView, и это в основном события MediaPlayer.

void    setOnCompletionListener(MediaPlayer.OnCompletionListener l)
void    setOnErrorListener(MediaPlayer.OnErrorListener l)
void    setOnInfoListener(MediaPlayer.OnInfoListener l)
void    setOnPreparedListener(MediaPlayer.OnPreparedListener l)

Все эти функции также дадут экземпляр Media Player.

person minhaz    schedule 08.02.2013
comment
хотя я задавал этот вопрос давно, я помню, чего хотел: много контроля и уведомления обо всех событиях в этом представлении: события состояния воспроизведения (пауза, запуск, остановка, поиск), события ошибок, буферизация статус и т.д ... в mediaPlayer есть все это (хотя я не уверен, насколько хорошо они работают и как), а в videoView есть только некоторые файлы . - person android developer; 09.02.2013
comment
События в VideoView (например, setOnInfoListener (MediaPlayer.OnInfoListener l)) доступны только с уровня API 17, так что, если я хочу поддерживать более низкие уровни API? - person Narendrasinh Dodiya; 24.02.2014
comment
Вы можете установить OnInfoListener найденного объекта MediaPlayer. Доступен › API 3. - person Thomas Decaux; 10.06.2014
comment
setOnPreparedListener() не работает, onPrepared() никогда не вызывается! - person nburk; 19.06.2014
comment
@nburk убедитесь, что вы еще не вызываете setOnPreparedListener() дальше в своем коде. Этот второй вызов заменит этот, если он у вас есть. (надеюсь это поможет) - person Francois Dermu; 11.07.2017