Curso Windows Phone – Como salvar um arquivo de imagem no sistema de arquivos da APP

Olá pessoal, tudo bom?

A transição entre o Windows Phone 7, 7.5, 8, 8.1 e agora o Windows Phone 10 (também se encaixam aqui as Universal APPs) trouxe mudanças no modo como codificamos alguns recursos para as APPs, sendo um deles, o método para armazenamento de arquivos no StorageFolder (IsolatedStorageFile) da própria aplicação.

Dada essa situação e também para responder a dúvida de um leitor, resolvi escrever esse post que tem por objetivo demonstrar como armazenar um arquivo de imagem no StorageFolder da APP.

PS: O procedimento para armazenar outros tipos de arquivos seria similar a esse

A codificação abaixo parte do pressuposto que você já possui um arquivo de imagem instanciado em um objeto da classe WriteableBitmap e que o mesmo é passado por parâmetro para nosso método que irá persisti-lo no sistema de arquivos da APP. Vejamos:


async private void SaveImage(WriteableBitmap wb)
{
  try
    {
      //Mapeando o sistema de arquivos local da APP
      StorageFolder folder = ApplicationData.Current.LocalFolder;
      //Definindo o diretório dentro sistema de arquivos local que receberá as imagens
      StorageFolder imgFolder = await folder.CreateFolderAsync("Images", CreationCollisionOption.OpenIfExists);
      //Definindo o objeto do arquivo a ser persistido
      StorageFile file = await imgFolder.CreateFileAsync("file_name", CreationCollisionOption.ReplaceExisting);

      //Definindo o tipo do arquivo de imagem
      Guid BitmapEnconderGuid = BitmapEncoder.JpegEncoderId;
      //Gravando o arquivo
      using (IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.ReadWrite))
      {
        BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEnconderGuid, stream);

        Stream pixelStream = wb.PixelBuffer.AsStream();
        byte[] pixels = new byte[pixelStream.Length];
        await pixelStream.ReadAsync(pixels, 0, pixels.Length);

        encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore,
             (uint)wb.PixelWidth,
             (uint)wb.PixelHeight,
             96.0,
             96.0,
             pixels);
        await encoder.FlushAsync();
      }

      var dialog = new MessageDialog("Image stored successfully.", "Information");
      await dialog.ShowAsync();
    }
    catch (Exception)
    {
      throw new FileNotFoundException();
    }
}

Abraços,

Eduardo Henrique Rizo

MCP

Post Relacionado: 

Marcado com: , , , , , , , , , , , , , , , , ,
Publicado em Universal APPs, Windows Phone

Síntese: Modelo de Gerenciamento de Rede – ISO (7498-4)

De acordo com a ISO (ISO 7498-4), a gerência de redes pode ser classificada em cinco áreas funcionais: gerência de falhas, gerência de contabilização, gerência de configuração, gerência de desempenho e gerência de segurança. Embora esta classificação, geralmente referenciada como FCAPS (Fault, Configuration, Accounting, Performance and Security), tenha sido desenvolvida para o modelo OSI, houve uma grande aceitação desta por parte dos fabricantes de hardware e software de rede, tanto em tecnologias padronizadas como em proprietárias.

O FCAPS serve de base por definir áreas funcionais da gerência de redes:

  • Gerência de falhas: detecta, isola, notifica e corrige operações anormais no funcionamento dos recursos de rede;
  • Gerência de configuração: responsável pelo registro, manutenção dos parâmetros de configuração dos serviços da rede e implementação de facilidades para atualização ou modificação dos recursos de rede, tais como versões de hardware e de software;
  • Gerência de contabilização: registra o uso da rede por parte de seus usuários com objetivo de cobrança ou regulamentação, isto é, implementa facilidades para alocação dos recursos e definição de métricas para uso dos mesmos;
  • Gerência de desempenho: responsável pela medição e disponibilização das informações de desempenho dos serviços de rede. Estes dados são usados para garantir que a rede opere em conformidade com a qualidade do serviço acordado com os seus usuários e para análise de tendência;
  • Gerência de segurança: restringe o acesso à rede e impede o uso incorreto por parte de seus usuários, de forma intencional ou não, protegendo a operação dos recursos de rede.

Gerência de Falhas (Fault)

