Поделиться через


Краткое руководство: регистрация приложения для устройства автозапуска (HTML)

[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]

Вы можете зарегистрировать приложения в качестве вариантов для событий автозапуска устройств. События автозапуска устройств возникают при подключении устройства к компьютеру.

В этом разделе показано, как определить приложение в качестве варианта автозапуска при подключении камеры к компьютеру. Приложение регистрируется в качестве обработчика для события автозапуска WPD\ImageSource. Это распространенное событие, которое вызывается системой Windows Portable Device (WPD) при уведомлении камерами или другими устройствами обработки изображений о том, что они являются источниками изображений (ImageSource), использующими MTP. Подробнее см. в разделе о переносных устройствах Windows.

Если вы изготовитель устройства и хотите назначить приложение Магазина Windows для устройства в качестве обработчика автозапуска для устройства, вы можете задать приложение в метаданных устройства. Если сопоставить приложение с идентификатором взаимодействия устройства как автоматически устанавливаемое приложение, операционная система будет обнаруживать это сопоставление при подключении устройства к компьютеру. Если приложение не установлено на компьютере, операционная система автоматически скачает и установит его. Автозапуск представит пользователю приложение как первый вариант обработчика для устройства. Подробнее см. в разделе об автозапуске приложений Магазина Windows для устройства.

Цель: Создайте приложение для обработки события автозапуска устройства.

Необходимые условия

Microsoft Visual Studio

Инструкции

1. Создание нового проекта и добавление объявления автозапуска

  1. Откройте Visual Studio и выберите пункт New Project (Создать проект) в меню File (Файл). В разделе JavaScript выберите Windows Store (Магазин Windows). Назовите приложение AutoPlayDevice_Camera и нажмите кнопку ОК.

  2. Откройте файл Package.appxmanifest и перейдите на вкладку Capabilities (Возможности). Выберите возможность Removable Storage (Съемные носители). Это дает приложению доступ к данным на камере как на томе съемного носителя.

  3. В файле манифеста выберите вкладку Declarations (Объявления). В раскрывающемся списке Available Declarations (Доступные объявления) выберите AutoPlay Device (Автозапуск устройства) и нажмите кнопку Add (Добавить). Выберите новый элемент AutoPlay Device (Автозапуск устройства), добавленный к списку Supported Declarations (Поддерживаемые объявления).

  4. Объявление Автозапуск устройства идентифицирует приложение как вариант, когда автозапуск генерирует событие устройства для известных событий.

    В разделе Launch Actions (Действия при запуске) введите указанные ниже значения для первого действия при запуске.

    Параметр Значение
    Verb показать
    Action Display Name Show Pictures
    Content Event WPD\ImageSource

     

    Параметр Action Display Name определяет строку, отображаемую автозапуском для приложения. Параметр Verb определяет значение, передаваемое приложению для выбранного варианта. Для события автозапуска можно указать несколько действий при запуске и использовать параметр Verb, чтобы определить, какой вариант пользователь выбрал для приложения. Выбранный пользователем вариант можно узнать, проверив свойство verb аргументов события запуска, переданных приложению. Для параметра Verb можно использовать любое значение, кроме значения open, которое зарезервировано. Пример использования нескольких команд в одном приложении см. в разделе Краткое руководство: регистрация приложения для автозапуска содержимого.

  5. В раскрывающемся списке Available Declarations (Доступные объявления) выберите File Type Associations (Сопоставление типов файлов) и щелкните Add (Добавить). В разделе Properties (Свойства) нового объявления File Type Associations (Сопоставление типов файлов) установите для поля Display Name (Отображаемое имя) значение Show Images from Camera, а для поля Name (Имя) — значение camera_association1. В разделе Поддерживаемые типы файлов нажмите кнопку Добавить. Для поля File Type (Тип файла) установите значение .jpg. В разделе Supported File Types (Поддерживаемые типы файлов) щелкните Add New (Добавить). Установите для поля File Type (Тип файла) нового сопоставления файлов значение .png. Для событий автозапуска содержимого средство автозапуска отфильтровывает любые типы файлов, которые явно не связаны с вашим приложением.

  6. Сохраните и закройте файл манифеста.

