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

Cem Posnick
Jeff Posnick

Sanal veya artırılmış gerçeklikli web uygulamaları üzerinde çalışan geliştiriciler hiç şüphesiz DeviceOrientationEvent'ı bilmektedir. Başlatılmamış kullanıcılar için "This End Up: Using Device Orientation", deviceorientation etkinlik dinleyicisinin bir cihazın bükülme ve döndürülmesine nasıl tepki verebileceğine dair mükemmel bir genel bakış sağlar.

Chrome'un önceki sürümlerinde, DeviceOrientationEvent kapsamındaki alpha, beta ve gamma değerleri, Earth'ün koordinat çerçevesine göre absolute derece olarak sağlanıyordu. Mutlak derecelerin sağlanması için Dünya'nın manyetik alanını algılamak üzere cihazın manyetometre sensörü kullanılır ve bu durum, ölçümleri saptırabilecek yaklaşık manyetik alan dalgalanmalarına karşı hassastır. Pratikte bu durum, cihazın aslında hareket etmemesine rağmen yakındaki bir mıknatıs nedeniyle web uygulamasının çok sayıda DeviceOrientationEvent kaydetmesine yol açabilir. Yalnızca yöndeki değişiklikleri izlemeye önem veren bir sanal gerçeklik uygulaması için bu manyetik ses kötüdür.

Neler değişiyor?

Chrome 50 sürümünden başlayarak, DeviceOrientationEvent kapsamındaki dereceler, Dünya'nın koordinat çerçevesine göre varsayılan olarak mutlak değildir. Diğer bir deyişle, DeviceOrientationEvent cihazlarındaki ivme ölçer ve jiroskop kombinasyonu sonucunda yalnızca gerçek bir hareket olduğunda tetiklenmesi gerekir. Manyetometre ve manyetik alan dalgalanmalarından kaynaklanan yanlış ölçümler görüntü dışındadır.

Ama yine de mutlak derecelere ihtiyacım var!

Mutlak dereceler kullanması gereken JavaScript yazıyorsanız, belki de doğrudan fiziksel dünyayla harita oluşturması gereken bir artırılmış gerçeklik web uygulamasının parçası olarak yazıyorsanız, şanslı sayılmazsınız. Cihazın manyetometresine bağlı olan önceki davranış, yeni bir deviceorientationabsolute etkinliği aracılığıyla kullanıma sunuldu. Geliştirici açısından bakıldığında bu, absolute özelliğinin true olarak ayarlanmasını garanti etmekle mevcut DeviceOrientationEvent ile benzerdir.

Desteklenen özellikleri algılama

Mutlak dereceleri tercih eden geliştiriciler, özellik algılamayı kullanarak yeni DeviceOrientationAbsoluteEvent etkinliğini destekleyen bir tarayıcıda olup olmadıklarını belirleyebilirler:

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 özelliğinde bildirilen değerler hiç tutarlı olmadı.

iOS'ta Safari ve Firefox, dereceler için göreli değerler kullanır. Bu, Chrome 50'de kullanıma sunulan uygulama değişikliğiyle eşleşir. Bu değişikliğin, iOS için yazılmış web uygulamalarıyla daha fazla tutarlılık sağlaması beklenir.

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, Chrome 50 yeni DeviceOrientationAbsoluteEvent uygulamasını destekleyen ilk tarayıcıdır.

DeviceMotionEvent ile gelişmiş yön izleme

Boris Smus'un, DeviceOrientationEvent kullanmanın dezavantajlarından bazılarını ve DeviceMotionEvent kullanarak özel sensör füzyonunun nasıl uygulanacağını ayrıntılı bir şekilde anlatan olağanüstü ayrıntılı bir makale var. Bunlar ivme ölçer ve jiroskopa düşük düzeyli erişim sağlar ve kullanıcılarınıza daha doğru bir sanal gerçeklik deneyimi sunar.

Ek kaynaklar