android - 从对象 URL 播放声音

标签 android google-chrome xmlhttprequest html5-audio

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

在 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();

我怀疑这是 Android 版 Chrome 与对象 url 的问题...

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

最佳答案

这实际上似乎是一个错误。我在这里提出了https://code.google.com/p/chromium/issues/detail?id=227476并为其创建了一个测试用例。当我度假回来时,如果尚未进行分类,我会将其分配给正确的团队。如果我发现任何其他解决办法,我也会更新这个答案。

关于android - 从对象 URL 播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15761387/

相关文章:

xmlhttprequest - 所有 POST 请求的一个选项

firefox - 浏览器添加 www.和 .com 自动到服务器地址

css - Chrome 开发者工具似乎找不到背景颜色

javascript - 使用 XMLHttpRequest 获取非 utf8 数据

android - 如何在 Android 中停止来自 BroadcastReceiver 的服务?

javascript - 如何将使用 ImageService 提供的图像作为背景的 Canvas 元素转换为可下载图像?

javascript - XMLHttpRequest 仅发送最大大小为 130 kB 的文件

android - 使用 AdMob 时遇到问题

android - 如何开始没有 parent 的新 Activity ?

android - 什么是 Android 应用程序生命周期方法? (不是 Activity 生命周期方法。)