Device Motion
<div {{ stimulus_controller('@pwa/device-motion') }}>
<p id="motion-status">Waiting for motion data…</p>
</div>
<script type="module">
const host = document.querySelector('[data-controller="pwa__device-motion"]');
const out = document.getElementById('motion-status');
host.addEventListener('device-motion:unavailable', () => {
out.textContent = 'Device Motion API is not available on this device/browser.';
});
host.addEventListener('device-motion:permission-granted', () => {
out.textContent = 'Permission granted. Receiving motion data…';
});
host.addEventListener('device-motion:permission-denied', () => {
out.textContent = 'Permission denied. Cannot access motion sensors.';
});
host.addEventListener('device-motion:updated', (e) => {
const { acceleration, rotationRate, interval } = e.detail;
out.textContent =
`Acc: x=${acceleration.x?.toFixed(2)} y=${acceleration.y?.toFixed(2)} z=${acceleration.z?.toFixed(2)} | ` +
`Rot: α=${rotationRate.alpha?.toFixed(1)} β=${rotationRate.beta?.toFixed(1)} γ=${rotationRate.gamma?.toFixed(1)} | ` +
`dt=${interval}ms`;
});
</script>Parameters
Actions
Targets
Events
Last updated
Was this helpful?