Drehen Sie den Bildschirm, wenn ein HTML5-Video im Vollbildmodus abgespielt wirdAndroid

Forum für diejenigen, die für Android programmieren
Guest
 Drehen Sie den Bildschirm, wenn ein HTML5-Video im Vollbildmodus abgespielt wird

Post by Guest »

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:

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();
}
}
}
}
Wie Sie in der onCreate-Methode sehen können, habe ich die Zeile eingefügt:

Code: Select all

this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Ich denke, mit diesem Teil kann ich mein Problem lösen:

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 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!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post