如何在使用 PhoneGap/Cordova 构建的 Android 应用程序中单击按钮时播放音频

How do I play audio on clicking a button in an Android app built using PhoneGap/Cordova?

本文关键字:应用程序 Android 单击 按钮 音频 播放 构建 PhoneGap Cordova      更新时间:2023-09-26

我正在构建一个基本的类似音板的应用程序,它有几个播放声音的按钮。我正在使用PhoneGap/Cordova,并且正在使用PhoneGap Build服务将代码编译为APK。起初,我使用的是简单的HTML5 <audio>标签,这些标签在桌面浏览器和Android浏览器中都可以正常工作,但是当打包到PhoneGap应用程序中时,没有播放任何声音。

我环顾四周,看到一些提到必须在PhoneGap中使用Media API而不是标准的HTML5音频,所以我通过以下代码更改切换到它。

我有以下功能:

function doPlay(soundId) {
  var my_media = new Media("/android_asset/www/"+soundId+".mp3",
    function() {
      navigator.notification.alert('Success!', alertDismissed);
    },
    function(err) {
    navigator.notification.alert('Error!', alertDismissed);
  });
  my_media.play();
}

每个按钮都有一个类似于下面的onclick处理程序...

onclick="doPlay('sound1');"

这些文件与index.html位于同一目录中,称为sound1.mp3sound2.mp3等。函数alertDismissed()也已定义,但它是空的。

但是,它仍然不起作用。咔嗒声无音。也没有'Success''Error'消息。是的,我已请求notificationmedia权限。

我在这里很困惑。有什么想法吗?

更新:按照@simon-macdonald的建议,我放置了本地文件的完整路径("/android_asset/www/"),但这仍然没有让应用程序工作。没有声音,没有错误/成功警报。:-(

文件的路径不正确。你想做:

var my_media = new Media("/android_asset/www/" + soundId+".mp3",
function() {
  navigator.notification.alert('Success!', alertDismissed);
},
function(err) {
navigator.notification.alert('Error!', alertDismissed);
});
my_media.play();

查看我的迷你教程。

http://simonmacdonald.blogspot.ca/2011/05/using-media-class-in-phonegap.html

我有一种感觉,你的问题与你写的代码无关,但也许你忘记在你的头部分包含cordova javascript文件。

<script type="text/javascript" charset="utf-8" src="cordova-1.7.0.js"></script> 

祝你好运。