Vispercept
Vispercept

Reputation: 105

Detecting device motion/orientation support?

I'm looking for a way to check if a device supports either the DeviceOrientationEvent or DeviceMotionEvent. To be more precisely I wan't to know if the device really has an accelerometer.

Unfortunately window.DeviceMotionEvent and window.ondevicemotion respectively window.DeviceOrientationEvent and window.ondeviceorientation exists although the device - MacBook Retina - doesn't have an accelerometer.

It's clear to me, that if the Event is never fired, the callback-function of an eventlistener will also never run. But in my case I, my program need's to know if the device has an accelerometer, because the user should receive a notification if there is no accelerometer.

Answers of this post unfortunately didn't work for my problem.

Upvotes: 7

Views: 2616

Answers (1)

Prusprus
Prusprus

Reputation: 8065

Given your program needs to have an accelerometer functionality to function, I'm assuming you're blocking its execution if there is none.

So your program could 'block' by default, and listen for a single deviceMotionEvent which will initialize the whole of your program, which will ultimately bind onto window.ondevicemotion. That way you don't need to block the execution for with a setTimeout; a deviceMotionEvent will likely be fired rather quickly after window load.

Upvotes: 2

Related Questions