Falhas não são o mesmo que erros. Uma falha é uma condição anormal cuja recuperação exige ação de gerenciamento e normalmente é causada por operações incorretas ou um número excessivo de erros. Por exemplo, se uma linha de comunicação é cortada fisicamente, nenhum sinal pode passar através dela. Um grampeamento no cabo pode causar distorções que induzem a uma alta taxa de erros. Certos erros como, por exemplo, um bit errado em uma linha de comunicação, podem ocorrer ocasionalmente e normalmente não são considerados falhas [6].

Para controlar o sistema como um todo, cada componente essencial deve ser monitorado individualmente para garantir o seu perfeito funcionamento. Quando ocorre uma falha, é importante que seja possível, rapidamente:

  • Determinar o componente exato onde a falha ocorreu;
  • Isolar a falha do resto da rede, para que ela continue a funcionar sem interferências;
  • Reconfigurar ou modificar a rede para minimizar o impacto da operação sem o componente que falhou;
  • Reparar ou trocar o componente com problemas para restaurar a rede ao seu estado anterior.

A gerência de falhas tem, portanto, três grandes responsabilidades: o monitoramento dos estados dos recursos da rede, a manutenção de cada um dos objetos gerenciados e as decisões que devem ser tomadas para restabelecer as unidades do sistema que possam apresentar problemas. O ideal é que, as falhas que possam ocorrer, sejam detectadas antes que os seus efeitos sejam percebidos.

O impacto e a duração do estado de falha podem ser minimizados pelo uso de componentes redundantes e rotas de comunicação alternativas, para dar à rede um maior grau de tolerância às falhas.

Gerência de Configuração (Configuration)

O gerenciamento de configuração está relacionado à inicialização da rede e com uma eventual desabilitação de parte ou de toda a rede. Também está relacionado às tarefas de manutenção, adição e atualização de relacionamentos entre os componentes e da situação dos componentes durante a operação da rede [6].

O gerente da rede deve ser capaz de, identificar os componentes da rede e definir a conectividade entre eles, além de modificar a configuração em resposta às avaliações de desempenho, recuperação de falhas, problemas de segurança, atualização da rede ou para atender às necessidades dos usuários.

Gerência de Contabilização (Accounting)

Mesmo que nenhuma cobrança interna seja feita pela utilização dos recursos da rede, o administrador da rede deve estar habilitado para controlar o uso dos recursos por usuário ou grupo de usuários, com o objetivo de [6]:

  • Evitar que um usuário ou grupo abuse de seus privilégios de acesso e monopolize a rede, em detrimento de outros usuários;
  • Evitar que usuários façam uso ineficiente da rede, assistindo-os na troca de procedimentos e garantindo a desempenho da rede;
  • Conhecer as atividades dos usuários com detalhes suficientes para planejar o crescimento da rede.

O gerente da rede deve ser capaz de especificar os tipos de informações de contabilização que devem ser registrados em cada nó, o intervalo de entrega de relatórios para nós de gerenciamento de mais alto nível e os algoritmos usados no cálculo da utilização.

Gerência de desempenho (Performance)

O gerenciamento do desempenho consiste na monitoração das atividades e controle dos recursos através de ajustes e trocas, possibilitando a obtenção de informações para avaliar o comportamento dos recursos da rede através de determinados parâmetros como: nível de utilização, perfil de tráfego, vazão (throughput), existência de gargalos, tempo de resposta, latência (atrasos), jitter, disponibilidade, níveis de QoS (em redes MPLS), perdas de pacotes, entre outros [6].

Para tratar estas questões, o gerente deve focalizar um conjunto inicial de recursos a serem monitorados, a fim de estabelecer níveis de desempenho. Isto inclui associar métricas e valores apropriados aos recursos de rede que possam fornecer indicadores de diferentes níveis de desempenho. Muitos recursos devem ser monitorados para se obter informações sobre o nível de operação da rede. Colecionando e analisando estas informações, o gerente da rede pode ficar mais capacitado no reconhecimento de indicadores de degradação de desempenho.

As redes de computadores hoje são constituídas de uma variedade de dispositivos, de diferentes padrões, implementando diferentes protocolos, oferecendo diferentes níveis de serviço, e que devem se intercomunicar e compartilhar dados e recursos. Na maioria dos casos, a eficiência da aplicação que faz uso destes recursos está altamente relacionada ao bom desempenho da rede.

