Ekran Uyanık Kalma Kilidi API'si, bir uygulamanın çalışmaya devam etmesi gerektiğinde cihazların ekranının kararmasını veya kilitlenmesini engellemenin bir yolunu sağlar.
Screen Wake Lock API nedir?
Pilin tükenmesini önlemek için çoğu cihaz, kullanılmadığında hızlıca uykuya geçer. Bu durum çoğu zaman sorun oluşturmasa da bazı uygulamaların çalışmalarını tamamlayabilmesi için ekranın açık kalması gerekir. Tarif adımlarını gösteren yemek pişirme uygulamaları veya giriş için cihaz hareketi API'lerini kullanan Ball Puzzle gibi oyunlar bu kapsamdadır.
Screen Wake Lock API, cihazın ekranını karartmasını ve kilitlemesini engellemenin bir yolunu sağlar. Bu özellik, şu ana kadar platforma özgü uygulamalar gerektiren yeni deneyimler sunulmasına olanak tanıyor.
Ekran Uyanık Kalma Kilidi API'si, hack'lenmiş ve potansiyel olarak çok fazla güç tüketen geçici çözümlere olan ihtiyacı azaltır. Yalnızca ekranı açık tutmakla sınırlı olan ve çeşitli güvenlik ve gizlilik sorunları olan eski bir API'nin eksikliklerini giderir.
Screen Wake Lock API için önerilen kullanım alanları
The Guardian tarafından geliştirilen bir web uygulaması olan RioRun, mükemmel bir kullanım alanıydı (ancak artık kullanılamıyor). Uygulama, sizi 2016 Olimpiyat maratonu rotasını izleyerek Rio'da sanal bir sesli tura çıkarıyor. Uyandırma kilitleri olmadan, tur oynatılırken kullanıcıların ekranları sık sık kapanır ve bu da kullanımı zorlaştırır.
Elbette daha birçok kullanım alanı var:
- Pasta pişirirken veya akşam yemeği hazırlarken ekranı açık tutan bir yemek tarifi uygulaması
- Barkod taranana kadar ekranı açık tutan biniş kartı veya bilet uygulaması
- Ekranı sürekli açık tutan kiosk tarzı bir uygulama
- Sunum sırasında ekranı açık tutan web tabanlı bir sunu uygulaması
Mevcut durum
Step | Durum |
---|---|
1. Açıklayıcı oluşturma | Yok |
2. Spesifikasyonun ilk taslağını oluşturma | Tamamlandı |
3. Geri bildirim alma ve tasarımı yineleme | Tamamlandı |
4. Kaynak denemesi | Tamamlandı |
5. Başlat | Tamamlandı |
Screen Wake Lock API'yi kullanma
Uyanık kalma kilidi türleri
Screen Wake Lock API şu anda yalnızca bir tür uyanma kilidi sağlar: screen
.
screen
uyanık kalma kilidi
screen
Uyandırma kilidi, kullanıcının ekranda gösterilen bilgileri görebilmesi için cihazın ekranının kapanmasını engeller.
Ekran uyanık kalma kilidi alınıyor
Ekran uyanık kalma kilidi istemek için WakeLockSentinel
nesnesi döndüren navigator.wakeLock.request()
yöntemini çağırmanız gerekir.
Bu yönteme, istenen uyanma kilidi türünü parametre olarak iletirsiniz. Bu parametre şu anda yalnızca 'screen'
ile sınırlıdır ve bu nedenle isteğe bağlıdır.
Tarayıcı isteği çeşitli nedenlerden dolayı (örneğin, pil şarj seviyesi çok düşük olduğu için) reddedebilir. Bu nedenle, çağrıyı bir try…catch
ifadesiyle sarmalamanız önerilir.
İstisna mesajında, başarısızlık durumunda daha fazla ayrıntı yer alır.
Ekran uyanık kalma kilidini açma
Ayrıca ekranı uyandıran kilidi kaldırmak için bir yönteme de ihtiyacınız vardır. Bu yöntem, WakeLockSentinel
nesnesinin release()
yöntemi çağrılarak elde edilir.
WakeLockSentinel
için bir referans depolamazsanız kilidi manuel olarak serbest bırakmak mümkün değildir. Ancak geçerli sekme görünmez olduğunda kilidi serbest bırakılır.
Belirli bir süre geçtikten sonra ekran uyandırma kilidini otomatik olarak kaldırmak istiyorsanız aşağıdaki örnekte gösterildiği gibi window.setTimeout()
ile release()
'i arayabilirsiniz.
// The wake lock sentinel.
let wakeLock = null;
// Function that attempts to request a screen wake lock.
const requestWakeLock = async () => {
try {
wakeLock = await navigator.wakeLock.request();
wakeLock.addEventListener('release', () => {
console.log('Screen Wake Lock released:', wakeLock.released);
});
console.log('Screen Wake Lock released:', wakeLock.released);
} catch (err) {
console.error(`${err.name}, ${err.message}`);
}
};
// Request a screen wake lock…
await requestWakeLock();
// …and release it again after 5s.
window.setTimeout(() => {
wakeLock.release();
wakeLock = null;
}, 5000);
WakeLockSentinel
nesnesinde, bir gözetmenin serbest bırakılıp bırakılmadığını belirten released
adlı bir özellik bulunur.
Başlangıçta değeri false
olan bu değişken, bir "release"
etkinliği gönderildikten sonra true
olarak değişir. Bu özellik, web geliştiricilerin kilidin ne zaman serbest bırakıldığını bilmelerine yardımcı olur. Böylece, bunu manuel olarak takip etmeleri gerekmez.
Chrome 87'den itibaren kullanılabilir.
Ekran uyanık kalma kilidi yaşam döngüsü
Ekran uyandırma kilidi demosuyla oynarken ekran uyandırma kilitlerinin sayfa görünürlüğüne duyarlı olduğunu fark edersiniz. Bu, bir sekmeyi veya pencereyi küçülttüğünüzde ya da ekran uyanık kalma kilidinin etkin olduğu bir sekmeden veya pencereden geçiş yaptığınızda ekran uyanık kalma kilidi otomatik olarak açılacağı anlamına gelir.
Ekran uyanık kalma kilidini yeniden edinmek için visibilitychange
etkinliğini dinleyin ve bu etkinlik gerçekleştiğinde yeni bir ekran uyanık kalma kilidi isteyin:
const handleVisibilityChange = async () => {
if (wakeLock !== null && document.visibilityState === 'visible') {
await requestWakeLock();
}
};
document.addEventListener('visibilitychange', handleVisibilityChange);
Sistem kaynakları üzerindeki etkinizi en aza indirme
Uygulamanızda ekran uyanık kalma kilidi kullanmalı mısınız? Uygulayacağınız yaklaşım, uygulamanızın ihtiyaçlarına bağlıdır. Bununla birlikte, uygulamanızın sistem kaynakları üzerindeki etkisini en aza indirmek için mümkün olan en hafif yaklaşımı kullanmalısınız.
Uygulamanıza ekran uyandırma kilidi eklemeden önce kullanım alanlarınızın aşağıdaki alternatif çözümlerden biriyle çözülüp çözülemeyeceğini değerlendirin:
- Uygulamanız uzun süren indirmeler yapıyorsa arka planda getirme özelliğini kullanabilirsiniz.
- Uygulamanız harici bir sunucudaki verileri senkronize ediyorsa arka plan senkronizasyonunu kullanmayı düşünün.
Demo
Screen Wake Lock demosuna ve demo kaynağına göz atın. Sekmeler veya uygulamalar arasında geçiş yaptığınızda ekran uyanık kalma kilidinin otomatik olarak serbest bırakıldığına dikkat edin.
OS görev yöneticisindeki ekran uyanık kalma kilitleri
Bir uygulamanın bilgisayarınızın uykuya geçmesini engelleyip engellemediğini görmek için işletim sisteminizin görev yöneticisini kullanabilirsiniz. Aşağıdaki videoda, macOS Etkinlik İzleyici'nin Chrome'da sistemi uyanık tutan etkin bir ekran uyandırma kilidi olduğunu gösterdiği görülüyor.
Geri bildirim
Web Platformu İnkübatör Topluluğu (WICG) ve Chrome Ekibi, Ekran Uyandırma Kilidi API'si ile ilgili düşüncelerinizi ve deneyimlerinizi öğrenmek istiyor.
Bize API tasarımı hakkında bilgi verin
API ile ilgili beklendiği gibi çalışmayan bir şey var mı? Yoksa fikrinizi uygulamak için ihtiyaç duyduğunuz yöntemler veya özellikler eksik mi?
- Screen Wake Lock API GitHub deposunda özellik sorunu gönderin veya mevcut bir soruna düşüncelerinizi ekleyin.
Uygulamayla ilgili sorunları bildirme
Chrome'un uygulanmasıyla ilgili bir hata buldunuz mu? Yoksa uygulama, spesifikasyondan farklı mı?
- https://new.crbug.com adresinden hata kaydı oluşturun. Mümkün olduğunca fazla ayrıntı eklediğinizden, hatayı yeniden oluşturmayla ilgili basit talimatlar sağladığınızdan ve Bileşenler'i
Blink>WakeLock
olarak ayarladığınızdan emin olun. Glitch, hızlı ve kolay yeniden oluşturma işlemlerini paylaşmak için mükemmel bir araçtır.
API'yi destekleme
Screen Wake Lock API'yi kullanmayı planlıyor musunuz? Herkese açık desteğiniz, Chrome ekibinin özellikleri önceliklendirmesine yardımcı olur ve diğer tarayıcı tedarikçilerine bunları desteklemenin ne kadar kritik olduğunu gösterir.
- API'yi nasıl kullanmayı planladığınızı WICG Discourse mesaj dizisinde paylaşın.
#WakeLock
hashtag'ini kullanarak @ChromiumDev hesabına tweet gönderin ve bu özelliği nerede ve nasıl kullandığınızı bize bildirin.
Faydalı bağlantılar
- Spesifikasyon Aday Öneri | Düzenleyicinin Taslağı
- Screen Wake Lock Demo | Screen Wake Lock Demo kaynağı
- İzleme hatası
- ChromeStatus.com girişi
- Wake Lock API ile deneme yapma
- Blink Bileşeni:
Blink>WakeLock
Teşekkür ederiz
Unsplash'taki Kate Stone Matheson tarafından oluşturulan lokomotif resim. Görev yöneticisi videosu Henry Lim'e aittir.