मैं एक आरआईए लिखने की कोशिश कर रहा हूं जिसका उपयोग मोबाइल और डेस्कटॉप ब्राउज़र दोनों पर भी किया जा सकता है। इस ऐप का एक मुख्य उद्देश्य ध्वनि बजाना है। एक्स कई हो सकते हैं (अब तक, 150+ हैं)गतिशील रूप से निर्मित ऑडियो ऑब्जेक्ट एंड्रॉइड क्रोम ब्राउज़र में नहीं खेल रहा है
एक निश्चित उपयोगकर्ता कार्रवाई पर मैं एक नया ऑडियो ऑब्जेक्ट बनाना चाहता हूं, एक निश्चित क्लिप लोड करना चाहता हूं, और इसे चला सकता हूं। आदर्श रूप में, मैं एक नया 'ऑडियो' ऑब्जेक्ट बनाउंगा, लोड के लिए src प्रतीक्षा करें और फिर खेलें। यह विभिन्न डेस्कटॉप ब्राउज़र पर काम करता है, हालांकि एंड्रॉइड 4.2, क्रोम और स्टॉक ब्राउजर पर असफल रहा है।
मैं ऑडियो सहित 4 अलग अलग तरीकों की कोशिश की है:
- सहित (html में) बस एक ऑडियो ब्लॉक, है यह रनटाइम पर लोड और .play बुला(); यह काम करता है हालांकि इसका मतलब है कि मुझे 150+ ऑडियो ब्लॉक बनाना होगा। (यह हर जगह काम करता है)
- 'ऑडियो' का एक नया उदाहरण बनाएं और गतिशील रूप से .src विशेषता को सेट करें, फिर लोडकंपलेट कॉलिंग पर .play() (यह केवल डेस्कटॉप ब्राउज़र पर काम करता है, मेरे मोबाइल पर नहीं)
- नया ऑडियो टैग बनाने के लिए jQuery का उपयोग करें, डोम में जोड़ें, लोड के लिए प्रतीक्षा करें, फिर खेलें (यह केवल मेरे मोबाइल पर नहीं, डेस्कटॉप ब्राउज़र पर काम करता है)
- एचटीएमएल में ऑडियो टैग लोड करने के लिए कहने के साथ ऑडियो टैग जोड़ें, उपयोगकर्ता के लिए प्रतीक्षा करें बातचीत, फिर इसे लोड करें, तैयार होने के लिए प्रतीक्षा करें, फिर खेलें (यह हर जगह काम करता है)।
तो, बड़ा सवाल यह है कि कोई विचार क्यों नहीं काम कर रहा है?
** संपादित करें ** मुझे पता है कि एक समय में केवल 1 फ़ाइल खेला जा सकता है, और यही वह है जो मैं यहां करने की कोशिश कर रहा हूं। परियोजना (कार्यात्मक रूप से) एक फोन सेवा के समान है, जहां आपके पास 1 व्यक्ति संख्या 0 - 9 रिकॉर्ड करता है, फिर यह 'फ़ोन' बोलता है तो '5'। '5'। '5'। '0'। '1 '..... आदि। इसलिए एक समय में 1 ऑडियो स्ट्रीम पूरी तरह से स्वीकार्य है ... यह सिर्फ यह खेलना है जो मुद्दा है।
अभी के रूप में, मैं निम्नलिखित कोड है, यह भी पाया जा सकता है here
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>test</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script>
var $a1, $a2, $a3, $a4;
$(document).ready(function(){
_setupVars();
_addListeners();
})
function _setupVars(){
$a1 = $("#audio1");
$a2 = $("#audio2");
$a3 = $("#audio3");
$a4 = $("#audio4");
}
function _addListeners(){
$a1.click(_handleAudio1);
$a2.click(_handleAudio2);
$a3.click(_handleAudio3);
$a4.click(_handleAudio4);
}
function _handleAudio1(){
$("#america")[0].play();
}
function _handleAudio2(){
var a = new Audio();
$(a).on("canplay", function(){
a.play();
})
if(a.canPlayType("audio/mp3"))
a.src = "audio/test2.mp3";
else if(a.canPlayType("audio/ogg"))
a.src = "audio/test2.ogg";
}
function _handleAudio3(){
var $x = $('<audio id="says">'+
'<source src="audio/test3.mp3">'+
'<source src="audio/test3.ogg">'+
'</audio>');
$x.on("canplay", function(){
$x[0].play();
})
$("#audioCont").append($x);
}
function _handleAudio4(){
var $x =$("#cat");
$x.on("canplay", function(){
$x[0].play();
})
$x[0].load();
}
</script>
</head>
<body>
<input type="button" id="audio1" value="play Audio Tag"/><br />
<input type="button" id="audio2" value="play audio object"/><br />
<input type="button" id="audio3" value="play dynamic Audio Tag"/><br />
<input type="button" id="audio4" value="play load Audio Tag, then play"/><br />
<audio id="america">
<source src="audio/test1.mp3">
<source src="audio/test1.ogg">
</audio>
<audio id="cat">
<source src="audio/test4.mp3">
<source src="audio/test4.ogg">
</audio>
</body>
</html>
मैं एक समय में 1 ओएस के साथ ठीक हूं। 9 तो यह 'बोलता है' तो '5' एक फोन नंबर '5' '5' '0' '1 - परियोजना (कार्यात्मक) एक फोन सेवा है, जहाँ आप 1 व्यक्ति रिकॉर्ड है संख्या 0 के समान है।।।। '..... आदि तो 1 ऑडियो एक समय में बाहर धारा पूरी तरह से स्वीकार्य ... यह सिर्फ यह जो मुद्दा है खेलने के लिए हो रही है है (क्रोम में, नहीं एक iOS डिवाइस अभी तक में परीक्षण करने के लिए मिल गया है) – whomba
एक एकल मीडिया फ़ाइल केवल एक समय में उपयोगकर्ता इंटरैक्शन के साथ खेला जा सकता है। – idbehold