当前位置:网站首页> 开发 > 多媒体 > 浏览文章

如何在Android应用程序中实现视频广告播放[页5]

来源: 时间: 2023-08-23 阅读:
javapublic class VideoAdPlayerActivity extends Activity implements SurfaceHolder.Callback, MediaPlayer.OnPreparedListener, MediaPlayer.OnCompletionListener {

    private MediaPlayer mMediaPlayer;
    private SurfaceView mSurfaceView;
    private SurfaceHolder mSurfaceHolder;
    private Timer mTimer;
    private int mDuration = 0;
    private int mCountdownTime = 5; // 倒计时时间为 5 秒
    private boolean mIsAdSkipped = false; // 广告是否被跳过

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video_ad_player);
        mSurfaceView = findViewById(R.id.surface_view);
        mSurfaceHolder = mSurfaceView.getHolder();
        mSurfaceHolder.addCallback(this);
    }

    @Override
    public void surfaceCreated(SurfaceHolder holder) {
        try {
            mMediaPlayer = new MediaPlayer();
            mMediaPlayer.setDataSource("file:///android_asset/ad_video.mp4");
            mMediaPlayer.setDisplay(holder);
            mMediaPlayer.prepareAsync();
            mMediaPlayer.setOnPreparedListener(this);
            mMediaPlayer.setOnCompletionListener(this);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

    }

    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
        if (mMediaPlayer != null) {
            mMediaPlayer.release();
            mMediaPlayer = null;
        }
    }

    @Override
    public void onPrepared(MediaPlayer mp) {
        mDuration = mMediaPlayer.getDuration();
        mMediaPlayer.start();
        startCountdownTimer();
    }

    @Override
    public void onCompletion(MediaPlayer mp) {
        if (!mIsAdSkipped) {

相关内容