更换直播间视频渲染层以修复部分机型和模拟器滑动视频时白屏问题
This commit is contained in:
parent
8c0a23d39a
commit
80993c7d2d
@ -6,12 +6,12 @@ import android.content.Context;
|
|||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.SurfaceView;
|
|
||||||
|
|
||||||
import com.google.android.exoplayer2.ExoPlayer;
|
import com.google.android.exoplayer2.ExoPlayer;
|
||||||
import com.google.android.exoplayer2.MediaItem;
|
import com.google.android.exoplayer2.MediaItem;
|
||||||
import com.google.android.exoplayer2.Player;
|
import com.google.android.exoplayer2.Player;
|
||||||
import com.google.android.exoplayer2.analytics.AnalyticsListener;
|
import com.google.android.exoplayer2.analytics.AnalyticsListener;
|
||||||
|
import com.google.android.exoplayer2.ui.StyledPlayerView;
|
||||||
import com.google.android.exoplayer2.video.VideoSize;
|
import com.google.android.exoplayer2.video.VideoSize;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -23,7 +23,7 @@ public class LiveExoPlayerManager {
|
|||||||
private final int MODEL_PLAY2 = 1;//当前子播放器
|
private final int MODEL_PLAY2 = 1;//当前子播放器
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private ExoPlayer player1, player2;
|
private ExoPlayer player1, player2;
|
||||||
private SurfaceView mainView;//渲染视图
|
private StyledPlayerView mainView;//渲染视图
|
||||||
private int status = MODEL_PLAY1;
|
private int status = MODEL_PLAY1;
|
||||||
private Player.Listener listener;
|
private Player.Listener listener;
|
||||||
private boolean isSwitchUrl = false;//是否为主动切换播放器
|
private boolean isSwitchUrl = false;//是否为主动切换播放器
|
||||||
@ -42,11 +42,12 @@ public class LiveExoPlayerManager {
|
|||||||
setAnalyticsListener();
|
setAnalyticsListener();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void setListener(Player.Listener listener) {
|
public void setListener(Player.Listener listener) {
|
||||||
this.listener = listener;
|
this.listener = listener;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMainView(SurfaceView mainView) {
|
public void setMainView(StyledPlayerView mainView) {
|
||||||
this.mainView = mainView;
|
this.mainView = mainView;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -119,7 +120,8 @@ public class LiveExoPlayerManager {
|
|||||||
Player.Listener.super.onIsPlayingChanged(isPlaying);
|
Player.Listener.super.onIsPlayingChanged(isPlaying);
|
||||||
if (isPlaying) {
|
if (isPlaying) {
|
||||||
Log.i(TAG, "onIsPlayingChanged1: 播放了");
|
Log.i(TAG, "onIsPlayingChanged1: 播放了");
|
||||||
player1.setVideoSurfaceView(mainView);
|
//player1.setVideoSurfaceView(mainView);
|
||||||
|
mainView.setPlayer(player1);
|
||||||
status = MODEL_PLAY1;
|
status = MODEL_PLAY1;
|
||||||
isSwitchUrl = false;
|
isSwitchUrl = false;
|
||||||
if (listener != null) {
|
if (listener != null) {
|
||||||
@ -169,7 +171,8 @@ public class LiveExoPlayerManager {
|
|||||||
Player.Listener.super.onIsPlayingChanged(isPlaying);
|
Player.Listener.super.onIsPlayingChanged(isPlaying);
|
||||||
if (isPlaying) {
|
if (isPlaying) {
|
||||||
Log.i(TAG, "onIsPlayingChanged2: 播放了");
|
Log.i(TAG, "onIsPlayingChanged2: 播放了");
|
||||||
player2.setVideoSurfaceView(mainView);
|
//player2.setVideoSurfaceView(mainView);
|
||||||
|
mainView.setPlayer(player2);
|
||||||
status = MODEL_PLAY2;
|
status = MODEL_PLAY2;
|
||||||
isSwitchUrl = false;
|
isSwitchUrl = false;
|
||||||
if (listener != null) {
|
if (listener != null) {
|
||||||
@ -202,7 +205,8 @@ public class LiveExoPlayerManager {
|
|||||||
public void startUrl(String url) {
|
public void startUrl(String url) {
|
||||||
isSwitchUrl = true;
|
isSwitchUrl = true;
|
||||||
playBufferIndex = 0;
|
playBufferIndex = 0;
|
||||||
getNowPlayer().setVideoSurfaceView(mainView);
|
//getNowPlayer().setVideoSurfaceView(mainView);
|
||||||
|
mainView.setPlayer(getNowPlayer());
|
||||||
getNowPlayer().setMediaItem(createMediaItem(url));
|
getNowPlayer().setMediaItem(createMediaItem(url));
|
||||||
getNowPlayer().prepare();
|
getNowPlayer().prepare();
|
||||||
getNowPlayer().play();
|
getNowPlayer().play();
|
||||||
|
@ -13,7 +13,6 @@ import android.os.Looper;
|
|||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
import android.view.SurfaceView;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.ViewParent;
|
import android.view.ViewParent;
|
||||||
@ -22,13 +21,9 @@ import android.widget.ImageView;
|
|||||||
import android.widget.RelativeLayout;
|
import android.widget.RelativeLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
|
||||||
|
|
||||||
import com.google.android.exoplayer2.MediaItem;
|
|
||||||
import com.google.android.exoplayer2.PlaybackException;
|
import com.google.android.exoplayer2.PlaybackException;
|
||||||
import com.google.android.exoplayer2.Player;
|
import com.google.android.exoplayer2.Player;
|
||||||
import com.google.android.exoplayer2.Timeline;
|
import com.google.android.exoplayer2.ui.StyledPlayerView;
|
||||||
import com.google.android.exoplayer2.Tracks;
|
|
||||||
import com.google.android.exoplayer2.video.VideoSize;
|
import com.google.android.exoplayer2.video.VideoSize;
|
||||||
import com.lxj.xpopup.XPopup;
|
import com.lxj.xpopup.XPopup;
|
||||||
import com.lxj.xpopup.core.BasePopupView;
|
import com.lxj.xpopup.core.BasePopupView;
|
||||||
@ -93,7 +88,7 @@ public class LivePlayRyViewHolder extends LiveRoomPlayViewHolder {
|
|||||||
private ViewGroup mLeftContainer;
|
private ViewGroup mLeftContainer;
|
||||||
private ViewGroup mRightContainer;
|
private ViewGroup mRightContainer;
|
||||||
private RelativeLayout mPkContainer;
|
private RelativeLayout mPkContainer;
|
||||||
public static SurfaceView mVideoView;
|
public StyledPlayerView mVideoView;
|
||||||
|
|
||||||
private View mLoading, mLoading2;
|
private View mLoading, mLoading2;
|
||||||
private ImageView mCover;
|
private ImageView mCover;
|
||||||
@ -145,7 +140,7 @@ public class LivePlayRyViewHolder extends LiveRoomPlayViewHolder {
|
|||||||
mLeftContainer = (ViewGroup) findViewById(R.id.left_container);
|
mLeftContainer = (ViewGroup) findViewById(R.id.left_container);
|
||||||
mRightContainer = (ViewGroup) findViewById(R.id.right_container);
|
mRightContainer = (ViewGroup) findViewById(R.id.right_container);
|
||||||
mPkContainer = (RelativeLayout) findViewById(R.id.pk_container);
|
mPkContainer = (RelativeLayout) findViewById(R.id.pk_container);
|
||||||
mVideoView = (SurfaceView) findViewById(R.id.video_view);
|
mVideoView = (StyledPlayerView) findViewById(R.id.video_view);
|
||||||
ry_view = (FrameLayout) findViewById(R.id.ry_view);
|
ry_view = (FrameLayout) findViewById(R.id.ry_view);
|
||||||
leave = (ImageView) findViewById(R.id.leave);
|
leave = (ImageView) findViewById(R.id.leave);
|
||||||
mLoading = findViewById(R.id.loading);
|
mLoading = findViewById(R.id.loading);
|
||||||
@ -353,8 +348,8 @@ public class LivePlayRyViewHolder extends LiveRoomPlayViewHolder {
|
|||||||
public void stopPlay2() {
|
public void stopPlay2() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@Override
|
||||||
public static void setViewUP(int i) {
|
public void setViewUP(int i) {
|
||||||
if (mVideoView == null) return;
|
if (mVideoView == null) return;
|
||||||
Log.e("收", "整理" + i);
|
Log.e("收", "整理" + i);
|
||||||
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) mVideoView.getLayoutParams();
|
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) mVideoView.getLayoutParams();
|
||||||
|
@ -62,6 +62,8 @@ public abstract class LiveRoomPlayViewHolder extends AbsViewHolder implements IL
|
|||||||
this.mLiveBean = data;
|
this.mLiveBean = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setViewUP(int i){}
|
||||||
|
|
||||||
public OnMicCallback getOnMicCallback() {
|
public OnMicCallback getOnMicCallback() {
|
||||||
return onMicCallback;
|
return onMicCallback;
|
||||||
}
|
}
|
||||||
|
@ -492,17 +492,17 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.getEnterRoomInfo().getIsconnection() != null && data.getEnterRoomInfo().getIsconnection().equals("1")) {
|
if (mLivePlayViewHolder != null && data.getEnterRoomInfo().getIsconnection() != null && data.getEnterRoomInfo().getIsconnection().equals("1")) {
|
||||||
|
|
||||||
LivePlayRyViewHolder.setViewUP(1);
|
mLivePlayViewHolder.setViewUP(1);
|
||||||
|
|
||||||
}
|
}
|
||||||
if (mLiveRoomViewHolder != null) {
|
if (mLiveRoomViewHolder != null) {
|
||||||
mLiveRoomViewHolder.pkHandler = false;
|
mLiveRoomViewHolder.pkHandler = false;
|
||||||
}
|
}
|
||||||
if (pkInfo.getIntValue("ifpk") == 1 && pkInfo.getString("end_pk_time").equals("0")) {//pk开始了
|
if (mLivePlayViewHolder != null && pkInfo.getIntValue("ifpk") == 1 && pkInfo.getString("end_pk_time").equals("0")) {//pk开始了
|
||||||
|
|
||||||
LivePlayRyViewHolder.setViewUP(2);
|
mLivePlayViewHolder.setViewUP(2);
|
||||||
|
|
||||||
//pk排名数据
|
//pk排名数据
|
||||||
LivePKUserListBean livePKUserListBean = JSON.parseObject(pkInfo.getString("pk_top_users"), LivePKUserListBean.class);
|
LivePKUserListBean livePKUserListBean = JSON.parseObject(pkInfo.getString("pk_top_users"), LivePKUserListBean.class);
|
||||||
@ -526,7 +526,9 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe
|
|||||||
mLiveRoomViewHolder.pkHandler = true;
|
mLiveRoomViewHolder.pkHandler = true;
|
||||||
mLiveRoomViewHolder.initPkRank(null);
|
mLiveRoomViewHolder.initPkRank(null);
|
||||||
}
|
}
|
||||||
LivePlayRyViewHolder.setViewUP(3);
|
if(mLivePlayViewHolder != null) {
|
||||||
|
mLivePlayViewHolder.setViewUP(3);
|
||||||
|
}
|
||||||
|
|
||||||
//pk排名数据
|
//pk排名数据
|
||||||
LivePKUserListBean livePKUserListBean = JSON.parseObject(pkInfo.getString("pk_top_users"), LivePKUserListBean.class);
|
LivePKUserListBean livePKUserListBean = JSON.parseObject(pkInfo.getString("pk_top_users"), LivePKUserListBean.class);
|
||||||
@ -541,7 +543,9 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe
|
|||||||
if (mLiveRoomViewHolder != null) {
|
if (mLiveRoomViewHolder != null) {
|
||||||
mLiveRoomViewHolder.initPkRank(null);
|
mLiveRoomViewHolder.initPkRank(null);
|
||||||
}
|
}
|
||||||
LivePlayRyViewHolder.setViewUP(4);
|
if(mLivePlayViewHolder != null) {
|
||||||
|
mLivePlayViewHolder.setViewUP(4);
|
||||||
|
}
|
||||||
|
|
||||||
mLiveRoomViewHolder.UpPkBar(pkInfo.getJSONArray("userlist"), mLiveBean.getUid(), pkInfo.getIntValue("drpk_time"));
|
mLiveRoomViewHolder.UpPkBar(pkInfo.getJSONArray("userlist"), mLiveBean.getUid(), pkInfo.getIntValue("drpk_time"));
|
||||||
}
|
}
|
||||||
|
@ -7,9 +7,12 @@
|
|||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
|
||||||
<SurfaceView
|
<com.google.android.exoplayer2.ui.StyledPlayerView
|
||||||
android:id="@+id/video_view"
|
android:id="@+id/video_view"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
app:surface_type="texture_view"
|
||||||
|
app:resize_mode="zoom"
|
||||||
|
app:use_controller="false"
|
||||||
android:layout_height="match_parent" />
|
android:layout_height="match_parent" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
|
Loading…
Reference in New Issue
Block a user