Mit der Screen Wake Lock API können Sie verhindern, dass Geräte den Bildschirm dimmen oder sperren, wenn eine App weiter ausgeführt werden muss.
Was ist die Screen Wake Lock API?
Um zu vermeiden, dass sich der Akku entlädt, wechseln die meisten Geräte schnell in den Ruhemodus, wenn sie verlassen inaktiv sind. Auch wenn dies meistens in Ordnung ist, müssen einige Anwendungen Display aktiv ist, um die Arbeit abzuschließen. Beispiele hierfür sind Koch-Apps die die einzelnen Schritte eines Rezepts oder Spiels zeigen, wie Ball Puzzle, bei dem das Gerät Motion-APIs für die Eingabe.
Mit der Screen Wake Lock API lässt sich verhindern, dass das Gerät abgedunkelt wird. und den Bildschirm sperren. Dieses ermöglicht neue Erfahrungen, für die bisher eine plattformspezifische App erforderlich war.
Die Screen Wake Lock API reduziert die Notwendigkeit für hacky und potenziell energiesparende Behelfslösungen. Sie behebt die Mängel einer älteren API. das beschränkte sich darauf, dass der Bildschirm eingeschaltet bleibt, Sicherheit und Datenschutz.
Empfohlene Anwendungsfälle für die Screen Wake Lock API
RioRun eine von The Guardian entwickelte Web-App, war ein perfekter Anwendungsfall (auch wenn es nicht mehr verfügbar ist). Die App nimmt dich mit auf eine virtuelle Audiotour durch Rio, entlang der Strecke von 2016 Olympia-Marathon. Ohne Wakelocks werden die die Bildschirme während der Tour häufig abgingen, was die Nutzung erschwert.
Natürlich gibt es noch viele weitere Anwendungsfälle:
- Eine Rezept-App, die den Bildschirm eingeschaltet lässt, während du einen Kuchen backst oder kochst Abendessen
- Eine Bordkarten- oder Ticket-App, die den Bildschirm beibehält eingeschaltet, bis der Barcode gescannt wurde
- Eine Kiosk-App, die den Bildschirm kontinuierlich eingeschaltet lässt
- Eine webbasierte Präsentations-App, die den Bildschirm stabilisiert während einer Präsentation
Aktueller Status
Schritt | Status |
---|---|
1. Erklärende Mitteilung erstellen | – |
2. Ersten Entwurf der Spezifikation erstellen | Abschließen |
3. Feedback einholen und Design iterieren | Abschließen |
4. Ursprungstest | Abgeschlossen |
5. Einführung | Abschließen |
Screen Wake Lock API verwenden
Wakelock-Typen
Die Screen Wake Lock API bietet derzeit nur eine Art von Wakelock: screen
.
screen
-Wakelock
Ein screen
-Wakelock verhindert, dass der Bildschirm des Geräts gedreht wird.
damit der Nutzer die
auf dem Bildschirm angezeigten Informationen sehen kann.
Einen Display-Wakelock erhalten
Wenn du einen Display-Wakelock anfordern möchtest, musst du die Methode navigator.wakeLock.request()
aufrufen
das ein WakeLockSentinel
-Objekt zurückgibt.
Sie übergeben dieser Methode den gewünschten Wakelock-Typ als Parameter,
Sie ist derzeit auf 'screen'
beschränkt und ist daher optional.
Der Browser kann die Anfrage aus verschiedenen Gründen ablehnen, z. B.
weil der Akkuladestand zu niedrig ist.
Daher empfiehlt es sich, den Aufruf in eine try…catch
-Anweisung zu umschließen.
Die Ausnahmemeldung enthält im Falle eines Fehlers weitere Details.
Bildschirm-Wakelocks freigeben
Sie müssen auch eine Möglichkeit haben, den Bildschirm-Wakelock aufzuheben, der durch Aufrufen der
release()
-Methode des WakeLockSentinel
-Objekts.
Wenn du keinen Verweis auf das WakeLockSentinel
speicherst,
, um die Sperre manuell aufzuheben. Sie wird jedoch aufgehoben, sobald der aktuelle Tab unsichtbar ist.
Wenn Sie den Display-Wakelock automatisch freigeben möchten
nach einer gewissen Zeit
Sie können window.setTimeout()
verwenden, um release()
aufzurufen, wie im folgenden Beispiel gezeigt.
// 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);
Das WakeLockSentinel
-Objekt hat eine Eigenschaft namens released
, die
gibt an, ob ein Sentinel bereits freigelassen wurde.
Sein Wert ist anfänglich false
und ändert sich zu true
, sobald er "release"
abgesendet wird. Anhand dieser Property können Webentwickler erkennen,
veröffentlicht wurden, damit sie dies nicht manuell nachverfolgen müssen.
Sie ist ab Chrome 87 verfügbar.
Der Lebenszyklus des Display-Wakelocks
Wenn Sie die Display-Wakelock-Demo ausprobieren, werden Sie feststellen, dass der Bildschirm-Wakelock die auf die Sichtbarkeit der Seite reagieren. Das bedeutet, dass der Display-Wakelock wird automatisch freigegeben, wenn Sie eine Tab oder Fenster oder wechsle weg von einem Tab oder Fenster mit aktivem Display-Wakelock.
Um den Display-Wakelock wieder zu aktivieren,
Auf visibilitychange
-Ereignis warten
und fordern Sie einen neuen Display-Wakelock an, wenn sie auftreten:
const handleVisibilityChange = async () => {
if (wakeLock !== null && document.visibilityState === 'visible') {
await requestWakeLock();
}
};
document.addEventListener('visibilitychange', handleVisibilityChange);
Auswirkungen auf Systemressourcen minimieren
Sollte ich einen Display-Wakelock in meiner App verwenden? Der Ansatz hängt von den Anforderungen Ihrer App ab. Unabhängig davon sollten Sie Verwenden Sie die einfachste Möglichkeit, Auswirkungen auf die Systemressourcen.
Bevor Sie Ihrer App einen Display-Wakelock hinzufügen, überlegen Sie, ob Ihre Anwendungsfälle mit einer der folgenden alternativen Lösungen gelöst werden kann:
- Wenn Ihre App lange Downloads dauert, sollten Sie Hintergrundabruf:
- Wenn Ihre Anwendung Daten von einem externen Server synchronisiert, sollten Sie die Verwendung von Synchronisierung im Hintergrund
Demo
Sehen Sie sich die Demo zur Displayaktivierung und die Demoquelle an. Der Display-Wakelock wird beim Wechseln zwischen Tabs automatisch aufgehoben. oder Apps.
Bildschirm-Aktivierungssperre im Task-Manager des Betriebssystems
Mit dem Task-Manager Ihres Betriebssystems können Sie feststellen, ob eine Anwendung den den Ruhemodus Ihres Computers beenden. Im Video unten sehen Sie die macOS-Funktionen Aktivitätsanzeige , die darauf hinweisen, dass Chrome einen aktiven Bildschirm-Wakelock hat, durch den das System aktiv bleibt.
Feedback
Die Web Platform Incubator Community Group (WICG) und das Chrome-Team möchten mehr über Ihre mit der Screen Wake Lock API beschäftigt.
Informationen zum API-Design
Gibt es etwas an der API, das nicht wie erwartet funktioniert? Oder fehlen Methoden oder Eigenschaften, die du zur Umsetzung deiner Idee benötigst?
- Spezifikationsproblem im GitHub-Repository für die Screen Wake Lock API melden oder fügen Sie Ihre Gedanken zu einem vorhandenen Problem hinzu.
Problem mit der Implementierung melden
Haben Sie bei der Implementierung von Chrome einen Fehler gefunden? Oder ist die Implementierung von der Spezifikation abweichen?
- Melden Sie den Fehler unter https://new.crbug.com. Achten Sie darauf, so viele
wie möglich, einfache Anweisungen zum Reproduzieren des Fehlers
Setzen Sie Components auf
Blink>WakeLock
. Glitch funktioniert super für schnelle und einfache Reproduktionen.
Unterstützung für die API anzeigen
Möchtest du die Screen Wake Lock API verwenden? Ihre öffentliche Unterstützung hilft Das Chrome-Team priorisiert Funktionen und zeigt anderen Browseranbietern, wie ist es wichtig, sie zu unterstützen.
- Erzählen Sie im WICG-Discourse-Thread, wie Sie die API verwenden möchten.
- Sende einen Tweet mit dem Hashtag an @ChromiumDev
#WakeLock
und teilen Sie uns mit, wo und wie Sie sie nutzen.
Nützliche Links
- Spezifikation Empfehlung für Kandidaten | Entwurf des Bearbeiters
- Demo der Display-Aktivierung | Quelle für die Demo der Bildschirm-Aktivierungssperre
- Tracking-Fehler
- ChromeStatus.com-Eintrag
- Mit der Wake Lock API experimentieren
- Blink-Komponente:
Blink>WakeLock
Danksagungen
Hero-Image von Kate Stone Matheson auf Unsplash. Task-Manager-Video mit freundlicher Genehmigung von Henry Lim