Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从对象URL播放声音_Android_Google Chrome_Xmlhttprequest_Html5 Audio - Fatal编程技术网

Android 从对象URL播放声音

Android 从对象URL播放声音,android,google-chrome,xmlhttprequest,html5-audio,Android,Google Chrome,Xmlhttprequest,Html5 Audio,我使用XMLHttpRequest为游戏预加载文件。如果WebAudio不受支持,我会转而使用audio元素 在Android上,它在Firefox中运行良好,但在chrome中无法播放声音。下面是一些测试代码: document.addEventListener('touchstart', function(event) { event.preventDefault(); if( window.audio ) window.audio.play(); console.l

我使用XMLHttpRequest为游戏预加载文件。如果WebAudio不受支持,我会转而使用audio元素

在Android上,它在Firefox中运行良好,但在chrome中无法播放声音。下面是一些测试代码:

document.addEventListener('touchstart', function(event) {
    event.preventDefault();
    if( window.audio ) window.audio.play();
    console.log( window.audio );
});

window.audio    = null;


var xhr = new XMLHttpRequest();
xhr.open('GET', '/sounds/shotgun.webm', true);
xhr.responseType = 'arraybuffer';

xhr.onreadystatechange = function() {
    if (xhr.readyState === 4) {
        var blob = new Blob( new Array( new Int8Array( xhr.response ) ), { type: 'audio/webm' } );
        var url = window.URL.createObjectURL( blob )
        window.audio = new Audio();
        window.audio.src = url;

        console.log( 'sound loaded' );
    }
    };

xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send();
我怀疑这是Chrome for android的问题,对象url


无论如何,我正在寻找一种在Chrome for Android上使用XMLHttpRequest缓存数据播放声音的方法。

我手边没有Android手机,但我知道过去你需要使用
window.webkitURL
而不是
window.URL
。也许可以试试:


(window.URL | | window.webkitURL).createObjectURL(blob)

事实上,这似乎是一个bug。我在这里提出了它,并为它创建了一个测试用例。当我度假回来时,如果它还没有被分类,我会把它分配给正确的团队。如果我发现有其他工作,我也会更新这个答案。

没有。我还尝试使用文件系统API创建URL,但没有成功。您对此有进一步的了解吗?