2012-06-25 5 views
17

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

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

+0

Возможно, вы можете сделать это через [reflection] (http://tutorials.jenkov.com/java-reflection/private-fields-and-methods.html). – yorkw

+0

Отражение слишком грязное и слишком опасное. можно ли расширить видеообъём и получить там медиаплеер? –

ответ

12

вы можете прослушивать из 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.

+0

, хотя я давно задал этот вопрос, я помню, что я хотел: много контроля и уведомления обо всех событиях в этом представлении: события статуса воспроизведения (пауза, старт, остановка, поиск), события ошибок, статус буферизации и т. д. ... MediaPlayer имеет все эти (хотя и не уверен, насколько хорошо они работают и как), но у VideoView есть только некоторые. –

+0

События в VideoView (например, setOnInfoListener (MediaPlayer.OnInfoListener l)) доступны только с уровня API 17, так что, если я хочу поддерживать более низкие уровни API? –

+0

Вы можете установитьOnInfoListener из найденного объекта MediaPlayer. Доступно> API 3. –

Смежные вопросы