iOS Wakelock w/ Web Audio
by juberti
HTML
<input type="button" value="Enable Wakelock">
<input type="button" value="Play">
<canvas id="foo"></canvas>
<video id="bar" playsinline></video>
JavaScript
var button = document.querySelectorAll('input')[0];
var button2 = document.querySelectorAll('input')[1];
var video = document.querySelector('video');
var ms = null;
createStream = () => {
var ctor = (window.AudioContext || window.webkitAudioContext);
var audioContext = new ctor;
audioContext.resume();
var oscillator = audioContext.createOscillator();
oscillator.type = 'sine';
oscillator.frequency.value = 440; // value in hertz
var gain = audioContext.createGain();
gain.gain.setValueAtTime(0.01, audioContext.currentTime);
var dest = audioContext.createMediaStreamDestination();
oscillator.connect(gain);
gain.connect(dest);
oscillator.start(0);
return dest.stream;
}
video.addEventListener('pause', (event) => {
console.log('onpause');
});
video.addEventListener('play', (event) => {
console.log('onplay');
});
button.onclick = () => {
if (!video.srcObject) {
button.value = "Disable Wakelock";
ms = createStream();
video.srcObject = ms;
video.play();
} else {
button.value = "Enable Wakelock";
ms.getTracks()[0].stop();
video.pause();
video.srcObject = ms = null;
}
}
button2.onclick = () => {
video.play();
}