ジェリー ビーンズ アンドロイド デバイス (私が信じている ICS) では、アンドロイド WebView 内のフレーム内の YouTube ビデオが、何週間も前にアプリで機能しなくなりました。私は最終的に、何がそれらの機能を妨げているのかについての手がかりを見つけました. ビデオを機能させるには、マニフェストに次のように設定する必要があるようです。
android:targetSdkVersion="8"
android:hardwareAccelerated="true"
supports-screens android:anyDensity="false"
また、フルスクリーンのYouTubeボタンをクリックすると、ビデオは正常に機能します(ただし、フルスクリーンは使用したくありません)。
1) と 2) は問題ではありません。マニフェストで設定できます (ただし、ハードウェア アクセラレーションが必要な理由はわかりません)。しかし、3) できません (さまざまな理由で)。
anyDensity が false に設定されている理由と、回避策があるかどうかを知っている人はいますか?
問題を再現するための 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)。
ありがとう。
ローラン