Compartilhar via


Digitalizar de seu aplicativo

Este tópico descreve como verificar o conteúdo do seu aplicativo usando uma fonte de verificação de mesa, alimentador ou configurada automaticamente.

APIs importantes

Para verificar a partir do seu aplicativo, você deve primeiro listar os scanners disponíveis declarando um novo objeto DeviceInformation e obtendo o tipo DeviceClass. Somente scanners instalados localmente com drivers WIA são listados e disponibilizados para seu aplicativo.

Depois que seu aplicativo listar os scanners disponíveis, ele poderá usar as configurações de verificação configuradas automaticamente com base no tipo de scanner ou apenas digitalizar usando a fonte de verificação de mesa ou alimentador disponível. Para usar as configurações configuradas automaticamente, o scanner deve estar habilitado para configuração automática e não deve ser equipado com um scanner de mesa e um scanner alimentador. Para obter mais informações, consulte Verificação configurada automaticamente.

Enumerar scanners disponíveis

O Windows não detecta scanners automaticamente. Você deve executar esta etapa para que seu aplicativo se comunique com o verificador. Neste exemplo, a enumeração do dispositivo de scanner é feita usando o namespace Windows.Devices.Enumeration.

  1. Primeiro, adicione-as instruções using ao arquivo de definição de classe.
    using Windows.Devices.Enumeration;
    using Windows.Devices.Scanners;
  1. Em seguida, implemente um observador de dispositivo para começar a enumerar scanners. Para obter mais informações, consulte Enumerar dispositivos.
    void InitDeviceWatcher()
    {
       // Create a Device Watcher class for type Image Scanner for enumerating scanners
       scannerWatcher = DeviceInformation.CreateWatcher(DeviceClass.ImageScanner);

       scannerWatcher.Added += OnScannerAdded;
       scannerWatcher.Removed += OnScannerRemoved;
       scannerWatcher.EnumerationCompleted += OnScannerEnumerationComplete;
    }
  1. Crie um manipulador de eventos para quando um scanner for adicionado.
    private async void OnScannerAdded(DeviceWatcher sender,  DeviceInformation deviceInfo)
    {
       await
       MainPage.Current.Dispatcher.RunAsync(
             Windows.UI.Core.CoreDispatcherPriority.Normal,
             () =>
             {
                MainPage.Current.NotifyUser(String.Format("Scanner with device id {0} has been added", deviceInfo.Id), NotifyType.StatusMessage);

                // search the device list for a device with a matching device id
                ScannerDataItem match = FindInList(deviceInfo.Id);

                // If we found a match then mark it as verified and return
                if (match != null)
                {
                   match.Matched = true;
                   return;
                }

                // Add the new element to the end of the list of devices
                AppendToList(deviceInfo);
             }
       );
    }

Digitalizar

  1. Obter um objeto ImageScanner

Para cada tipo de enumeração ImageScannerScanSource, seja Default, AutoConfigured, Flatbed ou Feeder, você deve primeiro criar um objeto ImageScanner chamando o método ImageScanner.FromIdAsync, desta forma.

   ImageScanner myScanner = await ImageScanner.FromIdAsync(deviceId);
  1. Basta digitalizar

Para verificar com as configurações padrão, seu aplicativo depende do namespace Windows.Devices.Scanners para selecionar um scanner e verificar dessa fonte. Nenhuma configuração de varredura é alterada. Os scanners possíveis são autoconfigurados, de mesa ou alimentador. Esse tipo de varredura provavelmente produzirá uma operação de varredura bem-sucedida, mesmo que seja feita a partir da fonte errada, como mesa em vez de alimentador.

Observação Se o usuário colocar o documento a ser digitalizado no alimentador, o scanner digitalizará a partir da mesa. Se o usuário tentar digitalizar de um alimentador vazio, o trabalho de verificação não produzirá nenhum arquivo verificado.  

    var result = await myScanner.ScanFilesToFolderAsync(ImageScannerScanSource.Default,
        folder).AsTask(cancellationToken.Token, progress);
  1. Digitalizar a partir da fonte configurada automaticamente, plana ou alimentadora

Seu aplicativo pode usar a verificação configurada automaticamente do dispositivo para verificar com as configurações de verificação mais ideais. Com essa opção, o próprio dispositivo pode determinar as melhores configurações de digitalização, como modo de cor e resolução de digitalização, com base no conteúdo que está sendo digitalizado. O dispositivo seleciona as configurações de verificação em tempo de execução para cada novo trabalho de verificação.

Observação Nem todos os scanners oferecem suporte a esse recurso, portanto, o aplicativo deve verificar se o scanner oferece suporte a esse recurso antes de usar essa configuração.

Neste exemplo, o aplicativo primeiro verifica se o scanner é capaz de configuração automática e, em seguida, verifica. Para especificar o scanner de mesa ou alimentador, basta substituir AutoConfigurado por Mesa ou Alimentador.

    if (myScanner.IsScanSourceSupported(ImageScannerScanSource.AutoConfigured))
    {
        ...
        // Scan API call to start scanning with Auto-Configured settings.
        var result = await myScanner.ScanFilesToFolderAsync(
            ImageScannerScanSource.AutoConfigured, folder).AsTask(cancellationToken.Token, progress);
        ...
    }

Visualizar a verificação

Você pode adicionar código para visualizar a verificação antes de digitalizar para uma pasta. No exemplo abaixo, o aplicativo verifica se o scanner de mesa dá suporte à visualização e, em seguida, visualiza a digitalização.

if (myScanner.IsPreviewSupported(ImageScannerScanSource.Flatbed))
{
    rootPage.NotifyUser("Scanning", NotifyType.StatusMessage);
                // Scan API call to get preview from the flatbed.
                var result = await myScanner.ScanPreviewToStreamAsync(
                    ImageScannerScanSource.Flatbed, stream);

Cancelar a verificação

Você pode permitir que os usuários cancelem o trabalho de verificação no meio de uma verificação, desta forma.

void CancelScanning()
{
    if (ModelDataContext.ScenarioRunning)
    {
        if (cancellationToken != null)
        {
            cancellationToken.Cancel();
        }                
        DisplayImage.Source = null;
        ModelDataContext.ScenarioRunning = false;
        ModelDataContext.ClearFileList();
    }
}

Verificar com progresso

  1. Crie um objeto System.Threading.CancellationTokenSource .
cancellationToken = new CancellationTokenSource();
  1. Configure o manipulador de eventos progress e obtenha o progresso da verificação.
    rootPage.NotifyUser("Scanning", NotifyType.StatusMessage);
    var progress = new Progress<UInt32>(ScanProgress);

Digitalizar para a biblioteca de imagens

Os usuários podem verificar para qualquer pasta dinamicamente usando a classe FolderPicker, mas você deve declarar a funcionalidade Biblioteca de Imagens no manifesto para permitir que os usuários examinem para essa pasta. Para obter mais informações sobre os recursos do aplicativo, consulte Declarações de funcionalidade do aplicativo.