Burada, bir arkadaşımın videoları Nexus One'da HTML olarak görüntüleme sorununu nasıl çözdüğünü ekliyorum:
Videoyu hiçbir zaman satır içinde oynatamadım. Aslında internetteki pek çok kişi, HTML'de satır içi video oynatmanın Honeycomb'dan beri desteklendiğinden açıkça bahsediyor ve biz Froyo ve Gingerbread ile kavga ediyorduk ... Ayrıca daha küçük telefonlar için tam ekran oynamanın çok doğal olduğunu düşünüyorum - aksi takdirde pek görünür değil . Yani amaç, videoyu tam ekran yapmaktı. Ancak, bu konudaki önerilen çözümler bizim için işe yaramadı - öğeye tıklamak hiçbir şeyi tetiklemedi. Ayrıca video kontrolleri gösterildi, ancak hiçbir poster gösterilmedi, bu nedenle kullanıcı deneyimi daha da tuhaftı. Yani yaptığı şey şuydu:
Yerel kodu, javascript aracılığıyla çağrılabilir olması için HTML'ye gösterin:
JavaScriptInterface jsInterface = new JavaScriptInterface(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(jsInterface, "JSInterface");
Kodun kendisi, videoyu oynatmak için yerel etkinlik olarak adlandırılan bir işleve sahipti:
public class JavaScriptInterface {
private Activity activity;
public JavaScriptInterface(Activity activiy) {
this.activity = activiy;
}
public void startVideo(String videoAddress){
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(videoAddress), "video/3gpp");
activity.startActivity(intent);
}
}
Sonra HTML'nin kendisinde, video etiketinin videoyu oynatırken çalışmasını sağlamada başarısız olmaya devam etti. Böylece, sonunda onclick
videodaki olayın üzerine yazmaya karar verdi ve gerçek oynatımı yaptı. Bu neredeyse onun için çalıştı - hiçbir poster sergilenmemesi dışında. İşte en garip kısım geliyor - etiketin niteliğini ERROR/AndroidRuntime(7391): java.lang.RuntimeException: Null or empty value for header "Host"
her belirlediğinde almaya devam etti poster
. Sonunda çok garip olan sorunu buldu source
- alt video
etiketi etikette tuttuğu ancak hiç kullanmadığı ortaya çıktı. Ve yeterince tuhaf, tam olarak bu soruna neden oluyordu. Şimdi video
bölüm tanımına bakın:
<video width="320" height="240" controls="controls" poster='poster.gif' onclick="playVideo('file:///sdcard/test.3gp');" >
Your browser does not support the video tag.
</video>
Elbette javascript işlevinin tanımını sayfanın başına da eklemeniz gerekir:
<script>
function playVideo(video){
window.JSInterface.startVideo(video);
}
</script>
Bunun tamamen HTML çözümü olmadığının farkındayım, ancak Nexus One tipi telefon için yapabildiğimizin en iyisi bu. Bu çözüm için tüm krediler Dimitar Zlatkov Dimitrov'a gidiyor.