6

Sto cercando un modo per verificare se un dispositivo supporta DeviceOrientationEvent o DeviceMotionEvent. Per essere più precisi, non voglio sapere se il dispositivo ha realmente un accelerometro.Rilevamento del supporto di movimento/orientamento del dispositivo?

Sfortunatamente window.DeviceMotionEvent e window.ondevicemotion rispettivamente window.DeviceOrientationEvent e window.ondeviceorientation esiste anche se il dispositivo - MacBook Retina - non ha un accelerometro.

Per me è chiaro che se l'evento non viene mai attivato, anche la funzione di callback di un listener di eventi non verrà mai eseguita. Ma nel mio caso, il mio programma ha bisogno di sapere se il dispositivo ha un accelerometro, perché l'utente dovrebbe ricevere una notifica se non c'è un accelerometro.

Le risposte di questo post purtroppo non hanno funzionato per il mio problema.

+0

Non so quanto sia preciso l'evento 'ondevicemotion', ma sarebbe accettabile ascoltare l'evento, e se tale evento non viene ricevuto entro, diciamo, 5 secondi, il dispositivo si riposa su un tavolo, tenuto da qualcuno con una presa di ferro, o non ha un accelerometro? –

+0

Hai ragione. Questo è un modo possibile, pensavo anche a me. Questa soluzione ha il problema, che devo aspettare un po 'di tempo (solo un po', perché 'devicemotion' spara molto spesso) per la risposta di questo controllo. Nel mio caso ho davvero bisogno di sapere dall'inizio se il dispositivo ha un accelerometro, perché l'utente viene inoltrato a un'altra pagina se il dispositivo non ha l'accelerometro ... –

risposta

2

Dato il programma ha bisogno di avere una funzionalità accelerometro per la funzione, sto supponendo che si sta bloccando la sua esecuzione, se non c'è nessuno.

Così il tuo programma potrebbe "bloccare" di default, e ascoltare un singolo dispositivo MotionEvent che inizializzerà l'intero programma, che alla fine si collegherà a window.ondevicemotion. In questo modo non è necessario bloccare l'esecuzione con un setTimeout; un deviceMotionEvent sarà probabilmente licenziato piuttosto rapidamente dopo il caricamento della finestra.

+0

Ottimo punto @Prusprus. Penso che questa sia la soluzione migliore per quel problema ... –

Problemi correlati