java - Google Ima SDK,播放声音但没有 View

标签 java android android-mediaplayer google-ima

我正在尝试使用 Google IMA sdkAndroid 上播放广告。我使用示例应用程序来解决我的问题,但出于某种原因,我只获得了广告的音频和叠加层(广告长度、阅读更多按钮等)。视频没有播放,或者至少不可见。

我使用 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();
}
}

有人熟悉这个问题吗?

编辑:完成后我得到一个

playerstate error (-38, 0).

但我怀疑这是问题所在,因为它从一开始就不起作用。

此问题不会发生,或在某些设备上很少见。虽然它总是出现在其他设备上。

最佳答案

修复它。我的普通视频有一个 SurfaceView,广告有一个 VideoView。 SurfaceView 显示在 VideoView 之上,导致广告不可见。

关于java - Google Ima SDK,播放声音但没有 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52219214/

相关文章:

android - HockeyApp 和 Android 的 Bamboo 集成

java - 如何在android开发中隐藏和显示自定义 View ?

android - 应用程序如何检测状态栏颜色(Android 5.0 Lollipop)?

java - 线程、MediaPlayer、ProgressDialog 和上下文问题

Android WebView HTML5 Video Spawns MediaPlayer 永远存在于 Samsung S4 [找到黑客答案]

java - Android Studio 错误。 java.exe 返回非零退出值 2

java - 如何处理 ProcessBuilder 命令中的编码?

java - 读入 WAV 文件并计算 RMS

java - Android中如何设置播放歌曲的持续时间?

java - 获取所有行中最近添加的列?