PlayerLiveFragment.java 4.17 KB
package com.cnlive.gundam.video.fragment;

import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.databinding.DataBindingUtil;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.cnlive.gundam.R;
import com.cnlive.gundam.databinding.FragmentPlayerLiveBinding;
import com.cnlive.gundam.main.model.VideoListProgram;
import com.cnlive.gundam.video.fragment.chat.ChatRoomFragment;
import com.cnlive.gundam.video.model.VideoModel;
import com.cnlive.gundam.video.utils.PlayerUtils;
import com.cnlive.gundam.video.view.PlayerAccelerometerSensor;
import com.cnlive.gundam.video.view.PlayerControllerView;
import com.cnlive.libs.util.ProbeUtil;

/**
 * Created by gujun on 2017/6/27.
 */

public class PlayerLiveFragment extends Fragment implements PlayerAccelerometerSensor.ScreenOrientationListener {
    private FragmentPlayerLiveBinding binding;

    private VideoListProgram program;
    private PlayerAccelerometerSensor playerAccelerometerSensor;
    private PlayerControllerView viewById;

    public static PlayerLiveFragment newInstance(VideoListProgram program) {

        Bundle args = new Bundle();
        args.putSerializable("program", program);
        PlayerLiveFragment fragment = new PlayerLiveFragment();
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        playerAccelerometerSensor = new PlayerAccelerometerSensor(getActivity());
        playerAccelerometerSensor.setScreenOrientationListener(this);
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        binding = DataBindingUtil.inflate(inflater, R.layout.fragment_player_live, container, false);
        program = (VideoListProgram) getArguments().getSerializable("program");
        getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.contentLayout, ChatRoomFragment.newInstance(program.getChannelId()), "chatRoomFragment").commit();
        return binding.getRoot();
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        init();
    }

    private void init() {
        program = (VideoListProgram) getArguments().getSerializable("program");
        if (program == null) return;
        VideoModel model = new VideoModel(program.getTitle(), program.getChannelId(), program.getType(), program.getRates());
        binding.videoView.setVideoInfo(model);
        ProbeUtil.probeSDK("pgcLiveCount");
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        boolean isPortrait = PlayerUtils.isPortrait(getActivity());
        binding.videoView.onScreenChange(isPortrait);
        PlayerUtils.setStatusBarVisibility(getActivity(), isPortrait);
    }

    @Override
    public void onResume() {
        super.onResume();
        binding.videoView.onResume();
        playerAccelerometerSensor.register();
    }

    @Override
    public void onPause() {
        super.onPause();
        binding.videoView.onPause();
        playerAccelerometerSensor.unregister();


    }

    @Override
    public void onDestroyView() {
        binding.videoView.onDestroy();
        super.onDestroyView();
    }

    @Override
    public void onOrientationChange(int orientation) {
        if (orientation == PlayerAccelerometerSensor.ORIENTATION_PORTRAIT) {
            getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        } else if (orientation == PlayerAccelerometerSensor.ORIENTATION_LANDSCAPE) {

            getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        } else if (orientation == PlayerAccelerometerSensor.ORIENTATION_REVERSE_LANDSCAPE) {
            getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
        }

    }


}