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.