在播放优酷视频, 点击全屏的时候, 会黑屏, 而不显示需要全屏的view

试过各种方法, 发现有一些细节需要注意:

1. demo的Manifest Activity需要设置为: 全屏, 横屏

android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"

android:screenOrientation="landscape" />注意: 此处如果不设置为 横屏 点击全屏也会失败的

有的说播放flash是需要在Activity添加硬件加速的属性, 这个demo是在程序判断, 所以没有添加

2. 添加权限:

3. 退出视频播放会出现视频还没停止的问题:

@Override

public void onPause() {// 继承自Activity

super.onPause();

mWebView.onPause();

}

@Override

public void onResume() {// 继承自Activity

super.onResume();

mWebView.onResume();

}

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_BACK

&& event.getAction() == KeyEvent.ACTION_DOWN) {

mWebView.loadData("", "text/html; charset=UTF-8", null);

finish();

return true;

}

return super.onKeyDown(keyCode, event);

}

当按下返回时, 设置Webview加载空

代码:

xml文件: act_flashplay.xml

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/fullscreen_custom_content"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:visibility="gone" />

android:id="@+id/main_content"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/webview_player"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:scrollbars="none" />

java文件: ActFlashPlay.java

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.webkit.WebChromeClient;

import android.webkit.WebSettings;

import android.webkit.WebSettings.PluginState;

import android.webkit.WebView;

import android.webkit.WebViewClient;

import android.widget.FrameLayout;

import com.example.myalldemo.R;

public class ActFlashPlay extends Activity {

private FrameLayout mFullscreenContainer;

private FrameLayout mContentView;

private View mCustomView = null;

private WebView mWebView;

private String s = "

swf"

+ "

+ " width=\"80%\" height=\"80%\" align=\"middle\" allowScriptAccess=\"always\""

+ " allowFullScreen=\"true\" wmode=\"transparent\" "

+ "type=\"application/x-shockwave-flash\">

";

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.act_flashplay);

initViews();

initWebView();

if (getPhoneAndroidSDK() >= 14) {// 4.0 需打开硬件加速

getWindow().setFlags(0x1000000, 0x1000000);

}

mWebView.loadData(s, "text/html; charset=UTF-8", null);

//mWebView.loadUrl("file:///android_asset/1234.html");

}

private void initViews() {

mFullscreenContainer = (FrameLayout) findViewById(R.id.fullscreen_custom_content);

mContentView = (FrameLayout) findViewById(R.id.main_content);

mWebView = (WebView) findViewById(R.id.webview_player);

}

private void initWebView() {

WebSettings settings = mWebView.getSettings();

settings.setJavaScriptEnabled(true);

settings.setJavaScriptCanOpenWindowsAutomatically(true);

settings.setPluginState(PluginState.ON);

// settings.setPluginsEnabled(true);

settings.setAllowFileAccess(true);

settings.setLoadWithOverviewMode(true);

mWebView.setWebChromeClient(new MyWebChromeClient());

mWebView.setWebViewClient(new MyWebViewClient());

}

class MyWebChromeClient extends WebChromeClient {

private CustomViewCallback mCustomViewCallback;

private int mOriginalOrientation = 1;

@Override

public void onShowCustomView(View view, CustomViewCallback callback) {

// TODO Auto-generated method stub

onShowCustomView(view, mOriginalOrientation, callback);

super.onShowCustomView(view, callback);

}

public void onShowCustomView(View view, int requestedOrientation,

WebChromeClient.CustomViewCallback callback) {

if (mCustomView != null) {

callback.onCustomViewHidden();

return;

}

if (getPhoneAndroidSDK() >= 14) {

mFullscreenContainer.addView(view);

mCustomView = view;

mCustomViewCallback = callback;

mOriginalOrientation = getRequestedOrientation();

mContentView.setVisibility(View.INVISIBLE);

mFullscreenContainer.setVisibility(View.VISIBLE);

mFullscreenContainer.bringToFront();

setRequestedOrientation(mOriginalOrientation);

}

}

public void onHideCustomView() {

mContentView.setVisibility(View.VISIBLE);

if (mCustomView == null) {

return;

}

mCustomView.setVisibility(View.GONE);

mFullscreenContainer.removeView(mCustomView);

mCustomView = null;

mFullscreenContainer.setVisibility(View.GONE);

try {

mCustomViewCallback.onCustomViewHidden();

} catch (Exception e) {

}

// Show the content view.

setRequestedOrientation(mOriginalOrientation);

}

}

class MyWebViewClient extends WebViewClient {

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

// TODO Auto-generated method stub

view.loadUrl(url);

return super.shouldOverrideUrlLoading(view, url);

}

}

public static int getPhoneAndroidSDK() {

// TODO Auto-generated method stub

int version = 0;

try {

version = Integer.valueOf(android.os.Build.VERSION.SDK);

} catch (NumberFormatException e) {

e.printStackTrace();

}

return version;

}

@Override

public void onPause() {// 继承自Activity

super.onPause();

mWebView.onPause();

}

@Override

public void onResume() {// 继承自Activity

super.onResume();

mWebView.onResume();

}

}

注: demo中的方法是loadUrl, load的是asset文件夹下的1234.html, 可以播放视频, 同样的,上面代码中用loadData也是可以的

大家可以试一试, 有什么问题可以一起讨论

