gpt4 book ai didi

android - 全屏时 HTML 5 视频崩溃

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:45:39 25 4
gpt4 key购买 nike

我目前正在开发一个屏幕方向为纵向的应用程序,我有需要全屏支持的 html 5 视频。我向 webview 添加了一个 WebChromeClient,覆盖了一些方法。当我坚持纵向时一切正常,但是当我在全屏时尝试将方向切换为横向时,我遇到了崩溃。有什么线索吗?

覆盖的方法:

public void onShowCustomView(View view, CustomViewCallback callback) {
super.onShowCustomView(view, callback);
if (mCustomViewContainer != null) {
callback.onCustomViewHidden();
return;
}
if(interfazWeb==null)
interfazWeb = (FragTabActivity) getActivity();
if (view instanceof FrameLayout) {
mCustomViewContainer = (FrameLayout) view;
mCustomViewCallback = callback;
interfazWeb.getCustomContentView().setVisibility(View.INVISIBLE);
interfazWeb.addContentView(mCustomViewContainer, new FrameLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT, Gravity.CENTER));
interfazWeb.setBackDelegate(new BackDelegate(){

public boolean shouldOverrideBackButton() {
if(mCustomViewCallback!=null){//first calling onHideCustomView()
onHideCustomView();
return true;
}
return false;
}

});
mCustomViewContainer.bringToFront();
//interfazWeb.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
}

@Override
public void onHideCustomView() {
// TODO Auto-generated method stub
if(interfazWeb==null)
interfazWeb = (FragTabActivity) getActivity();
if(mCustomViewContainer!=null){
ViewGroup parent = (ViewGroup) interfazWeb.getCustomContentView().getParent();
if(parent!=null){
parent.removeView(mCustomViewContainer);
interfazWeb.getCustomContentView().setVisibility(View.VISIBLE);
}
}
if(mCustomViewCallback!=null){
mCustomViewCallback.onCustomViewHidden();
mCustomViewCallback = null;
}
//interfazWeb.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

@Override
public Bitmap getDefaultVideoPoster() {
// TODO Auto-generated method stub
return Bitmap.createBitmap(1, 1, Config.ARGB_8888);
}

@Override
public View getVideoLoadingProgressView() {
// TODO Auto-generated method stub
return new ProgressBar((Context) getActivity());
}

日志说:

10-31 11:09:36.336: E/AndroidRuntime(8098): java.lang.NullPointerException
10-31 11:09:36.336: E/AndroidRuntime(8098): at android.webkit.HTML5VideoView.isPlaying(HTML5VideoView.java:122)
10-31 11:09:36.336: E/AndroidRuntime(8098): at android.webkit.HTML5VideoViewProxy$VideoPlayer.isPlaying(HTML5VideoViewProxy.java:253)
10-31 11:09:36.336: E/AndroidRuntime(8098): at android.webkit.HTML5VideoViewProxy.handleMessage(HTML5VideoViewProxy.java:402)
10-31 11:09:36.336: E/AndroidRuntime(8098): at android.os.Handler.dispatchMessage(Handler.java:99)
10-31 11:09:36.336: E/AndroidRuntime(8098): at android.os.Looper.loop(Looper.java:137)
10-31 11:09:36.336: E/AndroidRuntime(8098): at android.app.ActivityThread.main(ActivityThread.java:4758)
10-31 11:09:36.336: E/AndroidRuntime(8098): at java.lang.reflect.Method.invokeNative(Native Method)
10-31 11:09:36.336: E/AndroidRuntime(8098): at java.lang.reflect.Method.invoke(Method.java:511)
10-31 11:09:36.336: E/AndroidRuntime(8098): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
10-31 11:09:36.336: E/AndroidRuntime(8098): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-31 11:09:36.336: E/AndroidRuntime(8098): at dalvik.system.NativeStart.main(Native Method)

编辑:我的 list 中有这一行:

android:configChanges="keyboardHidden|orientation|locale|screenLayout"

最佳答案

当您切换方向时,应用程序会从 oncreate 事件开始自行重置。它不只是简单地改变高度和宽度以及相关的东西。这就是为什么你得到一个空异常,你创建的控件之一这次不存在。可能是 HTML5View。

您应该做的是跟踪视频位置,并在切换时根据最后一个位置重新加载所有控件。

关于android - 全屏时 HTML 5 视频崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13156707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com