Freigeben über


So wird’s gemacht: Abrufen von Benachrichtigungen, wenn Geräte hinzugefügt, entfernt oder geändert werden (HTML)

[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation]

Hier lernen Sie, wie Sie Geräte dynamisch aufzählen können. Dadurch kann Ihre App eine Benachrichtigung empfangen, wenn Geräte hinzugefügt oder entfernt werden oder sich die Geräteeigenschaften ändern.

Die Geräteaufzählung wird mithilfe der DeviceWatcher-Klasse gestartet. Für jedes gefundene Gerät löst DeviceWatcher ein Add-Ereignis aus, bis alle Geräte gefunden wurden und die Aufzählung (Enumeration) abgeschlossen ist. Nach Abschluss der ersten Aufzählung löst DeviceWatcher weiter Ereignisse aus, wenn ein Gerät hinzugefügt, aktualisiert oder entfernt wird.

Wissenswertes

Technologien

  • Windows Runtime

Voraussetzungen

JavaScript und HTML

Anweisungen

Schritt 1: Öffnen von Microsoft Visual Studio

Öffnen Sie eine Instanz von Visual Studio.

Schritt 2: Erstellen eines neuen Projekts

Wählen Sie im Dialogfeld Neues Projekt unter den Projekttypen JavaScript > Windows Store-Apps eine leere App aus.

Schritt 3: Einfügen des JavaScript- und HTML-Codes der App

Öffnen Sie die Datei Default.html, und kopieren Sie den folgenden HTML-Code in die Datei (ersetzen Sie den ursprünglichen Inhalt).

<!DOCTYPE html>
<html>
<head>
  <title>Device Enumeration Sample</title>
  <meta charset="utf-8" />
  <script src="/js/default.js"></script>
</head>
<body role="application">
    <h1>Device Enumeration Sample</h1>
    <h2 >Input</h2>
    <div >            
            <div >
            <p>This example incrementally enumerates devices, adding them to a list each time a device is found, and also watching for updates.
               Once enumeration is complete, the list of devices is printed.</p> 
                <input type="button" value="Watch(All Devices)" onclick="WatchDevices()"/>
                <br /><br />

                <input type="button" value="Stop" onclick="stopWatcher()"/>
                <br /><br />
            </div>
    </div>

    <h2 > Output</h2>
            <div id="statusMessage"></div>
            <!--  Output -->
            <div  id="output"></div>
</body>
</html>

Schritt 4:

Fügen Sie diesen Code in "default.js" ein, und ersetzen Sie dabei den Dateiinhalt.

    var watcher;
    var isEnumerationComplete = false;
    var deviceArray = new Array(); // Saves the enumeration results

    function WatchDevices() {
        try {
            output.innerHTML = ""; // clear output field

            watcher = 
                Windows.Devices.Enumeration.DeviceInformation.createWatcher();
            // Add event handlers
            watcher.addEventListener("added", onAdded);
            watcher.addEventListener("removed", onRemoved);
            watcher.addEventListener("updated", onUpdated);
            watcher.addEventListener("enumerationcompleted", 
                onEnumerationCompleted);
            watcher.addEventListener("stopped", onStopped);
            // Start enumerating and listening for events
            watcher.start();
        } catch (e) {
            document.getElementById("statusMessage").innerHTML = 
                "Failed to create watcher, error: " + e.message;
        }
    }

    function stopWatcher() {
        try {
            watcher.stop();
        }
        catch (e) {
            document.getElementById("statusMessage").innerHTML = 
                "Failed to stop watcher: " + e.message;
        }
    }

    function onAdded(devinfo) {
        document.getElementById("output").innerHTML += "<p>Device added: " + 
            devinfo.name + "</p>";
        deviceArray.push(devinfo);
        if (isEnumerationComplete) {
            output.innerHTML = ""; // clear output field
            printDeviceArray(document.getElementById("output"));
        }
        
    }

    function onUpdated(devUpdate) {
        document.getElementById("output").innerHTML += "<p>Device updated.</p>";
        for (var i = 0; i < deviceArray.length; i++) {
            if (deviceArray[i].id == devUpdate.id) {
                deviceArray[i].update(devUpdate);
            }
        }
        output.innerHTML = ""; // clear output field
        printDeviceArray(document.getElementById("output"));
    }

    function onRemoved(devupdate) {
        document.getElementById("output").innerHTML += "<p>Device removed.</p>";
        for (var i = 0; i < deviceArray.length; i++) {
            if (deviceArray[i].id == devupdate.id) {
                deviceArray[i].slice(devupdate);
            }
        }
        output.innerHTML = ""; // clear output field
        printDeviceArray(document.getElementById("output"));
    }

    function onEnumerationCompleted(obj) {
        isEnumerationComplete = true;
        document.getElementById("output").innerHTML += 
            "<p>Enumeration Completed.</p>";
        printDeviceArray(document.getElementById("output"));
    }

    function onStopped(obj) {
        document.getElementById("output").innerHTML += "<p>Stopped.</p>";
        if (watcher.status == Windows.Devices.Enumeration.DeviceWatcherStatus.aborted) {
           document.getElementById("output").innerHTML += 
            "<p>Enumeration stopped unexpectedly. </p>";
           document.getElementById("output").innerHTML += 
            "<p>Click the Watch button to restart enumeration.</p>";
        } else if (watcher.status == Windows.Devices.Enumeration.DeviceWatcherStatus.stopped) {
           document.getElementById("output").innerHTML += 
            "<p>You requested to stop enumeration. </p>";
           document.getElementById("output").innerHTML += 
            "<p>Click the Watch button to restart enumeration.</p>";
        }

    }


    // Prints the friendly name of the device interface, 
    // its ID (device interface path), and whether it is enabled.
    function printDevice(deviceInterface, outputDestination) {
        outputDestination.innerHTML += "<p>Name: " + 
            deviceInterface.name + "<p/>"; 
        outputDestination.innerHTML += "<p>Interface ID: " + 
            deviceInterface.id + "<p/>";    
        outputDestination.innerHTML += "<p>Enabled: " + 
            deviceInterface.isEnabled + "<p/>";
        outputDestination.innerHTML += "<br />";
    }

    function printDeviceArray(outputDestination) {
        for (var i = 0; i < deviceArray.length; i++) {
            printDevice(deviceArray[i], outputDestination);
        }
    }

Anmerkungen

In diesem Beispiel werden Geräte schrittweise aufgezählt. Jedes gefundene Gerät wird einer Liste hinzugefügt, und es wird geprüft, ob Updates vorhanden sind. Nach Abschluss der Aufzählung gibt die App eine Geräteliste aus. Außerdem gibt die App eine Meldung aus, wenn ein Benutzer nach Abschluss der ersten Aufzählung Geräte hinzufügt, aktualisiert oder entfernt.

Hinweis  Eine App muss sich für alle added-, removed- und updated-Ereignisse anmelden, um über das Hinzufügen, Entfernen oder Aktualisieren von Geräten benachrichtigt zu werden. Behandelt eine App nur das added-Ereignis, erhält sie nach Abschluss der ersten Aufzählung kein Update, wenn ein Gerät dem System hinzugefügt wird.