package android.marshon.likequanmintv.mvp.live.ui;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.marshon.likequanmintv.R;
import android.marshon.likequanmintv.bean.PlayBean;
import android.marshon.likequanmintv.controller.LivePlayerHolder;
import android.marshon.likequanmintv.controller.RoomDataController;
import android.marshon.likequanmintv.librarys.utils.LogUtil;
import android.marshon.likequanmintv.listener.MyOnHorControllListener;
import android.marshon.likequanmintv.listener.MyOnVerticalControllListener;
import android.marshon.likequanmintv.mvp.live.LivePlayerPresenterImpl;
import android.marshon.likequanmintv.view.mediacontroll.HorMediaControllView;
import android.marshon.likequanmintv.view.mediacontroll.VerticalMediaControllView;
import android.os.Bundle;
import android.os.Debug;
import android.util.DisplayMetrics;
import android.util.Log;
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 org.json.JSONObject;
import javax.inject.Inject;
/**
* This demo shows how to use PLMediaPlayer API playing video stream
*/
public class CommonLiveUI extends BaseLiveUI implements VerticalMediaControllView.OnFullScreenListener, View.OnTouchListener {
private static final String TAG = CommonLiveUI.class.getSimpleName();
private SurfaceView mSurfaceView;
private VerticalMediaControllView verticalControll;
private View mLoadingView;
private int mPortWidth;
private int mPortHeight;
private LivePlayerHolder playerHolder;
private View mStatusbar;
private HorMediaControllView horizontalControll;
private PlayBean mPlayBean;
private boolean isVertical =true;
@Inject
LivePlayerPresenterImpl livePlayerPresenterImpl;
private RoomDataController mRoomDataController;
private int mCodec;
private String mPlayerPath;
private ImageView bgImage;
public CommonLiveUI(){
Debug.startMethodTracing("CommonLiveUI");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
super.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
super.onCreate(savedInstanceState);
setContentView(R.layout.act_commonliveplayer);
mActivityComponent.inject(this);
mBasePresent=livePlayerPresenterImpl;
livePlayerPresenterImpl.attachView(this);
initPlayer();
initVerControll();
initHorContrll();
initData();
}
//init
private void initPlayer() {
mStatusbar = findViewById(R.id.statusbar);
mLoadingView = findViewById(R.id.LoadingView);
bgImage = (ImageView) findViewById(R.id.bgImg);
mSurfaceView = (SurfaceView) findViewById(R.id.surfaceView);
mSurfaceView.setOnTouchListener(this);
mPlayBean = (PlayBean) getIntent().getSerializableExtra("playBean");
mCodec = getIntent().getIntExtra("mediaCodec", 0);
}
private void initVerControll(){
verticalControll=(VerticalMediaControllView)findViewById(R.id.verticalControll);
verticalControll.setOnVerticalControllListener(new MyOnVerticalControllListener(this,playerHolder));
verticalControll.setOnFullScreenListener(this);
}
private void initHorContrll() {
horizontalControll=(HorMediaControllView)findViewById(R.id.horizontalControll);
horizontalControll.setOnHorControllListener(new MyOnHorControllListener(this,playerHolder));
}
private void initData() {
if (mPlayBean!=null){
livePlayerPresenterImpl.enterRoom(mPlayBean.uid);
}
Glide.with(this)
.load(mPlayBean.thumb)
.fitCenter()
.into(bgImage);
verticalControll.setData(mPlayBean);
}
@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();
Debug.stopMethodTracing();
}
@Override
protected void toPrepare() {
if (playerHolder!=null)
playerHolder.prepare();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (getRequestedOrientation()==ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){
//portrait
}else {
//landscape
}
}
@Override
public void setRequestedOrientation(int requestedOrientation) {
super.setRequestedOrientation(requestedOrientation);
if (requestedOrientation==ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){
isVertical=true;
verticalControll.onCreate();
horizontalControll.onDestroy();
}else {
isVertical=false;
horizontalControll.onCreate();
verticalControll.onDestroy();
}
}
@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.setVisibility(View.GONE);
bgImage.animate().alpha(0).setDuration(1000).start();
}
@Override
public void onPlayePause() {
}
@Override
public void onRoomData(JSONObject roomJson) {
mRoomDataController = new RoomDataController(roomJson);
mPlayerPath = mRoomDataController.getPlayerPath(0);
if (playerHolder==null&&mPlayerPath!=null){
playerHolder = new LivePlayerHolder(this,mSurfaceView,mCodec,mPlayerPath);
playerHolder.startPlayer();
}
}
@Override
public void onBackPressed() {
if (getRequestedOrientation()==ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
ViewGroup.LayoutParams params =
(ViewGroup.LayoutParams) mSurfaceView.getLayoutParams();
params.width=mPortWidth;
params.height=mPortHeight;
ViewGroup.LayoutParams mStatusbarParams = mStatusbar.getLayoutParams();
mStatusbarParams.height= (int) (getResources().getDimension(R.dimen.status_bar_height)+0.5f);
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
// float dimension = getResources().getDimension(R.dimen.status_bar_height);
// params.topMargin= (int) dimension;
return;
}
if (playerHolder!=null)
playerHolder.release();
super.onBackPressed();
}
@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;
Log.e("metrics","heightPixels"+heightPixels);
Log.e("metrics","widthPixels"+widthPixels);
ViewGroup.LayoutParams params =
(ViewGroup.LayoutParams) mSurfaceView.getLayoutParams();
int height = params.height;
int width = params.width;
//status bar
ViewGroup.LayoutParams mStatusbarParams = mStatusbar.getLayoutParams();
mStatusbarParams.height=0;
getWindow().getDecorView().setSystemUiVisibility(View.INVISIBLE);
Log.e("mSurfaceView","width"+width);
Log.e("mSurfaceView","height"+height);
mPortWidth=width;
mPortHeight=height;
params.width=widthPixels;
params.height=heightPixels;
// mSurfaceView.setLayoutParams(params);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
LogUtil.i("TOUCH "+isVertical);
verticalControll.onTouchEvent(isVertical,event);
horizontalControll.onTouchEvent(isVertical,event);
return false;
}
}