gpt4 book ai didi

javascript - Web Audio API 无法在虚拟设备的 Android 浏览器中播放音频

转载 作者:行者123 更新时间:2023-11-28 02:40:52 24 4
gpt4 key购买 nike

我正在使用 Android Studio 编写一个播放音频的小应用。

在我的 PC 上的浏览​​器中测试时,我的应用程序可以在 Chrome、Edge 和 Firefox 中运行。 MP3 音频文件播放响亮而清晰。但是,我在 Android Studio 中安装的虚拟设备不播放 MP3 音频。

完全公开,我有两种播放音乐、音频的方法。方法 1 有效。

var toggleEffect;
toggleEffect = document.createElement('audio');
toggleEffect.setAttribute('src', 'audio/clicks/toggleEffect.mp3');
toggleEffect.id = "toggleEffect";
toggleEffect.play()

上面播放正常,我可以听到音频。

第二种方法在我 PC 上的浏览​​器中测试时适用于 Chrome、Edge 和 Firefox;好吧,它不想在虚拟设备浏览器中工作。

这是方法 2。

// set the audio file's URL
var audioURL = 'AllofMe.mp3';
//creating a new request
var request = new XMLHttpRequest();
request.open("GET", audioURL, true);
request.responseType = 'arraybuffer';
//take the audio from http request and decode it in an audio buffer
context.decodeAudioData(request.response, function(buffer) {
audioBuffer = buffer;
console.log(audioBuffer);
if (audioBuffer) { // check here
//creating source node
var source = context.createBufferSource();
//passing in file
source.buffer = audioBuffer;
//start playing
source.connect(context.destination); // added
}
});
request.send();

起初我怀疑 Web Audio API 在 Android 浏览器中不起作用,也许它不受支持。但是在检查之后,它是受支持的。

我添加了以下代码,让我知道 Web Audio API 是否可用。我用它在虚拟设备中测试 Android Studio 的一部分。

var context;
var contextClass = (window.AudioContext || window.webkitAudioContext || window.mozAudioContext || window.oAudioContext || window.msAudioContext);
if (contextClass) {
// Web Audio API is available.
context = new contextClass();
} else {
// Web Audio API is not available. Fallback
alert("Web Audio API is not available.");
}

代码没有报告错误,站点 [can I use dot com] 显示 Android 5-6.x 和更新版本 完全支持 Web Audio API。

在 Android Studio 中,使用 Web Chrome Client 或 Web View Client 在 WebView 容器中加载 JavaScript 代码的两种尝试都无法播放方法 2(从上面)。

但方法 1 始终有效。我怀疑 Virtual Devices 只是没有完全启用 Web Audio API。

我在 Android Studio 中制作的 .apk 文件还不够深入,无法在我自己的 LG G3 智能手机上进行测试,但在我继续之前,我希望看看是否有人可以摆脱一些了解正在发生的事情。

我提供了我正在使用的所有代码。

谢谢!

最佳答案

为了跟进,我创建了 .apk 文件并在我的手机 (LG G3) 上运行该应用程序,但可惜我的 Android 版本是 4.2.2,不支持 Web Audio API。我需要升级到 Android 5.x 或更高版本。

我确实尝试了另一种方法。

我将 HTML5/JS/CSS 加载到我的网络服务器上,然后重新编写了一个快速 .apk 以启动指向网络服务器的 Chrome。结果是该应用程序可以在我的 LG G3 手机上使用浏览器在 Chrome 中运行。

这是我加载应用程序 URL 的方式:

        String url = "http://myserver.com/webapp/index.html";
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setPackage("com.android.chrome");
try {
startActivity(i);
} catch (ActivityNotFoundException e) {
// Chrome is probably not installed
// Try with the default browser
i.setPackage(null);
startActivity(i);
}

最终,虚拟设备从未在 JavaScript 中运行第二种播放音频的方法,所以我不知道虚拟环境是否存在限制,但它确实在浏览器中运行。

如果我能学到更多,我会更新。谢谢。

关于javascript - Web Audio API 无法在虚拟设备的 Android 浏览器中播放音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44622745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com