- live播放出现点击没反应bug修复

- 预览窗口播放自动全屏bug修复
- 新增视频横竖屏手动切换
pull/58/head
okjackcaptain 3 years ago
parent 259a56e1a1
commit 89732792d3
  1. 5
      .gitignore
  2. 2
      app/src/main/AndroidManifest.xml
  3. 42
      app/src/main/java/com/github/tvbox/osc/player/controller/VodController.java
  4. 23
      app/src/main/res/layout/player_vod_control_view.xml
  5. 45
      player/src/main/java/xyz/doikki/videoplayer/controller/BaseVideoController.java
  6. 18
      player/src/main/java/xyz/doikki/videoplayer/controller/ControlWrapper.java
  7. 17
      player/src/main/java/xyz/doikki/videoplayer/player/VideoView.java
  8. 2
      player/src/main/java/xyz/doikki/videoplayer/player/VideoViewConfig.java

5
.gitignore vendored

@ -1,3 +1,7 @@
# windows thumbnail cache
Thumbs.db
# Mac DS_Store Files
.DS_Store
# Built application files
*.apk
*.aar
@ -46,6 +50,7 @@ captures/
.idea/assetWizardSettings.xml
.idea/dictionaries
.idea/libraries
.idea/shelf
# Android Studio 3 in .gitignore file.
.idea/caches
.idea/modules.xml

@ -41,9 +41,11 @@
android:screenOrientation="sensorLandscape" />
<activity
android:name=".ui.activity.DetailActivity"
android:configChanges="orientation|screenSize"
android:screenOrientation="sensorLandscape" />
<activity
android:name=".ui.activity.PlayActivity"
android:configChanges="orientation|screenSize"
android:screenOrientation="sensorLandscape" />
<activity
android:name=".ui.activity.PushActivity"

@ -1,6 +1,7 @@
package com.github.tvbox.osc.player.controller;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.os.Handler;
import android.os.Message;
import android.view.KeyEvent;
@ -27,6 +28,7 @@ import com.github.tvbox.osc.ui.dialog.SelectDialog;
import com.github.tvbox.osc.util.FastClickCheckUtil;
import com.github.tvbox.osc.util.HawkConfig;
import com.github.tvbox.osc.util.PlayerHelper;
import com.github.tvbox.osc.util.ScreenUtils;
import com.github.tvbox.osc.util.SubtitleHelper;
import com.orhanobut.hawk.Hawk;
import com.owen.tvrecyclerview.widget.TvRecyclerView;
@ -125,6 +127,7 @@ public class VodController extends BaseController {
public SimpleSubtitleView mSubtitleView;
TextView mZimuBtn;
TextView mAudioTrackBtn;
TextView mLandscapePortraitBtn;
Handler myHandle;
Runnable myRunnable;
@ -185,11 +188,11 @@ public class VodController extends BaseController {
mSubtitleView = findViewById(R.id.subtitle_view);
mZimuBtn = findViewById(R.id.zimu_select);
mAudioTrackBtn = findViewById(R.id.audio_track_select);
mLandscapePortraitBtn = findViewById(R.id.landscape_portrait);
int subtitleTextSize = SubtitleHelper.getTextSize(mActivity);
mSubtitleView.setTextSize(subtitleTextSize);
initSubtitleInfo();
myHandle=new Handler();
myHandle = new Handler();
myRunnable = new Runnable() {
@Override
public void run() {
@ -584,6 +587,39 @@ public class VodController extends BaseController {
hideBottom();
}
});
mLandscapePortraitBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
FastClickCheckUtil.check(view);
setLandscapePortrait();
hideBottom();
}
});
initLandscapePortraitBtnInfo();
}
void initLandscapePortraitBtnInfo() {
double screenSqrt = ScreenUtils.getSqrt(mActivity);
if (screenSqrt < 20.0) {
mLandscapePortraitBtn.setVisibility(View.VISIBLE);
mLandscapePortraitBtn.setText("竖屏");
}
}
void setLandscapePortrait() {
int requestedOrientation = mActivity.getRequestedOrientation();
if (requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE || requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE || requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE) {
mLandscapePortraitBtn.setText("横屏");
mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
} else if (requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT || requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT || requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT) {
mLandscapePortraitBtn.setText("竖屏");
mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
}
}
void initSubtitleInfo() {
int subtitleTextSize = SubtitleHelper.getTextSize(mActivity);
mSubtitleView.setTextSize(subtitleTextSize);
}
@Override

