Поворот экрана при воспроизведении видео HTML5 в полноэкранном режимеAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Поворот экрана при воспроизведении видео HTML5 в полноэкранном режиме

Сообщение Anonymous »

Я младший специалист по Android-разработке (занимаюсь этим в свободное время). Я еще недостаточно хорош и опытен. Итак, извините, если у меня могут возникнуть трудности с пониманием вашего ответа.
И что я делаю?
Я создаю простое приложение для Android, которое представляет собой всего лишь веб-просмотр для загрузки моего веб-сайта.
Мой веб-сайт — это просто случайный видеоплеер YouTube.
Сначала у меня возникла проблема с воспроизведением HTML5-видео в Полноэкранный режим, который я решил с помощью VideoEnabledWebView
Значит, мое приложение точно такое же, как VideoEnabledWebView.
В чем моя проблема?
Я блокирую поворот экрана в своем приложении . Только режим «Портрет», и мне это удается.
Но когда я воспроизвожу видео в полноэкранном режиме, я не могу находиться в альбомном режиме. Я понимаю почему, но не могу найти решение или способ сделать это.
Итак, я хотел бы повернуть экран в ландшафтном режиме, только если я воспроизвожу видео в полноэкранном режиме.< /p>
Во-первых, вот мой MainActivity.java:

Код: Выделить всё

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();
}
}
}
}
Как вы можете видеть в методе onCreate, я добавил строку:

Код: Выделить всё

this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Думаю, с помощью этой части я смогу решить свою проблему:

Код: Выделить всё

 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);
}
}

}
});
Я пытался поместить setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); под if(fullscreen), но это не сработало. Приложение переключается в альбомный режим на полсекунды, и веб-просмотр перезагружает всю страницу.
Я много искал в Google и StackOverflow, но не нашел ничего полезного.
Только в этом посте та же проблема, что и у меня, но ответов нет.
Заранее спасибо за помощь!

Подробнее здесь: https://stackoverflow.com/questions/295 ... fullscreen
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»