iPhoneを振ったときにオーディオファイルをトリガーしたい。ボタンを押すだけでオーディオを再生できます。最初にボタンを押した後、シェイクでオーディオを再生できます。しかし、ページへの最初のエントリでは、シェイク加速度計はオーディオを再生しません。コードは以下にあり、小さなテストページは次の場所にあります。
pineappleapps.com/zdev/html5test((テストするにはiPhoneまたはiPod iOS v4.2が必要)
シナリオは次のとおりです。
1)ページを更新し、iPhoneを傾けると、アラートが表示されますが、音声が聞こえません
2)野球ボタンを押すとアラートが表示され、オーディオが再生されます
3)電話を傾けるとアラートが表示され、オーディオが再生されます
4)ページをもう一度更新し、電話を傾けると、アラートが表示されますが、音声が聞こえません
オーディオを初期化するボタンと関係があるに違いありません。どんな助けでも大歓迎です。
コード:
javascript:
function baseball()
{
alert('play');
document.getElementById('bbaudio').play();
var t=setTimeout("enableShake()",3000);
}
function enableShake()
{
document.getElementById("shakeE").innerHTML = '1';
}
var ax = 0; var ay = 0; var shakemax = 0;
window.ondevicemotion = function(event)
{
ax = event.accelerationIncludingGravity.x;
ay = event.accelerationIncludingGravity.y;
az = event.accelerationIncludingGravity.z;
if(ax > shakemax)
{
shakemax = ax;
}
var shake = document.getElementById("shake");
shake.innerHTML = ax;
if(ax > 8.0)
{
var se = document.getElementById("shakeE").innerHTML;
if(se == '1')
{
document.getElementById("shakeE").innerHTML = '0';
baseball();
}
}
}
html:
<br />
<br />
<input type="submit" onclick="baseball()" value="baseball"/>
<br />
<br />
<br />
<br />
<div id="shake">0</div>
<div id="shakeE">1</div>
<audio id='bbaudio' src="baseball_hit.wav" controls="controls"></audio>