@ -5,10 +5,10 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
<LinearLayout
android:id="@+id/tv_top_l_container"
android:layout_width="720dp"
android:layout_height="match_parent"
android:layout_height="wrap_content"
android:tag="tv_top_container"
android:visibility="gone"
tools:visibility="visible"
@ -44,12 +44,12 @@
android:textColor="@android:color/white"
android:textSize="@dimen/ts_20" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/tv_top_r_container"
android:layout_width="120dp"
android:layout_height="match_parent"
android:layout_height="wrap_content"
android:tag="tv_top_container"
android:visibility="gone"
tools:visibility="visible"
@ -348,6 +348,21 @@
android:text="音轨"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_20"/>
<TextView
android:id="@+id/landscape_portrait"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:padding="@dimen/vs_10"
android:visibility="gone"
android:text="横竖屏"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_20"/>
</LinearLayout>
</HorizontalScrollView>

@ -396,7 +396,7 @@ public abstract class BaseVideoController extends FrameLayout
* 横竖屏切换
*/
protected void toggleFullScreen() {
mControlWrapper.toggleFullScreenByVideoSize(mActivity);
mControlWrapper.toggleFullScreen(mActivity);
}
/**
@ -508,47 +508,32 @@ public abstract class BaseVideoController extends FrameLayout
if (mIsLocked) return;
//没有开启设备方向监听的情况
if (!mEnableOrientation) return;
int[] size = mControlWrapper.getVideoSize();
int width = size[0];
int height = size[1];
int o = activity.getRequestedOrientation();
if (width < height && o != ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
mControlWrapper.replay(true);
}
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
mControlWrapper.stopFullScreen();
}
/**
* 横屏
*/
protected void onOrientationLandscape(Activity activity) {
int[] size = mControlWrapper.getVideoSize();
int width = size[0];
int height = size[1];
if (width > height) {
if (mControlWrapper.isFullScreen()) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
handlePlayerStateChanged(VideoView.PLAYER_FULL_SCREEN);
} else {
mControlWrapper.startFullScreen();
}
}
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
if (mControlWrapper.isFullScreen()) {
handlePlayerStateChanged(VideoView.PLAYER_FULL_SCREEN);
} else {
mControlWrapper.startFullScreen();
}
}
/**
* 反向横屏
*/
protected void onOrientationReverseLandscape(Activity activity) {
int[] size = mControlWrapper.getVideoSize();
int width = size[0];
int height = size[1];
if (width > height) {
if (mControlWrapper.isFullScreen()) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
handlePlayerStateChanged(VideoView.PLAYER_FULL_SCREEN);
} else {
mControlWrapper.startFullScreen();
}
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
if (mControlWrapper.isFullScreen()) {
handlePlayerStateChanged(VideoView.PLAYER_FULL_SCREEN);
} else {
mControlWrapper.startFullScreen();
}
}

@ -11,15 +11,15 @@ import androidx.annotation.NonNull;
* 并对部分api做了封装方便使用
*/
public class ControlWrapper implements MediaPlayerControl, IVideoController {
private MediaPlayerControl mPlayerControl;
private IVideoController mController;
public ControlWrapper(@NonNull MediaPlayerControl playerControl, @NonNull IVideoController controller) {
mPlayerControl = playerControl;
mController = controller;
}
@Override
public void start() {
mPlayerControl.start();
@ -186,10 +186,16 @@ public class ControlWrapper implements MediaPlayerControl, IVideoController {
int[] size = getVideoSize();
int width = size[0];
int height = size[1];
if (width < height) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
if (isFullScreen()) {
stopFullScreen();
if (width > height) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
} else {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
startFullScreen();
if (width > height) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
}
}

@ -5,7 +5,6 @@ import android.content.ContentResolver;
import android.content.Context;
import android.content.res.AssetFileDescriptor;
import android.content.res.TypedArray;
import android.content.pm.ActivityInfo;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.net.Uri;
@ -733,14 +732,6 @@ public class VideoView<P extends AbstractPlayer> extends FrameLayout
//将播放器视图添加到DecorView中即实现了全屏
decorView.addView(mPlayerContainer);
Activity activity = getActivity();
int[] size = getVideoSize();
int width = size[0];
int height = size[1];
if (width < height) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
setPlayerState(PLAYER_FULL_SCREEN);
}
@ -788,14 +779,6 @@ public class VideoView<P extends AbstractPlayer> extends FrameLayout
decorView.removeView(mPlayerContainer);
this.addView(mPlayerContainer);
Activity activity = getActivity();
int[] size = getVideoSize();
int width = size[0];
int height = size[1];
if (width < height) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
setPlayerState(PLAYER_NORMAL);
}

@ -60,7 +60,7 @@ public class VideoViewConfig {
private boolean mIsEnableLog;
private boolean mPlayOnMobileNetwork = true;
private boolean mEnableOrientation = true;
private boolean mEnableOrientation;
private boolean mEnableAudioFocus = true;
private ProgressManager mProgressManager;
private PlayerFactory mPlayerFactory;

Loading…
Cancel
Save