Привет, я знаю, что по этой теме уже есть куча постов, но ни одна из них не работает.
Я создаю приложение, которое отображает видео и изображения каждую минуту или около того.
Видео воспроизводится в течение пары или более раз, но все равно вылетает в более позднее время.
У меня есть этот код для справки, пожалуйста, помогите.
Для справки, я использую это видео как источник видео
Любая помощь приветствуется. Заранее спасибо.
Я получаю такую ошибку
connect: уже подключен (cur = 3 req = 3)
java.lang.IllegalStateException
atroid.media.MediaPlayer.prepareAsync (собственный метод)
@Override
public void onDisplayVideo(String url) {
ivImageAds.setVisibility(View.GONE);
surfaceView.setVisibility(View.VISIBLE);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
mediaPlayer = new MediaPlayer();
mediaPlayer.setDisplay(surfaceHolder);
mediaPlayer.setDataSource(url);
mediaPlayer.setOnCompletionListener(mp -> {
// release it here after using.
releaseMediaPlayer();
adsViewPresenter.mediaPlayed();
});
mediaPlayer.setOnPreparedListener(mp -> mediaPlayer.start());
if (Build.VERSION.SDK_INT >= 21) {
mediaPlayer.setAudioAttributes(new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_MEDIA)
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.build());
} else {
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
}
mediaPlayer.prepareAsync();
} catch (IOException e) {
adsViewPresenter.mediaError(e);
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { }
@Override
public void surfaceDestroyed(SurfaceHolder holder) { }
});
}
private void releaseMediaPlayer() {
if (mediaPlayer != null) {
mediaPlayer.reset();
mediaPlayer.release();
mediaPlayer = null;
}
}
@Override
protected void onPause() {
super.onPause();
releaseMediaPlayer();
}
@Override
protected void onDestroy() {
super.onDestroy();
releaseMediaPlayer();
}