diff --git a/app/src/main/java/com/github/tvbox/osc/base/BaseActivity.java b/app/src/main/java/com/github/tvbox/osc/base/BaseActivity.java index 47ba0aff..64419360 100644 --- a/app/src/main/java/com/github/tvbox/osc/base/BaseActivity.java +++ b/app/src/main/java/com/github/tvbox/osc/base/BaseActivity.java @@ -31,6 +31,7 @@ import java.io.InputStreamReader; import me.jessyan.autosize.AutoSizeCompat; import me.jessyan.autosize.internal.CustomAdapt; +import xyz.doikki.videoplayer.util.CutoutUtil; /** * @author pj567 @@ -59,6 +60,7 @@ public abstract class BaseActivity extends AppCompatActivity implements CustomAd super.onCreate(savedInstanceState); setContentView(getLayoutResID()); mContext = this; + CutoutUtil.adaptCutoutAboveAndroidP(mContext, true);//设置刘海 AppManager.getInstance().addActivity(this); init(); } diff --git a/app/src/main/java/com/github/tvbox/osc/player/controller/VodController.java b/app/src/main/java/com/github/tvbox/osc/player/controller/VodController.java index 173a17ea..47157ccf 100644 --- a/app/src/main/java/com/github/tvbox/osc/player/controller/VodController.java +++ b/app/src/main/java/com/github/tvbox/osc/player/controller/VodController.java @@ -350,8 +350,8 @@ public class VodController extends BaseController { mPlayerBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { -// myHandle.removeCallbacks(myRunnable); -// myHandle.postDelayed(myRunnable, myHandleSeconds); + myHandle.removeCallbacks(myRunnable); + myHandle.postDelayed(myRunnable, myHandleSeconds); try { int playerType = mPlayerConfig.getInt("pl"); ArrayList exsitPlayerTypes = PlayerHelper.getExistPlayerTypes(); @@ -376,14 +376,15 @@ public class VodController extends BaseController { e.printStackTrace(); } mPlayerBtn.requestFocus(); + mPlayerBtn.requestFocusFromTouch(); } }); mPlayerBtn.setOnLongClickListener(new OnLongClickListener() { @Override public boolean onLongClick(View view) { -// myHandle.removeCallbacks(myRunnable); -// myHandle.postDelayed(myRunnable, myHandleSeconds); + myHandle.removeCallbacks(myRunnable); + myHandle.postDelayed(myRunnable, myHandleSeconds); FastClickCheckUtil.check(view); try { int playerType = mPlayerConfig.getInt("pl"); @@ -409,12 +410,13 @@ public class VodController extends BaseController { updatePlayerCfgView(); listener.updatePlayerCfg(); listener.replay(false); - mPlayerBtn.requestFocus(); -// hideBottom(); +// hideBottom(); } } catch (Exception e) { e.printStackTrace(); } + mPlayerBtn.requestFocus(); + mPlayerBtn.requestFocusFromTouch(); } @Override @@ -443,8 +445,8 @@ public class VodController extends BaseController { mPlayerIJKBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { -// myHandle.removeCallbacks(myRunnable); -// myHandle.postDelayed(myRunnable, myHandleSeconds); + myHandle.removeCallbacks(myRunnable); + myHandle.postDelayed(myRunnable, myHandleSeconds); try { String ijk = mPlayerConfig.getString("ijk"); List codecs = ApiConfig.get().getIjkCodes(); @@ -467,6 +469,7 @@ public class VodController extends BaseController { e.printStackTrace(); } mPlayerIJKBtn.requestFocus(); + mPlayerIJKBtn.requestFocusFromTouch(); } }); // 增加播放页面片头片尾时间重置 @@ -491,13 +494,6 @@ public class VodController extends BaseController { myHandle.removeCallbacks(myRunnable); myHandle.postDelayed(myRunnable, myHandleSeconds); try { -// int step = Hawk.get(HawkConfig.PLAY_TIME_STEP, 5); -// int st = mPlayerConfig.getInt("st"); -// st += step; -// //片头最大跳过时间10分钟 -// if (st > 60 * 10) -// st = 0; -// mPlayerConfig.put("st", st); int current = (int) mControlWrapper.getCurrentPosition(); int duration = (int) mControlWrapper.getDuration(); if (current > duration / 2) return; @@ -509,7 +505,6 @@ public class VodController extends BaseController { } } }); - // takagen99: Add long press to reset counter mPlayerTimeStartBtn.setOnLongClickListener(new OnLongClickListener() { @Override public boolean onLongClick(View view) { @@ -529,13 +524,6 @@ public class VodController extends BaseController { myHandle.removeCallbacks(myRunnable); myHandle.postDelayed(myRunnable, myHandleSeconds); try { -// int step = Hawk.get(HawkConfig.PLAY_TIME_STEP, 5); -// int et = mPlayerConfig.getInt("et"); -// et += step; -// //片尾最大跳过时间10分钟 -// if (et > 60 * 10) -// et = 0; -// mPlayerConfig.put("et", et); int current = (int) mControlWrapper.getCurrentPosition(); int duration = (int) mControlWrapper.getDuration(); if (current < duration / 2) return; @@ -560,20 +548,6 @@ public class VodController extends BaseController { return true; } }); -// mPlayerTimeStepBtn.setOnClickListener(new OnClickListener() { -// @Override -// public void onClick(View view) { -// myHandle.removeCallbacks(myRunnable); -// myHandle.postDelayed(myRunnable, myHandleSeconds); -// int step = Hawk.get(HawkConfig.PLAY_TIME_STEP, 5); -// step += 5; -// if (step > 30) { -// step = 5; -// } -// Hawk.put(HawkConfig.PLAY_TIME_STEP, step); -// updatePlayerCfgView(); -// } -// }); mZimuBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { diff --git a/app/src/main/java/com/github/tvbox/osc/ui/activity/SearchActivity.java b/app/src/main/java/com/github/tvbox/osc/ui/activity/SearchActivity.java index 413ddb59..25d253e9 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/activity/SearchActivity.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/activity/SearchActivity.java @@ -99,6 +99,7 @@ public class SearchActivity extends BaseActivity { initView(); initViewModel(); initData(); + hasKeyBoard = true; } /* @@ -138,6 +139,13 @@ public class SearchActivity extends BaseActivity { pauseRunnable.clear(); pauseRunnable = null; } + if (hasKeyBoard) { + tvSearch.requestFocus(); + tvSearch.requestFocusFromTouch(); + }else { + etSearch.requestFocus(); + etSearch.requestFocusFromTouch(); + } } private void initView() { @@ -186,6 +194,7 @@ public class SearchActivity extends BaseActivity { } catch (Throwable th) { th.printStackTrace(); } + hasKeyBoard = false; Bundle bundle = new Bundle(); bundle.putString("id", video.id); bundle.putString("sourceKey", video.sourceKey); @@ -197,6 +206,7 @@ public class SearchActivity extends BaseActivity { @Override public void onClick(View v) { FastClickCheckUtil.check(v); + hasKeyBoard = true; String wd = etSearch.getText().toString().trim(); if (!TextUtils.isEmpty(wd)) { search(wd); @@ -374,7 +384,7 @@ public class SearchActivity extends BaseActivity { private void refreshQRCode() { String address = ControlManager.get().getAddress(false); tvAddress.setText(String.format("远程搜索使用手机/电脑扫描下面二维码或者直接浏览器访问地址\n%s", address)); - ivQRCode.setImageBitmap(QRCodeGen.generateBitmap(address, 300, 300)); + ivQRCode.setImageBitmap(QRCodeGen.generateBitmap(address + "search.html", 300, 300)); } @Subscribe(threadMode = ThreadMode.MAIN) diff --git a/app/src/main/java/com/github/tvbox/osc/ui/dialog/BaseDialog.java b/app/src/main/java/com/github/tvbox/osc/ui/dialog/BaseDialog.java index f0c30ad5..fd8a1d24 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/dialog/BaseDialog.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/dialog/BaseDialog.java @@ -3,6 +3,7 @@ package com.github.tvbox.osc.ui.dialog; import android.app.Dialog; import android.content.Context; import android.os.Build; +import android.os.Bundle; import android.view.View; import android.view.WindowManager; @@ -10,6 +11,8 @@ import androidx.annotation.NonNull; import com.github.tvbox.osc.R; +import xyz.doikki.videoplayer.util.CutoutUtil; + public class BaseDialog extends Dialog { public BaseDialog(@NonNull Context context) { super(context, R.style.CustomDialogStyle); @@ -19,6 +22,12 @@ public class BaseDialog extends Dialog { super(context, customDialogStyle); } + @Override + protected void onCreate(Bundle savedInstanceState) { + CutoutUtil.adaptCutoutAboveAndroidP(this, true);//设置刘海 + super.onCreate(savedInstanceState); + } + @Override public void show() { getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE); diff --git a/app/src/main/java/com/github/tvbox/osc/util/XWalkUtils.java b/app/src/main/java/com/github/tvbox/osc/util/XWalkUtils.java index 90ed9e26..6acaf601 100644 --- a/app/src/main/java/com/github/tvbox/osc/util/XWalkUtils.java +++ b/app/src/main/java/com/github/tvbox/osc/util/XWalkUtils.java @@ -30,7 +30,7 @@ public class XWalkUtils { public static String downUrl() { // return String.format("https://download.01.org/crosswalk/releases/crosswalk/android/stable/23.53.589.4/%s/crosswalk-apks-23.53.589.4-%s.zip", getRuntimeAbi(), getRuntimeAbi()); - return String.format("http://home.jundie.top:81/xwalk/maven2/crosswalk-apks-23.53.589.4-%s.zip", getRuntimeAbi(), getRuntimeAbi()); + return String.format("http://home.jundie.top:81/xwalk/maven2/crosswalk-apks-23.53.589.4-%s.zip", getRuntimeAbi()); } public static String saveZipFile() { diff --git a/player/src/main/java/xyz/doikki/videoplayer/controller/BaseVideoController.java b/player/src/main/java/xyz/doikki/videoplayer/controller/BaseVideoController.java index b3970c4a..19ae15c6 100644 --- a/player/src/main/java/xyz/doikki/videoplayer/controller/BaseVideoController.java +++ b/player/src/main/java/xyz/doikki/videoplayer/controller/BaseVideoController.java @@ -616,7 +616,7 @@ public abstract class BaseVideoController extends FrameLayout mOrientationHelper.disable(); } if (hasCutout()) { - CutoutUtil.adaptCutoutAboveAndroidP(getContext(), false); + CutoutUtil.adaptCutoutAboveAndroidP(getContext(), true); } break; case VideoView.PLAYER_FULL_SCREEN: diff --git a/player/src/main/java/xyz/doikki/videoplayer/util/CutoutUtil.java b/player/src/main/java/xyz/doikki/videoplayer/util/CutoutUtil.java index fc8735be..5ea7fdd7 100644 --- a/player/src/main/java/xyz/doikki/videoplayer/util/CutoutUtil.java +++ b/player/src/main/java/xyz/doikki/videoplayer/util/CutoutUtil.java @@ -2,6 +2,7 @@ package xyz.doikki.videoplayer.util; import android.annotation.SuppressLint; import android.app.Activity; +import android.app.Dialog; import android.content.Context; import android.graphics.Rect; import android.os.Build; @@ -143,4 +144,19 @@ public final class CutoutUtil { } } + + /** + * 适配刘海屏,针对Android P以上系统 + */ + public static void adaptCutoutAboveAndroidP(Dialog dialog, boolean isAdapt) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + WindowManager.LayoutParams lp = dialog.getWindow().getAttributes(); + if (isAdapt) { + lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES; + } else { + lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT; + } + dialog.getWindow().setAttributes(lp); + } + } }