介绍页加载视频

package com.example.gaowen38.view.activity;

import android.app.ActivityOptions;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.transition.Transition;
import android.transition.TransitionInflater;
import android.view.View;
import android.view.Window;
import android.widget.TextView;
import android.widget.Toast;

import com.example.gaowen38.Base.MyBaseActivity;
import com.example.gaowen38.R;
import com.example.gaowen38.data.bean.DetailOfTheActivityBean;
import com.example.gaowen38.data.bean.OpeningTheAdvertisingBean;
import com.example.gaowen38.data.remote.retrofit.DataService;
import com.example.gaowen38.exception.ExceptionManager;
import com.example.gaowen38.utils.CommunUtils;
import com.example.gaowen38.utils.SPUtils;
import com.example.gaowen38.utils.SharePreferenceUtils;
import com.example.gaowen38.view.MainActivity;
import com.example.gaowen38.view.MyView.CustomVideoView;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import butterknife.Unbinder;
import io.reactivex.Observable;
import io.reactivex.ObservableSource;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Function;
import io.reactivex.schedulers.Schedulers;

/**
 * @作者 红鼻子小黑
 * @姓名 赵鑫乐
 * @创建日期 2019/5/14 14:33
 * 启动页
 */
public class SplashActivity extends MyBaseActivity {
    int time = 6;
    @BindView(R.id.splash_daojishi)
    TextView splashDaojishi;
     @BindView(R.id.shipin_ceshis)
     CustomVideoView shipinCeshi;
    Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case 0:
                    if (time <= 1) {
                        Boolean formGobalSp = SharePreferenceUtils.getFormGobalSp(SplashActivity.this, String.valueOf(R.string.qidongye), true);
                        if (formGobalSp) {
                            SharePreferenceUtils.saveToGlobalSp(SplashActivity.this,
                                    String.valueOf(R.string.qidongye), false);
                            startActivity(new Intent(SplashActivity.this, WelcomeGuideActivity.class));
                            finish();
                        } else {
                            startActivity(new Intent(SplashActivity.this, LoginActivity.class));
                            finish();
                        }

                    } else {
                        time--;
                        splashDaojishi.setText("跳过 " + time);
                        Message message = new Message();
                        message.what = 0;
                        handler.sendMessageDelayed(message, 1000);
                    }
            }
        }
    };
    private Unbinder bind;
    private int currentPosition;
    private CustomVideoView shipinCeshi1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        if (Build.VERSION.SDK_INT >= 21) {
            View decorView = getWindow().getDecorView();
            decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
            getWindow().setStatusBarColor(Color.TRANSPARENT);
        }
        bind = ButterKnife.bind(this);
        handler.sendEmptyMessage(0);
        shipinCeshi1 = findViewById(R.id.shipin_ceshis);
        //播放请求,进行播放
        openingtheadvertising();
    }




    //视屏广告请求
    //详情
    public void openingtheadvertising() {
        //解析
        Observable<OpeningTheAdvertisingBean> getopeningtheadvertising = DataService.getService(this, false).getopeningtheadvertising("");
        getopeningtheadvertising.flatMap(new Function<OpeningTheAdvertisingBean, ObservableSource<OpeningTheAdvertisingBean>>() {
            @Override
            public ObservableSource<OpeningTheAdvertisingBean> apply(OpeningTheAdvertisingBean openingTheAdvertisingBean) throws Exception {
                //判断网络请求是否成功
                //判断网络请求成功后是否有数据
                if (openingTheAdvertisingBean.getState() == 0) {
                    if (openingTheAdvertisingBean.getData() != null) {
                        //返回数据
                        return Observable.just(openingTheAdvertisingBean);
                    }
                }
                //网络请求错误处理,改成message
                return Observable.error(ExceptionManager.buildServerErrorMessage(openingTheAdvertisingBean.getState(), openingTheAdvertisingBean.getMessage()));

            }
        }).subscribeOn(Schedulers.io())
                .unsubscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<OpeningTheAdvertisingBean>() {
                    @Override
                    public void onSubscribe(Disposable d) {

                    }

                    @Override
                    public void onNext(OpeningTheAdvertisingBean openingTheAdvertisingBean) {
                        setopeningtheadvertising(openingTheAdvertisingBean);
                    }

                    @Override
                    public void onError(Throwable e) {
                        Toast.makeText(SplashActivity.this, "" + e.getMessage(), Toast.LENGTH_SHORT).show();
                    }

                    @Override
                    public void onComplete() {

                    }
                });
    }
    //强求成功
    private void setopeningtheadvertising(OpeningTheAdvertisingBean openingTheAdvertisingBean) {
        //"android.resource://" + getPackageName() + "/" + R.raw.duanshipin
        //设置播放加载路径
        if(openingTheAdvertisingBean.getData().getAdUrl()!=null){
            Uri parse = Uri.parse( openingTheAdvertisingBean.getData().getAdUrl());

            shipinCeshi.setVideoURI(parse);
            //播放
            shipinCeshi.start();
            //循环播放
            shipinCeshi.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mediaPlayer) {
                    // imageView.setVisibility(View.GONE);
                    mediaPlayer.setLooping(true);
                    mediaPlayer.setOnInfoListener(new MediaPlayer.OnInfoListener() {
                        @Override
                        public boolean onInfo(MediaPlayer mediaPlayer, int what, int i1) {

                            //开始播放时,就把显示第一帧的ImageView gone 掉
                            if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START) {
                                // video started; hide the placeholder.
                                //    shipinSuoluetu.setVisibility(View.GONE);
                                //videoView.seekTo(0);
                                return true;
                            }
                            return false;
                        }
                    });
                }
            });
        }

    }
    //倒计时跳过
    @OnClick(R.id.splash_daojishi)
    public void onViewClicked() {
        time = 1;
    }

    @Override
    protected void onPause() {
        super.onPause();
        //记录播放的progress,避免黑屏
        shipinCeshi.pause();
        currentPosition = shipinCeshi.getCurrentPosition();
    }

    @Override
    protected void onResume() {
        super.onResume();
       if(currentPosition != 0) {
            shipinCeshi.seekTo(currentPosition);
            shipinCeshi.start();
        }
        // playProgress = videoView.getCurrentPosition();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        bind.unbind();

    }
}
CustomVideoView 播放视频用这个组件  上面有方法
package com.example.gaowen38.view.MyView;
import android.content.Context;
import android.media.MediaPlayer;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.widget.VideoView;

public class CustomVideoView extends VideoView{

    public CustomVideoView(Context context) {
        super(context);
    }

    public CustomVideoView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomVideoView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        //我们重新计算高度
        int width = getDefaultSize(0, widthMeasureSpec);
        int height = getDefaultSize(0, heightMeasureSpec);
        setMeasuredDimension(width, height);
    }

    @Override
    public void setOnPreparedListener(MediaPlayer.OnPreparedListener l) {
        super.setOnPreparedListener(l);
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        return super.onKeyDown(keyCode, event);
    }

}
原创文章 63 获赞 7 访问量 6275

猜你喜欢

转载自blog.csdn.net/weixin_42416789/article/details/99679150
今日推荐