2. Добавление пользовательского интерфейса на HTML

  • Откройте файл Default.html и добавьте следующий HTML-код в раздел <body>.

    <table>
        <tr>
            <td colspan="2">Device Information</td>
        </tr>
        <tr>
            <td style="vertical-align:top"><div id="deviceInfoDiv" style="width:400px;" /></td>
            <td style="vertical-align:top"><div id="picturesDiv" style="overflow:scroll;width:400px;height:400px" /></td>
        </tr>
    </table>
    
    

3. Добавление кода активации

Код на этом этапе ссылается на камеру как StorageDevice путем передачи идентификатора устройства методу fromId. Идентификатор сведений устройства камеры получается из свойства detail.deviceInformationId аргументов, передаваемых в обработчик события onactivated.

  • Откройте папку js. Откройте файл Default.js и замените функцию по умолчанию onactivated следующим кодом.

    app.onactivated = function (args) {
        if (args.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.device) {
            args.setPromise(WinJS.UI.processAll());
    
            showImages(Windows.Devices.Portable.StorageDevice.fromId(args.detail.deviceInformationId));
        }
    };
    

4. Добавление кода для отображения сведений об устройстве

Информацию о камере можно получить из свойств класса StorageDevice. Код на этом этапе выводит имя устройства и другие сведения для пользователя при запуске приложения. Затем код вызывает метод getImages, который добавляется на следующем этапе, для отображения эскизов изображений, сохраненных в камере.

  • В файле Default.js добавьте следующий код после функции onactivated.

    var imagesDiv;
    
    function showImages(folder) {
        var infoDiv = document.getElementById("deviceInfoDiv");
        imagesDiv = document.getElementById("picturesDiv");
    
        infoDiv.innerHTML = "Display Name = " + folder.displayName + "<br />" +
                            "Display Type =  " + folder.displayType + "<br />" +
                            "FolderRelativeId = " + folder.folderRelativeId + "<br />";
    
        getImages(folder);
    }
    

5. Добавление кода для отображения изображений

Код в этом шаге отображает эскизы изображений, сохраненных в камере. Код выполняет асинхронные вызовы камеры, чтобы получить эскиз изображения. Однако следующий асинхронный вызов не выполняется до завершения предыдущего. Это гарантирует, что единовременно к камере осуществляется только один запрос.

  • В файле Default.js добавьте следующий код после функции showImages.

    function getImages(folder) {
        // Find images in the specified folder
        folder.getFilesAsync().done(
            function (files) {
                files.forEach(function (file) {
                    file.getThumbnailAsync(
                        Windows.Storage.FileProperties.ThumbnailMode.singleItem,
                        100,
                        Windows.Storage.FileProperties.ThumbnailOptions.useCurrentScale).done(
    
                        function (thumbnail) {
                            // Create an img element to display on the page
                            var element = document.createElement("img");
                            element.src =
                                window.URL.createObjectURL(thumbnail, { oneTimeOnly: true });
                            element.style.height = thumbnail.originalHeight;
                            element.style.width = thumbnail.originalWidth;
                            element.alt = file.name;
                            imagesDiv.appendChild(element);
                        }
                    );
                })
    
                // Find images in subfolders
                folder.getFoldersAsync().done(
                    function (folders) {
                        folders.forEach(function (f) {
                            getImages(f);
                        })
                    });
            });
    }
    

6. Сборка и запуск приложения

  1. Нажмите кнопку F5, чтобы выполнить сборку и развернуть приложение (в режиме отладки).
  2. Для запуска приложения подключите камеру к компьютеру. Затем выберите приложение из списка вариантов автозапуска. Примечание  Не все камеры объявляют себя для события автозапуска устройства WPD\ImageSource.  

Сводка

В этом руководстве вы создали приложение, которое отображает файлы изображений с камеры. Вы зарегистрировали приложение для события устройства автозапуска WPD\ImageSource.

Связанные разделы

Запуск приложения с помощью автозапуска