在 jelly beans android 设备(我相信也是 ICS)上,android WebView 内框架中的 youtube 视频在我们的应用程序中停止工作数周前:没有视频(黑屏),但可以听到声音并看到视频控件。我终于找到了一条关于是什么阻止它们工作的线索。似乎需要在清单中设置以下内容才能使视频正常工作:
android:targetSdkVersion="8"
android:hardwareAccelerated="true"
supports-screens android:anyDensity="false"
另外,在我们单击全屏 youtube 按钮后,视频可以正常工作(但我不想使用全屏)。
1)和2)对我们来说不是问题,我们可以在清单中设置它们(但我想知道为什么需要硬件加速)。但是3)我们不能(出于不同的原因)。
有谁知道为什么 anyDensity 设置为假休息视频以及是否有任何解决方法?
有关重现问题的 apk 的一些信息: apk 是使用
清单的
android 3.0密钥提取构建的:
<uses-sdk android:minSdkVersion="1" android:targetSdkVersion="8"/>
<!-- android:hardwareAccelerated="true" -->
<application android:icon="@drawable/icon" android:label="@string/app_name" android:hardwareAccelerated="true">
<activity android:name=".TestHTML5WebView"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<supports-screens android:anyDensity="false"/>
...
用于 youtube 视频的 html 代码:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, target-densityDpi=device-dpi"/>
<script type="text/javascript" charset="utf-8">
window.onerror = function(errorMsg) {
try {
alert(errorMsg);
}
catch(err) {
alert('An expected error occurred. please try again later!');
}
}
</script>
<style type="text/css" media="screen">
body {
background: #000;
margin: 0;
padding: 0;
}
.video1 {
width: 90%;
height: 90%;
margin: 0 auto;
}
</style>
</head>
<body>
<div class="video1">
<iframe width="560" height="315" src="http://www.youtube.com/embed/hH9Kx06oO_0" frameborder="0" allowfullscreen></iframe>
</div>
</body>
</html>
要重现该问题,您可以使用http://code.google.com/p/html5webview/source/checkout中的源代码(只需确保使用本文顶部指示的值更新 manifest.xml, targetSdkVersion、hardwareAccelerated、android:anyDensity)。
谢谢。
洛朗