Я пытаюсь воспроизвести рекламу на Android
с помощью Google IMA sdk
. Я использовал пример приложения, чтобы прийти к своему решению, но по какой-то причине я получаю только аудио объявления и оверлей (длина объявления, кнопка «читать дальше» и т. Д.). Видео не воспроизводится или, по крайней мере, невидимо.
Я собираю видеоплеер, используя VideoView
:
package eu.myapp.test.views;
import android.media.MediaPlayer;
import android.view.View;
import android.view.ViewGroup;
import android.widget.MediaController;
import android.widget.VideoView;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnErrorListener;
import android.media.MediaPlayer.OnInfoListener;
import com.facebook.react.uimanager.ThemedReactContext;
import java.util.ArrayList;
import java.util.List;
import eu.myapp.test.controllers.PlayerController;
public class PlayerView extends VideoView {
private PlayerController mPlayerController;
public PlayerView(ThemedReactContext context, PlayerController playerController) {
super(context);
mPlayerController = playerController;
init();
}
private void init() {
MediaController mediaController = new MediaController(getContext());
mediaController.setAnchorView(this);
setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
super.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
super.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
mediaPlayer.reset();
reset();
}
});
super.setOnErrorListener(new OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
mp.reset();
reset();
return true;
}
});
super.setOnInfoListener(new OnInfoListener() {
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
// When video starts, make progressbar visible and spinner invisible
if (MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START == what) {
mPlayerController.setProgressBarVisibility(View.VISIBLE);
mPlayerController.setPlaceholderVisibility(View.GONE);
mPlayerController.setAdSpinnerVisibility(View.GONE);
return true;
}
return false;
}
});
mPlayerController.addPlayerView(this);
}
public void play() {
start();
}
public void reset() {
mPlayerController.setProgressBarVisibility(View.GONE);
mPlayerController.setPlaceholderVisibility(View.VISIBLE);
mPlayerController.setAdSpinnerVisibility(View.VISIBLE);
mPlayerController.onVideoComplete();
}
}
Кто-нибудь знаком с этой проблемой?
РЕДАКТИРОВАТЬ: после завершения я получаю
ошибка состояния игрока (-38, 0).
Но я сомневаюсь, что это проблема, так как она не работает с самого начала.
Проблема не возникает или встречается редко на некоторых устройствах. Хотя это всегда появляется на других устройствах.