Я реализовал собственный видеоплеер, который использует URL-адреса в качестве входных данных. При этом все работало отлично, пока я не сменил устройство, с которым я тестировал.
Итак, в Samsung S5 с Android 6.0.1 (и некоторых других устройствах других брендов) я не могу воспроизводить видео. Методы onPrepared () и onError () никогда не вызываются, и я не получаю никакой ошибки в logcat, поэтому у меня нет никаких указаний о том, что происходит в фоновом режиме.
Мое первое предположение,был связан с некоторой проблемой кодека (видео mp4), но я не получаю никаких ошибок / исключений в logcat, и ни один из слушателей не вызывается. Может ли оно все еще быть связано с кодеками?
videoPlayer = (VideoView) findViewById(R.id.video_player_view);
videoPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
{
@Override
public void onCompletion(MediaPlayer mediaPlayer)
{
// never gets called in S5
videoEnded();
}
});
videoPlayer.setOnErrorListener(
new MediaPlayer.OnErrorListener()
{
@Override
public boolean onError(MediaPlayer mp, int error, int extra)
{
// never gets called in S5
// error handling
});
videoPlayer.setOnPreparedListener(
new MediaPlayer.OnPreparedListener()
{
@Override
public void onPrepared(MediaPlayer mediaPlayer)
{
mPlayer = mediaPlayer;
mediaPlayer.setOnInfoListener(new MediaPlayer.OnInfoListener()
{
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra)
{
// never gets called in S5
// deal with buffering
return false; }
});
}
});
}
...
videoPlayer.setVideoURI(videoUri);
videoPlayer.start();
Edit Я считаю, что это происходит, потому что я использую PopupWindow в качестве корневого окна дляVideoView. Я просто не понимаю, почему это работает на некоторых устройствах, а другие не