android 优酷 自动全屏播放,Android用Webview播放优酷视频全屏问题相关推荐

  1. 爱奇艺android投屏,手机爱奇艺APP怎么将视频投屏上笔记本电脑?

    频投屏上笔记本电脑?直接在笔记本电脑就搜索出来了呀~~ 1.确保手机和电视机都连接在同一局域网内.2.打开电视机,进入系统设置界面,找到通用设置选项下的多屏互动功能,按确认键进入,将多屏互动功能打开, ...

  2. android 恢复出厂 自动恢复文件夹,Android恢复出厂设置

    恢复出厂设置核心代码:sendBroadcast(new Intent("android.intent.action.MASTER_CLEAR")); 即发送一个广播,需要在And ...

  3. java手机端播放.swf_Android使用WebView播放flash的方法

    本文实例讲述了Android使用WebView播放flash及判断是否安装flash插件的方法.分享给大家供大家参考.具体实现方法如下: 一.问题: 最近帮一个同学做一个项目,断断续续的一些知识点记录 ...

  4. 录屏软件哪个好?五款免费视频录屏软件

    现如今在日常生活中都可以使用得上录屏软件,比如线上会议直播.线上教程课程.网课直播.玩游戏精彩瞬间等等:在互联网众多推荐下,到底录屏软件哪个好?今天小编在这里给大家分享五款免费视频录屏软件,有需要的朋 ...

  5. android蓝牙配对 自动联接,如何实现android蓝牙开发 自动配对连接,并不弹出提示框...

    之前做一个android版的蓝牙 与血压计通讯的项目,遇到最大的难题就是自动配对. 上网查资料说是用反射createBond()和setPin(),但测试时进行配对还是会出现提示,但配对是成功了 我就 ...

  6. android 短信自动备份软件,从Android设备备份短信的5大工具

    您是否正在寻找2020中最好的数据传输工具? 然后再看看. 我们将向您展示最佳数据传输工具列表 备份短信 在Android上 您可以使用以下方法安全地保存您的个人文件. 部分1. 如何使用共享备份文本 ...

  7. 手机android怎么关闭自动更新,如何停止Android手机上的应用程序自动更新

    有几个原因可以阻止Play Store自动更新应用程序. 也许新的更新破坏了功能,或者您需要跟踪您的数据使用情况,并且不想通过蜂窝数据LIM. 不管是什么原因,这里是如何阻止自动更新发生在你的Andr ...

  8. android开发蓝牙自动连接电脑上,android – 配对设备的蓝牙自动连接

    我是新来的,我已经阅读了很多你的帖子,但仍然没有找到问题的解决方案. 我正在为Android 2.2编写一个使用蓝牙连接到终端设备的应用程序. 我有一个配对设备列表,我可以将我的Android平板电脑 ...

  9. android开发蓝牙自动连接电脑上,Android蓝牙开发之自动连接设备

    自动连接使用的是SharedPreferences这个来解决. private void Automaticconnection() { SharedPreferences sp = getShare ...

  10. 节操播放器——视频充满布局、监听播放结束(循环播放)、隐藏进度条等

    1.导包:目前测了几个版本的,下面这个版本可以实现充满布局. implementation 'cn.jzvd:jiaozivideoplayer:6.2.4' 2.XML部分: <cn.jzvd ...

最新文章

  1. seq2seq与Attention机制
  2. node java php_服务端I/O性能:Node、PHP、Java、Go的对比
  3. 通过btrace排查线上频繁Full GC的case
  4. cdmp不停增长 oracle_系统内存不足导致oracle进程被误杀terminating the instance due to error 822...
  5. python是一种语言还是一个软件-Python还是一种
  6. [HIVE] shell调用hive客户端导致nohup后台进程stopped
  7. 10.5 0819吉米牛逼
  8. vue 全家桶 - 前端工程化
  9. 刚刚!老干妈发布警方通报:3人伪造印章与腾讯签协议已刑拘,腾讯:辣椒酱不香了...
  10. plc计算机辅助编程设计方法,国产plc怎么编程
  11. Gluster源代码阅读3--MGMT Xlator
  12. (iphone铃声制作)i39 for mac破解版永久激活方法
  13. c语言程序负数,C程序,检查数字是正数还是负数
  14. diagnosing error in object detectors 浅析
  15. 微信小程序--企业认证篇
  16. ubutun 滑动 触控板_Ubuntu触控板支持多指手势和滑动切换应用
  17. mysql修改字段类型语句
  18. 小米公司在互联网的地位怎么样
  19. 帝国html5图片站模板,html5响应式自适应帝国CMS整站模板源码瀑布流文章图片资讯文章站...
  20. Error: Cannot find module ‘process-nextick-args‘,error:0308010C:digital envelope routines::unsupport

热门文章

  1. 中英文说明书丨艾美捷CD8α体内抗体相关研究方案
  2. docker stop卡住的解决方案
  3. 360和QQ掐架,你支持谁?
  4. 程序员与产品经理掐架图鉴
  5. linux 显卡驱动无法安装程序,linux系统下安装显卡驱动程序
  6. echarts中的字体,自适应无法生效
  7. 如何删除Word空白页,这四种方法轻松搞定
  8. Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
  9. Radmin LAN 深受 600 万用户的信任,免费的外网连接工具
  10. 服务器内部复制文件慢,对文件复制速度较慢的问题进行Windows