Perubahan Orientasi Perangkat Akan Segera hadir di Chrome 50

Developer yang mengerjakan aplikasi web virtual atau augmented reality tentunya sudah memahami DeviceOrientationEvent. Bagi yang belum tahu, “This End Up: Using Device Orientation” memberikan ringkasan yang bagus tentang cara pemroses peristiwa deviceorientation merespons putaran dan putaran perangkat.

Pada versi Chrome sebelumnya, nilai alpha, beta, dan gamma yang disertakan dalam DeviceOrientationEvent diberikan sebagai derajat absolute sehubungan dengan frame koordinat Bumi. Untuk memberikan derajat absolut, Anda harus menggunakan sensor magnetometer perangkat untuk mendeteksi medan magnet Bumi, dan hal ini pada akhirnya rentan terhadap fluktuasi medan magnet di sekitar yang dapat mengacaukan pembacaan. Dalam prakteknya, hal ini dapat menyebabkan aplikasi web mendaftarkan banyak DeviceOrientationEvent karena magnet di dekatnya, meskipun perangkat itu sendiri tidak benar-benar bergerak. Untuk aplikasi virtual reality yang hanya melacak perubahan orientasi, derau magnetik ini adalah kabar buruk.

Apa yang berubah?

Mulai Chrome 50, derajat yang disertakan dalam DeviceOrientationEvent secara default tidak lagi absolut sehubungan dengan bingkai koordinat Bumi. Artinya, DeviceOrientationEvent hanya boleh dipicu saat ada gerakan sebenarnya, seperti yang terdeteksi oleh beberapa kombinasi akselerometer dan giroskopi perangkat. Magnetometer, dan pembacaan palsu karena fluktuasi medan magnet, tidak terlihat.

Namun, saya masih memerlukan derajat absolut.

Jika Anda menulis JavaScript yang perlu menggunakan derajat absolut, mungkin sebagai bagian dari aplikasi web augmented reality yang perlu dipetakan langsung ke dunia fisik, Anda tidak akan kehilangan keberuntungan. Perilaku sebelumnya, yang bergantung pada magnetometer perangkat, tersedia melalui peristiwa deviceorientationabsolute baru. Dari perspektif developer, hal ini analog dengan DeviceOrientationEvent yang ada, dengan jaminan bahwa properti absolute akan ditetapkan ke true.

Mendeteksi apa yang didukung

Developer yang lebih memilih derajat absolut dapat menggunakan deteksi fitur untuk menentukan apakah mereka menggunakan browser yang mendukung peristiwa DeviceOrientationAbsoluteEvent baru:

if ('ondeviceorientationabsolute' in window) {
    // We can listen for the new deviceorientationabsolute event.
} else if ('ondeviceorientation' in window) {
    // We can still listen for deviceorientation events.
    // The `absolute` property of the event tells us whether
    // or not the degrees are absolute.
}

Kompatibilitas lintas browser

Nilai yang dilaporkan di DeviceOrientationEvent tidak pernah konsisten.

Safari dan Firefox di iOS menggunakan nilai relatif untuk derajat, yang cocok dengan perubahan penerapan yang diperkenalkan di Chrome 50. Perubahan ini akan menghasilkan konsistensi yang lebih baik dengan aplikasi web yang ditulis dengan mempertimbangkan iOS.

Firefox (di platform selain iOS), Edge, dan Chrome versi sebelum 50 menggunakan nilai derajat absolut untukDeviceOrientationEvent saat dijalankan di perangkat dengan sensor yang sesuai.

Saat ini, Chrome 50 adalah browser pertama yang mendukung DeviceOrientationAbsoluteEvent baru.

Pelacakan orientasi lanjutan dengan DeviceMotionEvent

Boris Smus memiliki artikel yang sangat mendetail yang menjelaskan beberapa kekurangan penggunaan DeviceOrientationEvent, dan cara menerapkan penggabungan sensor khusus menggunakan DeviceMotionEvent. API ini memberikan akses tingkat rendah ke akselerometer dan giroskop, serta dapat mengarah ke pengalaman virtual reality yang lebih akurat bagi pengguna Anda.

Referensi lainnya