Drehen Sie den Bildschirm, wenn ein HTML5-Video im Vollbildmodus abgespielt wird
Posted: 16 Jan 2025, 03:51
Ich bin ein Junior in der Android-Entwicklung (ich mache das in meiner Freizeit). Ich bin noch nicht gut und erfahren genug. Es tut mir leid, wenn ich Schwierigkeiten habe, Ihre Antwort zu verstehen.
Was mache ich also?
Ich erstelle eine einfache Android-App, die nur eine Webansicht zum Laden meiner Website ist.
Meine Website ist nur ein zufälliger YouTube-Videoplayer.
Zuerst hatte ich das Problem, HTML5-Videos abzuspielen Vollbild, das ich mit VideoEnabledWebView gelöst habe
Meine App ist also genau die gleiche wie VideoEnabledWebView.
Was ist mein Problem?
Ich blockiere die Bildschirmdrehung in meiner App . Nur „Portrait“-Modus und das gelingt mir.
Aber wenn ich ein Video im Vollbildmodus abspiele, kann ich nicht im Querformat sein. Ich verstehe warum, aber ich kann keine Lösung oder einen Hack finden, um das zu tun.
Ich möchte den Bildschirm also nur dann im Querformat drehen, wenn ich das Video im Vollbildmodus abspiele.< /p>
Zuerst ist hier meine MainActivity.java:
Wie Sie in der onCreate-Methode sehen können, habe ich die Zeile eingefügt:
Ich denke, mit diesem Teil kann ich mein Problem lösen:
Ich habe versucht, setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); unter if(fullscreen) einzufügen, aber das funktioniert nicht. Die App wechselt für eine halbe Sekunde ins Querformat und die Webansicht lädt die gesamte Seite neu.
Ich habe viel bei Google und StackOverflow gesucht, aber nichts Hilfreiches gefunden.
Nur dieser Beitrag hat das gleiche Problem wie meiner, aber darauf gibt es keine Antworten.
Vielen Dank im Voraus für Ihre Hilfe!
Was mache ich also?
Ich erstelle eine einfache Android-App, die nur eine Webansicht zum Laden meiner Website ist.
Meine Website ist nur ein zufälliger YouTube-Videoplayer.
Zuerst hatte ich das Problem, HTML5-Videos abzuspielen Vollbild, das ich mit VideoEnabledWebView gelöst habe
Meine App ist also genau die gleiche wie VideoEnabledWebView.
Was ist mein Problem?
Ich blockiere die Bildschirmdrehung in meiner App . Nur „Portrait“-Modus und das gelingt mir.
Aber wenn ich ein Video im Vollbildmodus abspiele, kann ich nicht im Querformat sein. Ich verstehe warum, aber ich kann keine Lösung oder einen Hack finden, um das zu tun.
Ich möchte den Bildschirm also nur dann im Querformat drehen, wenn ich das Video im Vollbildmodus abspiele.< /p>
Zuerst ist hier meine MainActivity.java:
Code: Select all
public class MainActivity extends ActionBarActivity
{
private VideoEnabledWebView webView;
private VideoEnabledWebChromeClient webChromeClient;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
webView = (VideoEnabledWebView)findViewById(R.id.webView);
View nonVideoLayout = findViewById(R.id.nonVideoLayout); // Your own view, read class comments
ViewGroup videoLayout = (ViewGroup)findViewById(R.id.videoLayout);
View loadingView = getLayoutInflater().inflate(R.layout.view_loading_video, null); // Your own view, read class comments
webChromeClient = new VideoEnabledWebChromeClient(nonVideoLayout, videoLayout, loadingView, webView) // See all available constructors...
{
@Override
public void onProgressChanged(WebView view, int progress)
{
}
};
webChromeClient.setOnToggledFullscreen(new VideoEnabledWebChromeClient.ToggledFullscreenCallback()
{
@Override
public void toggledFullscreen(boolean fullscreen)
{
if (fullscreen)
{
WindowManager.LayoutParams attrs = getWindow().getAttributes();
attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
attrs.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
getWindow().setAttributes(attrs);
if (android.os.Build.VERSION.SDK_INT >= 14)
{
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
}
}
else
{
WindowManager.LayoutParams attrs = getWindow().getAttributes();
attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
attrs.flags &= ~WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
getWindow().setAttributes(attrs);
if (android.os.Build.VERSION.SDK_INT >= 14)
{
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
}
}
}
});
webView.setWebChromeClient(webChromeClient);
webView.setWebViewClient(new myWebViewClient());
webView.loadUrl("https://www.awesomekraken.com/fr");
}
public class myWebViewClient extends WebViewClient
{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
view.loadUrl(url);
return true;
}
}
@Override
public void onBackPressed()
{
if (!webChromeClient.onBackPressed())
{
if (webView.canGoBack())
{
webView.goBack();
}
else
{
super.onBackPressed();
}
}
}
}
Code: Select all
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Code: Select all
webChromeClient.setOnToggledFullscreen(new VideoEnabledWebChromeClient.ToggledFullscreenCallback()
{
@Override
public void toggledFullscreen(boolean fullscreen)
{
if (fullscreen)
{
WindowManager.LayoutParams attrs = getWindow().getAttributes();
attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
attrs.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
getWindow().setAttributes(attrs);
if (android.os.Build.VERSION.SDK_INT >= 14)
{
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
}
}
else
{
WindowManager.LayoutParams attrs = getWindow().getAttributes();
attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
attrs.flags &= ~WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
getWindow().setAttributes(attrs);
if (android.os.Build.VERSION.SDK_INT >= 14)
{
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
}
}
}
});
Ich habe viel bei Google und StackOverflow gesucht, aber nichts Hilfreiches gefunden.
Nur dieser Beitrag hat das gleiche Problem wie meiner, aber darauf gibt es keine Antworten.
Vielen Dank im Voraus für Ihre Hilfe!