Estatísticas de desempenho podem ajudar no planejamento, administração e manutenção de grandes redes. Estas informações podem ser utilizadas para reconhecer situações de gargalo antes que elas causem problemas para o usuário final. Ações corretivas podem ser executadas, tais como: trocar tabelas de roteamento para balancear ou redistribuir a carga de tráfego durante horários de pico, priorizar tráfego/aplicações, ou ainda indicar a necessidade de expansão de links, roteadores e servidores.

O gerenciamento de desempenho, portanto, é importante não só para garantir a qualidade de serviço necessária às aplicações, como também para assegurar que ela possa ser atingida com os menores custos. Pode-se por meio do gerenciamento de desempenho adequar os meios de comunicação utilizados pelos usuários às suas reais necessidades, auxiliando o gerente da rede a antecipar-se aos usuários na manutenção dos níveis de desempenho dos serviços oferecidos.

Dentre as atividades mais importantes da gerência de desempenho de redes, pode-se citar: monitoramento do desempenho, caracterização de carga de trabalho (perfil de tráfego ou workload), ajuste de parâmetros do sistema, identificação de gargalos, comparação de desempenho entre sistemas alternativos, dimensionamento de componentes do sistema, previsão de crescimento e tendências.

Gerência de Segurança (Security)

O gerenciamento da segurança provê facilidades para proteger recursos da rede e informações dos usuários, que devem estar disponíveis apenas para usuários autorizados. É necessário que a política de segurança seja robusta e efetiva e que o sistema de gerenciamento da segurança seja, ele próprio, seguro [6].
O gerenciamento de segurança trata de questões como:

  • Geração, distribuição e armazenamento de chaves de criptografia;
  • Manutenção e distribuição de senhas e informações de controle de acesso;
  • Monitoração e controle de acesso à rede ou parte dela e das informações obtidas dos nós da rede;
  • Coleta, armazenamento e exame de registros de auditoria e logs de segurança, bem como ativação e desativação destas atividades.

Fonte: http://www.teleco.com.br/tutoriais/tutorialgmredes1/pagina_3.asp

Grande abraço,
Eduardo Henrique Rizo

Marcado com: , , ,
Publicado em Gerenciamento de Redes, Gerenciamento de Serviços de TI

Curso Windows Phone – Como converter um objeto StorageFile para um BitmapImage

Segue uma dica para converter um arquivo armazenado localmente no Windows Phone (ou Universal APPs) para um objeto do tipo BitmapImage.

Em primeiro lugar devemos recuperar o arquivo da imagem e armazena-lo em um objeto do tipo StorageFile. Exemplo:

string nomeArquivo = "teste";
//O objeto folder irá representar o "sistema de arquivos" da APP
StorageFolder folder = ApplicationData.Current.LocalFolder;
//O objeto imgFolder irá representar o diretório onde as imagens estão armazenadas
StorageFolder imgFolder = await folder.GetFolderAsync("Images"); //Supondo que os arquivos de imagens fiquem no diretório de nome Images
//O objeto file representa o arquivo da imagem que você está recuperando
StorageFile file = await imgFolder.GetFileAsync(nomeArquivo);
Depois de obter o arquivo e coloca-lo em um objeto do tipo StorageFile, basta fazer a conversão para BitmapImage. Claro que para isso funcionar o arquivo recuperado anteriormente tem que ser do tipo de uma imagem. Exemplo:
//Esse trecho de código é continuação do anterior e o objeto file representa o arquivo recuperado
BitmapImage img = new BitmapImage(new Uri(file.Path, UriKind.Absolute));

Abraços,

Eduardo Henrique Rizo

MCP

Post Relacionado: 

Marcado com: , , , , , , , , , , , , , , ,
Publicado em Universal APPs, Windows Phone

Universal APPs – Como obter a resolução do dispositivo via código C#

Olá pessoal, tudo bom?

Dependendo da forma como o layout da APP está sendo construído, é importante conhecermos a resolução do dispositivo onde a mesma está sendo executada, para que tenhamos condições de realizar algum ajuste para quando as dimensões (em pixel) da tela forem maiores ou menores daquela que usamos para o desenvolvimento.

resolucao

O trecho de código abaixo demonstra uma forma de colhermos essa informação e então usá-la a nosso favor. Veja:


...

//Determinando a resolução da tela
var rawpixelperview = DisplayInformation.GetForCurrentView().RawPixelsPerViewPixel;
double width = Math.Round(Window.Current.Bounds.Width * rawpixelperview);
double heigth = Math.Round(Window.Current.Bounds.Height * rawpixelperview);

