Tap-to-start

Should fix wake lock problem
This commit is contained in:
2024-05-20 22:18:38 -07:00
parent dc2957f876
commit 9f64715a13
3 changed files with 20 additions and 14 deletions

View File

@@ -1,6 +1,7 @@
body { body {
align-items: center; align-items: center;
justify-content: center; justify-content: center;
text-align: center;
background: green; background: green;
color: white; color: white;
display: flex; display: flex;

View File

@@ -5,8 +5,8 @@
<script src="tuner.js"></script> <script src="tuner.js"></script>
<title>Tuner</title> <title>Tuner</title>
</head> </head>
<body onload="setup()"> <body onclick="setup()">
<h1 id="note">Listening...</h1> <h1 id="note">Tap to Start</h1>
<h2 id="tune"></h2> <h2 id="tune"></h2>
<div id="frequency"></div> <div id="frequency"></div>
<div>(<span id="rate">??</span> kHz sample rate)</div> <div>(<span id="rate">??</span> kHz sample rate)</div>

View File

@@ -28,12 +28,15 @@ let dom_note;
let dom_tune; let dom_tune;
const setup = () => { const setup = () => {
document.body.onclick = undefined;
dom_frequency = document.getElementById("frequency"); dom_frequency = document.getElementById("frequency");
dom_rate = document.getElementById("rate"); dom_rate = document.getElementById("rate");
dom_note = document.getElementById("note"); dom_note = document.getElementById("note");
dom_tune = document.getElementById("tune"); dom_tune = document.getElementById("tune");
if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { dom_note.innerHTML = "Listening...";
if (navigator?.mediaDevices?.getUserMedia) {
navigator.mediaDevices navigator.mediaDevices
.getUserMedia({ .getUserMedia({
audio: true, audio: true,
@@ -46,18 +49,20 @@ const setup = () => {
}; };
const aquireWakeLock = ({ interval, stream }) => { const aquireWakeLock = ({ interval, stream }) => {
if (navigator.wakeLock && navigator.wakeLock.request) { if (navigator?.wakeLock?.request) {
try { try {
navigator.wakeLock.request("screen").then((wakeLock) => navigator.wakeLock.request("screen").then(
setTimeout(() => { (wakeLock) =>
clearInterval(interval); setTimeout(() => {
wakeLock.release(); clearInterval(interval);
stream.getTracks().forEach((track) => track.stop()); wakeLock.release();
dom_note.innerHTML = "Restart"; stream.getTracks().forEach((track) => track.stop());
dom_note.onclick = window.location.reload; dom_note.innerHTML = "Tap to Start";
dom_tune.innerHTML = ""; document.body.onclick = setup;
dom_frequency.innerHTML = ""; dom_tune.innerHTML = "";
}, TIMEOUT * 1000) dom_frequency.innerHTML = "";
}, TIMEOUT * 1000),
(err) => console.error("Error requesting wakeLock", err)
); );
} catch (err) {} } catch (err) {}
} }