Chrome 50'de Cihaz Yönü Değişiklikleri Yapılıyor

Sanal veya artırılmış gerçeklik web uygulamaları üzerinde çalışan geliştiriciler, DeviceOrientationEvent ile kesinlikle aşinadır. Bu konuyla ilgili bilgi sahibi olmayanlar için "Bu Sonucu: Cihaz Yönlendirmesini Kullanma" başlıklı makalede, deviceorientation etkinlik dinleyicisinin cihazın dönmesine nasıl yanıt verebileceğine dair mükemmel bir genel bakış sunulmaktadır.

Chrome'un önceki sürümlerinde, DeviceOrientationEvent özelliğine dahil edilen alpha, beta ve gamma değerleri, Dünya'nın koordinat sistemine göre absolute derece olarak sağlanıyordu. Mutlak dereceler sağlamak için cihazın manyetometre sensörünün kullanılması gerekir. Bu sensör, Dünya'nın manyetik alanını algılar ve bu da okumaları etkileyebilecek yakındaki manyetik alan dalgalanmalarına maruz kalır. Bu durum, cihazın hareket etmediği halde yakındaki bir mıknatıs nedeniyle bir web uygulamasının çok sayıda DeviceOrientationEvent kaydetmesine neden olabilir. Yalnızca yönelimdeki değişiklikleri izlemeyi amaçlayan bir sanal gerçeklik uygulaması için bu manyetik gürültü kötü bir haberdir.

Neler değişiyor?

Chrome 50'den itibaren DeviceOrientationEvent içine dahil edilen dereceler, varsayılan olarak artık Dünya'nın koordinat sistemine göre mutlak değildir. Bu, DeviceOrientationEvent'lerin yalnızca cihazın ivmeölçer ve jiroskopunun bir kombinasyonu tarafından algılanan gerçek hareket olduğunda tetiklenmesi gerektiği anlamına gelir. Manyetik alan dalgalanmaları nedeniyle manyetometre ve yanlış okumalar devre dışı bırakılır.

Ancak mutlak derecelere ihtiyacım var.

Doğru mutlak dereceler kullanması gereken JavaScript'ler yazıyorsanız (ör. doğrudan fiziksel dünyayla eşlenmesi gereken bir artırılmış gerçeklik web uygulamasının parçası olarak) şansınız var. Cihazın manyetometresine bağlı olan önceki davranış, yeni bir deviceorientationabsolute etkinliği aracılığıyla kullanılabilir. Geliştirici açısından, mevcut DeviceOrientationEvent ile benzerdir. absolute özelliğinin true olarak ayarlanacağı garanti edilir.

Desteklenenleri algılama

Mutlak dereceleri tercih eden geliştiriciler, yeni DeviceOrientationAbsoluteEvent etkinliğini destekleyen bir tarayıcıda olup olmadıklarını belirlemek için özellik algılama özelliğini kullanabilir:

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.
}

Tarayıcılar arası uyumluluk

DeviceOrientationEvent alanında raporlanan değerler hiçbir zaman tutarlı olmamıştır.

iOS'teki Safari ve Firefox, dereceler için göreceli değerler kullanır. Bu, Chrome 50'de kullanıma sunulan uygulama değişikliğiyle aynıdır. Bu değişiklik, iOS'e göre yazılmış web uygulamalarında daha fazla tutarlılık sağlayacaktır.

Firefox (iOS dışındaki platformlarda), Edge ve 50'den önceki Chrome sürümleri, uygun sensörlere sahip cihazlarda çalıştırıldığında DeviceOrientationEvent için mutlak derece değerleri kullanır.

Bu yazı hazırlandığı sırada, yeni DeviceOrientationAbsoluteEvent özelliğini destekleyen ilk tarayıcı Chrome 50'dir.

DeviceMotionEvent ile gelişmiş yön izleme

Boris Smus, DeviceOrientationEvent kullanmanın bazı dezavantajlarını ve DeviceMotionEvent'leri kullanarak özel bir sensör füzyonunun nasıl uygulanacağını ayrıntılı olarak açıklayan inanılmaz ayrıntılı bir makaleye sahiptir. Bunlar, ivmeölçer ve jiroskopa düşük düzeyde erişim sağlar ve kullanıcılarınız için daha doğru bir sanal gerçeklik deneyimi sunabilir.

Ek kaynaklar