...

Abraços,

Eduardo Henrique Rizo

MCP

Marcado com: , , , , , , , , , , , ,
Publicado em Universal APPs

Universal APPs – Como fixar a orientação portrait ou landscape via código C#

Segue uma dica rápida para o caso de você precisar fixar ou trocar a orientação de uma página de uma APP via código C#.

orientacoes

Na página onde se deseja fixar/trocar a orientação, adicione a linha de código abaixo no construtor da página – MainPage()


...

DisplayInformation.AutoRotationPreferences = DisplayOrientations.Portrait | DisplayOrientations.PortraitFlipped;

...

O enumerator DisplayOrientations também conta com os valores Landscape e LandscapeFlipped. O “Flipped” significa dizer que o usuário rotacionou outros 90 graus em sentido horário.

Fica a dica!

Abraços,

Eduardo Henrique Rizo

MCP

 

Marcado com: , , , , , , , , , , ,
Publicado em Universal APPs

Falha de logon do serviço cliente da diretiva de grupo, acesso negado

Caso você tenha um servidor de terminais baseado no Windows 2008 e algum dos seus usuários esteja recebendo a mensagem “Falha de logon do serviço cliente da diretiva de grupo, acesso negado.”, uma das possibilidades é que o perfil do usuário esteja corrompido ou com permissão incorreta. Para corrigir essa situação, siga os procedimentos abaixo em seu servidor de TS:

  1. Abra o registro do Windows (regedit.exe)
    passo1
  2. Selecione a pasta HKEY_USERS
    passo2
  3. Clique no menu Arquivo e depois em Carregar Hive
    passo3
  4. Posicione-se no diretório do perfil do usuário que está com problema e dentro dele selecione o arquivo NTUSER.DAT. Geralmente os perfis dos usuários ficam alocados no diretório C:\Usuários
  5. Informe um nome para a chave. O nome pode ser o próprio nome do usuário
    passo4
  6. Pressione o botão direito sobre a nova Hive e clique em Permissões…
    passo5
  7. Verifique se as permissões estão de acordo com a lista abaixo:
    • SYSTEM – Controle Total
    • Administradores – Controle Total
    • Usuário dono do perfil – Controle Total
  8. Na mesma tela do passo 7, vá na em Avançado e marque para que o conjunto de permissões da raiz sobreponha as demais permissões dos outros arquivos
    passo6
  9. Para finalizar marque novamente a Hive que você criou no passo 5, depois clique no menu Arquivo e selecione a opção Descarregar Hive…

Grande abraço,
Eduardo Henrique Rizo

Fonte: Forum Technet

 

 

 

Marcado com: , , , , , , , , , ,
Publicado em Windows Server

Curso Windows Phone – Como ocultar o teclado após pressionar o ENTER em um TextBox

Olá, tudo bom?

Segue um post rápido para o caso de você estar desenvolvendo uma APP onde seja necessário ocultar o teclado após o usuário pressionar a tecla ENTER.

Tomarei como base a existência do TextBox declarado no trecho de código abaixo:

...
<TextBox Name="txtMeuTexto" KeyUp="txtMeuTexto_KeyUp" InputScope="Default" />
...

Repare que no TextBox foi declarado o evento Key_Up, onde verificamos todas as teclas pressionadas pelo usuário na caixa de texto. Quando ele pressionar o ENTER tiramos o foco do TextBox e colocamos de volta na página da APP, fazendo com o teclado virtual seja ocultado.

Veja o código em C#

private void txtMeuTexto_KeyUp(object sender, KeyRoutedEventArgs e)
{
  if (e.Key == Windows.System.VirtualKey.Enter)
  {
    this.Focus(FocusState.Keyboard);
  }
}

Abraços,

Eduardo Henrique Rizo

MCP

Post Relacionado: 

Marcado com: , , , , , , , , ,
Publicado em Windows Phone

Erro: o Twitter não respondeu. Por favor, aguarde alguns minutos e atualize esta página.

Sorocaba e Região
Prestadora de serviços RIZZO GS - Sorocaba/SP

Serviços de limpeza, conservação, recepção, copa, portaria, vigia, zeladoria, jardim, elétrica, hidráulica, pintura, etc.

Contato: (15) 3357-4263 / (15) 3357-4502 - contato@rizzogs.com.br

Website: http://www.rizzogs.com.br

%d blogueiros gostam disto: