在安卓上播放mp3的黑客

Hack for playing mp3 on Android?

本文关键字:mp3 黑客 播放      更新时间:2023-09-26

我有一个mp3文件,我想在打开网站时自动播放。在同一页面上,有一个按钮(图标),如果单击它,它会"剪切"声音(实际上是暂停它),如果您再次单击它,声音会播放(从它停止的地方)等等......

网页:

<body>
...
...
<audio id="sound" src="<?php echo $song; ?>" autoplay="autoplay" loop="loop"></audio>
<div id="sound_button" onClick="playpause()"><img id="snd_btn" src="/images/On32.png" /></div>
...
...

JavaScript:

function playpause() {
   var snd = document.getElementById("sound");
   var snd_btn = document.getElementById("sound_button");
   snd.muted = !snd.muted;
   //var snd_mut = 0;
   if(snd.muted){
      snd_btn.innerHTML = "<img src='/images/Off32.png' />";
      snd.pause();
   }
      else {
         snd_btn.innerHTML = "<img src='/images/On32.png' />";
         snd.play();
      }
   //if (snd_mut != 0) {
      //snd.innerHTML="<embed src='<?php echo $song; ?>' hidden='true' autostart='true' loop=true>";
      //snd_mut = 0;
   //}
   //else {
      //snd.innerHTML="<embed src='<?php echo $song; ?>' hidden='true' autostart='false' loop=true>";
      //snd_mut = 1;
   //}
}

在Windows中,在所有主要浏览器(IE,FF,Chrome,Opera和Safari)上,打开网站时一切正常:要播放的歌曲会自动启动并且可以听到(无需任何其他操作)。

相反,在Android上,

无论是在操作系统的隐式浏览器上,还是在FF和Chrome上,我都面临以下情况:我必须单击按钮(好像我想停止声音),然后再次单击它(好像我想再次听到它)以便歌曲开始。

我不明白为什么,尤其是为什么这只发生在Android上。 如果Android不支持mp3格式,我认为什么都不应该听到(尽管上面描述了一些小"技巧")。

有没有黑客攻击?我是否错过了什么或我能做些什么来解决问题?

非常感谢。

附言。你认为直接在javascript中创建和操作元素会有所帮助吗?- 虽然我也不太知道如何做到这一点...

原因是,移动浏览器是以这样一种方式构建的,它们只允许播放声音或其他通过JS控制的东西,而不是自动的。

有一种破解方法可以解决这个问题,您可以使用一个库,例如使用声音精灵的"Howler.js"。因此,您可以在开始时创建一个静音的声音文件。让用户单击按钮以访问应播放声音的网站。通过单击按钮,您可以"初始化"声音文件。您可以使用 Howler 播放声音精灵的一秒无声。此时,声音的播放是用户操作,使用 Howler,您现在可以在所需长度的任何位置启动声音精灵文件,并且它仍然被识别为用户操作。

我希望我能解释一下,这样你就能理解我的意思。