在没有cordova的情况下使用流星,我可以在浏览器中播放声音。
new Audio('test.mp3').play()test.mp3位于公用文件夹中的位置。然而,一旦我将我的应用程序作为cordova应用程序运行在设备上,我就无法播放声音。我做错了什么?谢谢。
发布于 2015-01-20 07:19:31
tl;dr
meteor add cordova:org.apache.cordova.media@0.2.15/android_asset/www/application/path/to/sound.wav如果您查看项目中的这个文件夹,
$PROJECT_ROOT/.meteor/local/cordova-build/platforms/android/assets/www/
当cordova为android构建应用程序时,您将看到它。
使用Cordova媒体插件,我试图使用文件路径/android_asset/www/path/to/sound.wav,但没有效果。
# Install the cordova media plugin with this command
meteor add cordova:org.apache.cordova.media@0.2.15相反,我看到我的声音文件夹在www目录中,但在应用程序目录下。所以,这个文件路径最终为我工作,
/android_asset/www/application/path/to/sound.wav
这是对我有用的相关代码。
function getMediaUrl(sound) {
if (device.platform.toLowerCase() === "android") {
return cordova.file.applicationDirectory.replace('file://', '') + 'www/application/' + sound.substr(1);
}
else {
return cordova.file.applicationDirectory.replace('file://', '') + sound.substr(1);
}
}
function playSound(sound) {
return new Media(
getMediaUrl(sound),
function (success) {
// success
},
function (err) {
// error
}
);
}
var test = playSound('/sounds/test.wav');
test.play();注意事项:我将音频文件包括在公用文件夹中,即
$PROJECT_ROOT/public/sounds/test.wav
在Android上,此文件路径被转换为
/android_asset/www/application/sounds/test.wav
发布于 2014-12-11 21:51:41
似乎有两种可能的解决办法。第一种可能是更正确的解决方案,仅适用于cordova应用程序。由于插件的依赖性,它将无法在浏览器中工作。第一步是添加cordova插件:
meteor add cordova:org.apache.cordova.media@0.2.15 接下来构建一个函数来播放声音:
playLimitSound = function() {
if (Meteor.isCordova) {
var my_media = new Media('http://MY_IP:port/test.mp3',
// success callback
function () {
console.log("playAudio():Audio Success");
},
// error callback
function (err) {
console.log("playAudio():Audio Error: " + err);
}
);
// Play audio
my_media.play();
}};
这是另一种解决办法。它既适用于浏览器,也适用于cordova-app。
new Audio('http://MY_IP:port/test.mp3').play()发布于 2015-01-09 16:18:12
我在iOS推送通知声音方面也有类似的问题。在Xcode编译应用程序之前,我将声音文件添加到Xcode中的参考资料文件夹中,就解决了这个问题。在这种情况下,您可以将其称为:
if (Meteor.isCordova) {
var NotificationHandler = function(evt) {
if (evt.sound) {
var snd = new Media(
Meteor.absoluteUrl(evt.sound),
function() { console.log('media ok'); },
function(err) { console.log('media error',err); }
);
snd.play();
}
};
}例如,evt.sound是“test.mp3”
我还安装了媒体插件
meteor add cordova:org.apache.cordova.media@0.2.14https://stackoverflow.com/questions/27432554
复制相似问题