package com.hpw.myapp.ui.tv.activity;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.MotionEvent;
import android.view.SurfaceView;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.hpw.mvpframe.utils.LogUtil;
import com.hpw.myapp.R;
import com.hpw.myapp.ui.tv.model.FirstBean;
import com.hpw.myapp.ui.tv.model.OtherBean;
import com.hpw.myapp.ui.tv.model.TvShowBean;
import com.hpw.myapp.ui.tv.model.TvShowModel;
import com.hpw.myapp.ui.tv.presenter.TvShowPresenter;
import com.hpw.myapp.widget.media.HorMediaControllView;
import com.hpw.myapp.widget.media.LivePlayerHolder;
import com.hpw.myapp.widget.media.OnHorControllListener;
import com.hpw.myapp.widget.media.OnVerticalControllListener;
import com.hpw.myapp.widget.media.VerticalMediaControllView;
import org.json.JSONObject;
import java.util.Map;
/**
* Created by hpw on 16/12/3.
*/
public class TvShowActivity extends BaseTvShowActivity<TvShowPresenter, TvShowModel> implements VerticalMediaControllView.OnFullScreenListener, View.OnTouchListener {
private SurfaceView mSurfaceView;
private VerticalMediaControllView verticalControll;
private View mLoadingView;
private int mPortWidth;
private int mPortHeight;
private boolean isLandscape = false;
private LivePlayerHolder playerHolder;
private HorMediaControllView horizontalControll;
private FirstBean.RoomBean.ListBean mPlayBean;
private OtherBean.DataBean mPlayBean1;
private boolean isVertical = true;
private int mCodec;
private String mPlayerPath;
private ImageView bgImage;
@Override
public int getLayoutId() {
return R.layout.activity_tv_show;
}
@Override
public void initView(Bundle savedInstanceState) {
getWindow().getDecorView().setSystemUiVisibility(View.INVISIBLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
initPlayer();
initVerControll();
initHorContrll();
initData();
}
private void initPlayer() {
mLoadingView = findViewById(R.id.LoadingView);
bgImage = (ImageView) findViewById(R.id.bgImg);
mSurfaceView = (SurfaceView) findViewById(R.id.surfaceView);
mSurfaceView.setOnTouchListener(this);
try {
mPlayBean = (FirstBean.RoomBean.ListBean) getIntent().getSerializableExtra("playBean");
} catch (ClassCastException e) {
mPlayBean1 = (OtherBean.DataBean) getIntent().getSerializableExtra("playBean");
}
mCodec = getIntent().getIntExtra("mediaCodec", 0);
}
private void initVerControll() {
verticalControll = (VerticalMediaControllView) findViewById(R.id.verticalControll);
verticalControll.setOnVerticalControllListener(new OnVerticalControllListener(this, playerHolder));
verticalControll.setOnFullScreenListener(this);
}
private void initHorContrll() {
horizontalControll = (HorMediaControllView) findViewById(R.id.horizontalControll);
horizontalControll.setOnHorControllListener(new OnHorControllListener(this, playerHolder));
}
private void initData() {
if (mPlayBean != null) {
mPresenter.onTvShow(mPlayBean.getUid());
Glide.with(this).load(mPlayBean.getThumb()).fitCenter().into(bgImage);
verticalControll.setData(mPlayBean.getView(), mPlayBean.getAvatar(), mPlayBean.getNick(), mPlayBean.getTitle(), mPlayBean.getFollow());
} else if (mPlayBean1 != null) {
mPresenter.onTvShow(mPlayBean1.getUid());
Glide.with(this).load(mPlayBean1.getThumb()).fitCenter().into(bgImage);
verticalControll.setData(mPlayBean1.getView(), mPlayBean1.getAvatar(), mPlayBean1.getNick(), mPlayBean1.getTitle(), mPlayBean1.getFollow());
}
}
@Override
protected void onResume() {
super.onResume();
if (playerHolder != null)
playerHolder.onResume();
}
@Override
protected void onPause() {
super.onPause();
if (playerHolder != null)
playerHolder.onPause();
}
@Override
protected void onDestroy() {
if (playerHolder != null) {
playerHolder.release();
playerHolder = null;
}
verticalControll.onDestroy();
horizontalControll.onDestroy();
super.onDestroy();
}
@Override
protected void toPrepare() {
if (playerHolder != null)
playerHolder.prepare();
}
@Override
public void showContent(TvShowBean info) {
JSONObject jsonObject = new JSONObject((Map) info.getLive().getWs().getHls());
JSONObject object = jsonObject.optJSONObject("0");
if (object != null) {
mPlayerPath = object.optString("src");
} else {
mPlayerPath = jsonObject.optJSONObject("4").optString("src");
}
playerHolder = new LivePlayerHolder(this, mSurfaceView, mCodec, mPlayerPath);
playerHolder.startPlayer();
}
@Override
public void onConnecting() {
mLoadingView.setVisibility(View.VISIBLE);
}
@Override
public void onReConnecting() {
showToastTips("正在重连...");
}
@Override
public void onConnectSucces() {
mLoadingView.setVisibility(View.GONE);
}
@Override
public void onConnectFailed() {
showToastTips("连接失败");
}
@Override
public void onPlayComleted() {
showToastTips("主播离开了");
}
@Override
public void onPlayerStart() {
bgImage.animate().alpha(0).setDuration(1000).start();
}
@Override
public void onPlayePause() {
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {
//portrait
} else {
isLandscape = true;
//landscape
}
}
@Override
public void setRequestedOrientation(int requestedOrientation) {
super.setRequestedOrientation(requestedOrientation);
if (requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {
if (verticalControll != null) {
isVertical = true;
verticalControll.onCreate();
horizontalControll.onDestroy();
}
} else {
if (horizontalControll != null) {
isVertical = false;
horizontalControll.onCreate();
verticalControll.onDestroy();
}
}
}
@Override
public boolean onTouch(View v, MotionEvent event) {
LogUtil.i("TOUCH " + isVertical);
verticalControll.onTouchEvent(isVertical, event);
horizontalControll.onTouchEvent(isVertical, event);
return false;
}
@Override
public void onVerticalClickFullScreen() {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Display display = getWindow().getWindowManager().getDefaultDisplay();
DisplayMetrics metrics = new DisplayMetrics();
display.getMetrics(metrics);
int heightPixels = metrics.heightPixels;
int widthPixels = metrics.widthPixels;
ViewGroup.LayoutParams params = mSurfaceView.getLayoutParams();
int height = params.height;
int width = params.width;
getWindow().getDecorView().setSystemUiVisibility(View.INVISIBLE);
mPortWidth = width;
mPortHeight = height;
params.width = widthPixels;
params.height = heightPixels;
mSurfaceView.setLayoutParams(params);
}
@Override
public Context getContext() {
return this;
}
@Override
public void showError(String msg) {
}
@Override
public void onBackPressedSupport() {
if (getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
ViewGroup.LayoutParams params = mSurfaceView.getLayoutParams();
params.width = mPortWidth;
params.height = mPortHeight;
mSurfaceView.setLayoutParams(params);
getWindow().getDecorView().setSystemUiVisibility(View.INVISIBLE);
return;
}
if (playerHolder != null)
playerHolder.release();
if (isLandscape == true)
if (mPlayBean != null) {
TvMainActivity.startActivity(mContext, mPlayBean.getCategory_slug());
} else if (mPlayBean1 != null) {
TvMainActivity.startActivity(mContext, mPlayBean1.getCategory_slug());
}
super.onBackPressedSupport();
}
}