Повреждение видео 5-го уровня при переходе на полноэкранный режим

В настоящее время я работаю над приложением с портретом ориентации экрана, и у меня есть 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) 

EDIT: У меня есть эта строка в моем манифесте:

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

Solutions Collecting From Web of "Повреждение видео 5-го уровня при переходе на полноэкранный режим"

Когда вы переключаете ориентацию, приложение сбрасывает ее самостоятельно, начиная с события oncreate. Это просто не меняет высоту, ширину и родственные вещи. Вот почему вы получаете исключение null, один из созданного вами элемента управления на данный момент не существует. Возможно, HTML5View.

Что вам нужно сделать, так это следить за положением видео и в случае переключения перезагружать все элементы управления в соответствии с последней позицией.

Вы можете попробовать изменить ориентацию с помощью Manifest, добавив это в свою активность:

 android:configChanges="orientation|screenLayout" 

У меня была такая же проблема, но это сработало для меня.