我尝试制作一个简单的phonegap应用程序,可以播放几首歌曲。 到目前为止,我的应用程序可以播放一首歌,但是当我点击两次播放按钮时:
<button onclick="playAudio('test.mp3')">Play Some Audio</button>
它再次播放该歌曲,以便可以听到回声,而不是先停止音频,然后从歌曲的开头开始。 我尝试了严厉的事情,但我的停止按钮都有效。可以在此处找到停止音频的Api:http://docs.phonegap.com/en/2.0.0/cordova_media_media.md.html#media.stop 这是我的停止按钮:
<button onclick="stopAudio()">Stop Some Audio</button>
和整个项目:
<body>
<h1>Playing Audio</h1>
<button onclick="playAudio('test.mp3')">Play Some Audio</button>
<button onclick="stopAudio()">Stop Some Audio</button>
</div>
<script type="text/javascript" src="cordova-2.4.0.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<script type="text/javascript">
app.initialize();
function playAudio(src) {
if (device.platform == 'Android') {
src = '/android_asset/' + src;
}
var media = new Media(src, success, error_error);
media.play();
}
function success() {
// ignore
}
function error_error(e) {
alert('great error');
alert(e.message);
}
function stopAudio() {
if (media) {
var media = new Media(src, success, error_error);
media.stop();
}
}
</script>
</body>
所以也许有人知道如何让停止按钮工作? 对不起我来自德国的糟糕的问候和祝福!
答案 0 :(得分:2)
您可以在播放音频 audioPlaying 时创建标记,并每次检查该标记以再次尝试播放音频。这是最直接的解决方案。
此外,您正在使用Media对象的两个不同实例,当您在其上调用stop时,您正在引用完全不同的实例。您需要增加媒体对象的范围,请参阅以下内容:
编辑:添加了audioPlaying = false;到停止功能,以防止卡住。
<body>
<h1>Playing Audio</h1>
<button onclick="playAudio('test.mp3')">Play Some Audio</button>
<button onclick="stopAudio()">Stop Some Audio</button>
</div>
<script type="text/javascript" src="cordova-2.4.0.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<script type="text/javascript">
var audioPlaying = false;
var media;
app.initialize();
function playAudio(src) {
if (audioPlaying === false) {
if (device.platform == 'Android') {
src = '/android_asset/' + src;
}
media = new Media(src, success, error_error);
media.play();
audioPlaying = true;
} else {
//audio is already playing
}
}
function success() {
// ignore
}
function error_error(e) {
alert('great error');
alert(e.message);
}
function stopAudio() {
if (media) {
media.stop();
audioPlaying = false;
}
}
</script>
答案 1 :(得分:1)
创建全局变量var media;
并在单击“播放”按钮时为其赋值。而不是一次又一次地初始化
改变你的代码,希望它能起作用。
<body>
<h1>Playing Audio</h1>
<button onclick="playAudio('test.mp3')">Play Some Audio</button>
<button onclick="stopAudio()">Stop Some Audio</button>
</div>
<script type="text/javascript" src="cordova-2.4.0.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<script type="text/javascript">
var media;
app.initialize();
function playAudio(src) {
if (device.platform == 'Android') {
src = '/android_asset/' + src;
}
media = new Media(src, success, error_error);
media.play();
}
function success() {
// ignore
}
function error_error(e) {
alert('great error');
alert(e.message);
}
function stopAudio() {
if (media) {
media = new Media(src, success, error_error);
media.stop();
}
}
</script>
</body>