यहां मैंने बताया कि कैसे मेरे एक मित्र ने नेक्सस वन में HTML में वीडियो प्रदर्शित करने की समस्या को हल किया:
मैं कभी भी वीडियो प्ले इनलाइन नहीं कर पाया। वास्तव में इंटरनेट पर कई लोग स्पष्ट रूप से उल्लेख करते हैं कि एचटीएमएल में इनलाइन वीडियो प्ले का समर्थन हनीकॉम्ब के बाद से किया जाता है, और हम फ्रायो और जिंजरब्रेड के साथ लड़ रहे थे ... इसके अलावा छोटे फोन के लिए मुझे लगता है कि पूर्ण स्क्रीन खेलना बहुत स्वाभाविक है - अन्यथा ऐसा कुछ दिखाई नहीं देता है । इसलिए वीडियो को फुल स्क्रीन में ओपन करना लक्ष्य था। हालांकि, इस धागे में प्रस्तावित समाधान हमारे लिए काम नहीं किया - तत्व पर क्लिक करने से कुछ भी नहीं हुआ। इसके अलावा वीडियो नियंत्रण दिखाए गए थे, लेकिन कोई भी पोस्टर प्रदर्शित नहीं किया गया था ताकि उपयोगकर्ता अनुभव भी अजीब हो। तो उसने जो किया वह निम्न था:
जावास्क्रिप्ट के माध्यम से कॉल करने योग्य होने के लिए HTML के मूल कोड को उजागर करें:
JavaScriptInterface jsInterface = new JavaScriptInterface(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(jsInterface, "JSInterface");
कोड ही, एक फ़ंक्शन था जो वीडियो चलाने के लिए मूल गतिविधि कहा जाता है:
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"); // The Mime type can actually be determined from the file
activity.startActivity(intent);
}
}
फिर HTML में ही वह वीडियो टैग कार्य को वीडियो चलाने में विफल बना रहा। इस प्रकार, आखिरकार उसने onclick
वीडियो की घटना को अधिलेखित करने का फैसला किया , जिससे यह वास्तविक नाटक हो गया। यह लगभग उनके लिए काम करता था - बिना किसी पोस्टर के प्रदर्शित किया गया था। यहां सबसे अजीब हिस्सा आता है - वह ERROR/AndroidRuntime(7391): java.lang.RuntimeException: Null or empty value for header "Host"
हर बार poster
टैग की विशेषता सेट करने पर प्राप्त करता रहा । अंत में उन्हें यह मुद्दा मिला, जो बहुत अजीब था - यह पता चला कि उन्होंने टैग source
में सबटैग रखा था video
, लेकिन इसका इस्तेमाल कभी नहीं किया। और अजीब तरह से यह समस्या पैदा कर रहा था। अब video
अनुभाग की उसकी परिभाषा देखें :
<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>
बेशक आपको पेज के सिर में जावास्क्रिप्ट फ़ंक्शन की परिभाषा को जोड़ना होगा:
<script>
function playVideo(video){
window.JSInterface.startVideo(video);
}
</script>
मुझे लगता है कि यह विशुद्ध रूप से HTML समाधान नहीं है, लेकिन सबसे अच्छा हम Nexus One प्रकार के फोन के लिए कर पाए हैं। इस समाधान के लिए सभी क्रेडिट दिमित्र Zlatkov दिमित्रोव जाते हैं।