【发布时间】:2017-06-19 05:19:32
【问题描述】:
我正在使用 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]显示Android5-6.x及更新的版本完全支持Web Audio API。
在 Android Studio 中,使用 Web Chrome 客户端或 Web View 客户端在 WebView 容器中加载 JavaScript 代码的尝试都无法播放 METHOD 2(从上面)。
但方法 1 始终有效。我怀疑 Virtual Devices 没有完全启用 Web Audio API。
我在 Android Studio 中的工作还不够远,无法制作 .apk 文件以在我自己的 LG G3 智能手机上进行测试,但在我走得更远之前,我希望看看是否有人可以摆脱一些了解正在发生的事情。
我提供了我正在使用的所有代码。
谢谢!
【问题讨论】:
标签: javascript android html audio