Componentes para Windows Phone – Parte 1: Enriquecendo a aplicação com novos componentes de terceiros

A plataforma do Windows Phone disponibiliza uma diversidade de componentes para enriquecer a interação usuário-dispositivo. Porém, na medida que a experiência dos usuários avança, sente-se mais a necessidade de novos componentes. O modelo de negócio das empresas também pode requisitar controles mais robustos e cabe a “terceiros” que façam seus próprios controles.

No post de hoje abordaremos a utilização de componentes de terceiros. Escolhemos o Silverlight Toolkit pois é um dos mais completos e possui controles muito interessantes para a aplicação.

Imagine aquele bom e velho formulário com diversos campos para preencher, e é óbvio que entre eles, existe o campo DATA. O campo data tem um formato pré-estabelecido e você quer armazená-lo no campo do tipo DateTime em sua model.
Utilizar uma TextBox não seria muito legal, uma vez que o usuário poderia inserir diversos caracteres.

A utilização de uma máscara fazendo a validação é uma, entre diversas outras opções, que podem ser usadas para garantir que os dados informados no campo são compativeis com sua ‘model’. Entretanto, existem formas mais elegantes de um usuário informar a data. Testaremos o DatePicker do Silverlight Toolkit e veremos o resultado final.

Acesse o link abaixo, baixe e instale o pacote do Silverlight Toolkit:
http://silverlight.codeplex.com/releases/view/78435
*********************************************************************
ATENÇÃO!!!!

Partimos do pressuposto que você já possui as bibliotecas e ferramentas instaladas para desenvolvimento de aplicações para o WINDOWS PHONE conforme abordagem anterior feita neste blog.

Caso você não tenha configurado seu ambiente de desenvolvimento para Windows Phone, sugirimos que leiam nosso post do link abaixo e prepare seu ambiente antes de iniciar esta abordagem que exige o Visual Studio 2010, os pacotes de desenvolvimento para Windows Phone. Os códigos serão testados via emulador.

TUTORIAL – Windows Phone – Parte 1 – Hello World
http://bit.ly/sx3hYg

*********************************************************************

Crie uma novo projeto conforme mostra a imagem abaixo:

Na tela seguinte, selecione a versão 7.1

Vá em Choose Toolbox Items

Vá até a aba Windows Phone Components e procure o nome do componente desejado, no nosso caso o DatePicker. Caso ele não esteja presente na lista, lembre-se de clicar em Browser e carregar a DLL do componente, marcá-lo e então clicar em OK.
Nossa DLL se encontra em:
C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Toolkit\Oct11\Bin\ Microsoft.Phone.Controls.Toolkit.dll
Ou no diretório em que apontou a instalação do TOOLKIT.

Abrindo nossa Toolbox, verificamos que o componente já está lá, pronto para ser usado. Vamos arrastar um DatePicker para dentro de nossa Grid, salvar e executar a aplicação.

Ao clicar sobre o campo da data, o controle exibe uma nova tela para seleção da data.

Após testar o funcionamento do controle, vamos adicionar um StackPanel em nossa grid, vamos adicionar um nome para nosso DatePicker ‘MeetingDatePicker’ e movê-lo para dentro do StackPanel .
Em seguida, vamos adicionar um botão de nome ‘CheckDateButton’ e adicionamos um evento de Click para testar nosso controle no ‘code-behind’ de nossa aplicação.

Antes de continuar nossa implementação, note que o namespace Microsoft.Phone.Controls foi adicionado automaticamente pelo Visual Studio no ‘code-behind’ quando arrastamos o controle no modo Design.
Caso você precise utilizar um componente diretamente via código e não precisará adicioná-lo ao layout da página, lembre-se de adicionar o namespace precedido de ‘using’ ao topo do arquivo .cs.
Criamos uma nova instancia do DatePicker apenas para demonstrar como a DLL foi carregada com sucesso. Colocando o mouse sobre a classe DatePicker podemos ver a descrição da mesma.
Nós não utilizaremos essa nova instancia do controle pois já adicionamos anteriormente um DatePicker em nossa tela com o nome ‘MeetingDatePicker’.

No evento de ‘click’ de nosso botão, chamaremos o método CheckValues().
Este método busca o valor de nosso DatePicker e seta os valores de dia, mês e ano, então formata uma mensagem de alerta informando a data do compromisso.

Salve o projeto e execute a aplicação.
Selecione uma data e então clique no botão.
O alerta é exibido trazendo a data informada no DatePicker corretamente.

Conforme visto, é relativamente trivial a utilização de componentes externos em nossa aplicação, entretanto, alguns cuidados podem ser tomados:

>> Preste muita atenção se a versão da DLL é compativel com a versão do framework de sua aplicação.

>> Utilizando DLL’s você deverá cuidar o caminho de suas referências. Caso você abra o projeto em outros computadores, a DLL precisa estar no mesmo caminho referenciado previamente no projeto.

No próximo post, vamos aprender como criar nossos próprios componentes e sua utilização em projetos. Fique ligado!

Escrito por Luiz Roberto Lethang Rodolpho

GeoLocation API do HTML5

Nesta semana iremos abordar um tema um tanto curioso e novo para alguns, a API de GeoLocation do novo HTML. Mas você sabe exatamente o que significa GeoLocalização? Geolocalização é a identificação da localização geográfica do mundo real de um objeto, ou seja, podemos nos referir à prática de avaliar a localização.

Na grande maioria das aplicações, três formatos de localização são citados para que possamos descobrir a posição de um objeto, elas são: Triangulação GPRS, GeoLocalização por IP e o GPS. Entretanto, estas não são as únicas tecnologias que podem realizar esta atividade, existe outro agente que utiliza algumas destas combinações de métodos para retornar a localização.

Mas o que a API nos retorna? Ela basicamente nos retorna os valores de latitude, o qual é o ponto norte/sul e a longitude o ponto leste/oeste.

Quais são os browsers e sistemas móveis que suportam esta API?

  • Android 2.0+
  • iPhone 3.0+
  • Blackberry 5.0+
  • Palm WebOS 2.0+
  • Firefox 3.5+
  • Chrome 5+

Bom, chega de conceitos e vamos ao que interessa. Para que você possa trabalhar com a API é simples, você deve apenas inserir a linha de código abaixo para que seja possível obter a posição do objeto.

navigator.geolocation.getCurrentPosition(showpos)

Note que a função showpos é um callback, ela irá receber um objeto de posição:

function showpos(position){
  lat=position.coords.latitude
  lon=position.coords.longitude
  alert('Your position: '+lat+','+lon)
}

Como você pode notar este é apenas um simples exemplo de código que pode ser realizado, claro que você pode e deve inserir outras funcionalidades como, por exemplo: um mapa ou utilizar chamadas em Ajax e entre outras possibilidades para o seu sistema.

Mas para que você possa visualizar um exemplo completo, estamos disponibilizando um código abaixo com um exemplo completo e com mapa, para que assim você possa estuda-lo. Mas a nossa passagem pela tecnologia HTML5 não termina por aqui, no próximo post iremos falar sobre a Storage API e suas três formas de persistência de dados.

<!DOCTYPE html>
<html lang="pt">
<head>
<meta charset=utf-8>
<meta name="viewport" content="width=620">
<title>Mobiltec: GeoLocation</title>
</head>
<body>
<section id="wrapper">
    <header>
      <h1>Mobiltec Html5 GeoLocation</h1>
    </header>
<meta name="viewport" content="width=620" />

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
    <article>
      <p>Localizando a sua posi&ccedil;&atilde;o: <span id="status">buscando...</span></p>
    </article>
<script>
function success(position) {
  var s = document.querySelector('#status');

  if (s.className == 'success') {
    return;
  }

  s.innerHTML = "Voc&ecirc; foi Localizado!!!";
  s.className = 'success';

  var mapcanvas = document.createElement('div');
  mapcanvas.id = 'mapcanvas';
  mapcanvas.style.height = '400px';
  mapcanvas.style.width = '560px';

  document.querySelector('article').appendChild(mapcanvas);

  var latlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
  var myOptions = {
    zoom: 15,
    center: latlng,
    mapTypeControl: false,
    navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL},
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  var map = new google.maps.Map(document.getElementById("mapcanvas"), myOptions);

  var marker = new google.maps.Marker({
      position: latlng,
      map: map,
      title:"You are here! (at least within a "+position.coords.accuracy+" meter radius)"
  });
}

function error(msg) {
  var s = document.querySelector('#status');
  s.innerHTML = typeof msg == 'string' ? msg : "Erro ao localizar";
  s.className = 'fail';

}

if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(success, error);
} else {
  error('not supported');
}

</script>
</section>
<script>
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script>
try {
var pageTracker = _gat._getTracker("UA-1656750-18");
pageTracker._trackPageview();
} catch(err) {}</script>
</body>
</html>

 

Escrito por Marcel Guinther

Proteção de direitos autorais na era do conteúdo digital: Digital Rights Management

A gestão de direitos digitais ou GDD (em inglês Digital Rights Management ou DRM) consiste em um conjunto de métodos e ferramentas responsáveis por restringir a cópia e reprodução de conteúdo digital, com o intuito de conter o avanço da pirataria digital.

A pirataria é algo muito recente na história da indústria da música, filmes e literatura. As pessoas iam até uma livraria, compravam o livro, levavam para casa e desfrutavam de uma deliciosa leitura no conforto de seu lar, caso quisessem poderiam ainda emprestar para um amigo ou familiar, correndo o risco de que nunca mais voltasse.

Copiar um livro através de uma fotocopiadora é algo lento, de baixa qualidade – pois muitas vezes a página não sai exatamente alinhada – e com o tempo tende a estragar o material, porque há a necessidade de abrir muito o livro a fim de que suas folhas cubram a área da copiadora.


Uma nova era digital começa,  e surgem inúmeras novas formas de copiar um livro: alguém pode digitar o conteúdo, usam um scanner para obter imagens em alta resolução e ainda poder corrigir orientação e cor, tirar fotos de cada página, ou ainda utilizar um scanner portátil.

A capacidade quase infinita de copiar o conteúdo uma vez que ele foi digitalizado é outro fator que impulsiona a pirataria, pois apenas é limitado pelo espaço de armazenamento disponível para o usuário que, convenhamos, é gigantesco comparado com o tamanho médio de um e-book.

Somando a internet, com a possibilidade de transferir os arquivos por um meio P2P (peer-to-peer) de compartilhamento, temos algo para a indústria literária realmente se preocupar.

O mesmo se aplica para músicas, filmes e qualquer outro tipo de conteúdo digital com direitos autorais. Inicialmente copiar um disco de vinil era muito difícil, pois não havia equipamentos que pudessem reproduzir e copiar ao mesmo tempo. Uma vez que surgiram esses equipamentos, ainda era necessário tocar todo o disco para fazer a cópia, sem falar que poderia danificar o vinil e estragar talvez sua música preferida. Com o surgimento das fitas K7, isso se tornou um pouco mais simples, apenas tocaria o disco uma vez para copiar e depois seria diretamente pela fita. Com o CD então, tudo fica semelhante a um e-book.

No momento que uma cópia é feita e distribuída livremente, há autores, artistas, produtores e outras partes que deixam de receber pelos direitos do conteúdo. Alguns estipulam que o valor perdido com a distribuição de filmes na internet é de quase U$ 6 bilhões por ano.

Pensando em todos os aspectos relacionados com a cópia e distribuição ilegal do conteúdo, as empresas buscaram inúmeras formas de conter a disseminação. Ao conjunto de todas as formas dá-se o nome de DRM.

A indústria de jogos, por exemplo, tem controlado o número máximo de instalações de um jogo. Após alcançar esse número, o jogador precisa ligar para a produtora do jogo e solicitar uma nova instalação. Ainda sobre jogos, plataformas como o Steam® permitem que os jogos sejam executados apenas no computador com o software autenticando o usuário mediante username e password, o que impede a cópia direta para outro computador.

Quanto à música, por muito tempo as compras feitas no iTunes®, sistema de distribuição de conteúdo da Apple®, só poderiam ser executadas em um aparelho da Apple® mesmo, mas agora o comprador pode ouvir em outros dispositivos. Outras empresas tentaram incluir softwares ocultos em seus CDs, que eram instalados sem a autorização e consentimento do usuário e ficavam controlando cópia e reprodução das músicas, caso fossem “rippadas” para o computador, o termo rip se refere a copiar para o computador o conteúdo de uma mídia digital.

Para livros a situação não vai muito além, cópias indevidas são “sujadas” por uma marca d’água, ou os livros baixados de um site específico só podem ser lidos em softwares que podem ser baixados no site da distribuidora.

O Atheneum, Sistema de distribuição de publicações digitais – desenvolvido pela Mobiltec – trata do conteúdo protegido com DRM com muita seriedade. Utilizando o sistema M3, também desenvolvido pela Mobiltec, para a autenticação do usuário e transferência do conteúdo para o dispositivo, traz ao mundo literário uma plataforma já aprovada em outros setores industriais.

Todo autor ou distribuidora que quiser assegurar seus e-books com DRM, pode ter certeza que seus direitos serão respeitados, pois o Atheneum utiliza-se de fortes algoritmos de criptografia para salvar o conteúdo no servidor, evitando um ataque direto ao servidor. Após, envia os livros também criptografados para usuário de forma que apenas poderá lê-los nos softwares leitores distribuídos no próprio site.

Para quem possa pensar: “Mas eu já comprei o livro, quero ler em qualquer lugar!” não se preocupe, pois são disponibilizados leitores para as principais plataformas móveis, iOS, Android e Windows Phone, além da leitura em Desktop Windows.

Todo esse esforço do Atheneum é para proteger ambas as partes: a distribuidora terá controle sobre o material vendido e o usuário pode confiar que seu investimento será protegido para uso pessoal e intransferível, assim como um documento de identificação.

Existe muita polêmica em torno do DRM, se isso não seria uma limitação dos direitos de quem já comprou o conteúdo, mas creio que se o controle for feito de maneira transparente e sincera para o usuário não há porque se sentir lesado, mas sentir que seus direitos e deveres como consumidor estão sendo levados em consideração e respeitados.

Escrito por Nélisson Cavalheiro

 

 

Gestão de segurança de dispositivos móveis

A Segurança da Informação sempre foi de grande importância e objeto de altos investimentos nas empresas. Quando se fala em mobilidade o tema ganha ainda mais importância, principalmente pelo risco da exposição de informações sensíveis. Justifica-se pois os dispositivos móveis são levados por seus usuários para fora dos domínios da empresa, carregando consigo grande volume de informação. A perda deste dispositivo compromete a privacidade das informações corporativas.

É papel chave de uma plataforma de MDM (mobile device management) tratar da segurança dos dispositivos móveis. Dentre as funcionalidades mais comuns de segurança oferecidas por sistemas de MDM, podemos destacar:

  • Políticas de senha: O uso de senhas é o primeiro passo para proteger os dispositivos móveis. Além de seu uso, é importante garantir um mínimo de qualidade das senhas dos usuários, através de políticas como tamanho mínimo da senha, complexidade e trocas frequentes.
  • Limpeza e bloqueio remoto: No caso de o usuário perder ou esquecer o dispositivo em algum lugar, as informações armazenadas correm risco de serem acessadas indevidamente. O bloqueio remoto (remote lock) garante que o dispositivo não seja acessado indevidamente, enquanto a limpeza remota (remote wipe) elimina permanentemente as informações do dispositivo.
  • Configuração de rede VPN: O acesso aos sistemas corporativos é um ponto de grande risco da segurança, e deve ser protegido adequadamente. O uso de rede VPN aumenta consideravelmente a segurança do acesso do dispositivo aos sistemas corporativos.
  • Criptografia: A criptografia é um recurso importante a ser explorado por sistemas móveis, pois oferece maior segurança de armazenamento de informações nos dispositivos e proteção dos canais de comunicação com os sistemas corporativos.
  • Bloqueio de recursos: Os dispositivos possuem recursos de hardware e software que podem comprometer a segurança do dispositivo. Um usuário mal intencionado pode transmitir um arquivo restrito por bluetooth ou pelo navegador de internet, através de um site de transmissão de arquivos, por exemplo. É preciso controlar o uso destes recursos.

Além das funcionalidades destacadas acima, há dois conceitos importantes empregados por sistemas de MDM que devemos explorar: os sistemas de bloqueio e a conteinerização (containerization).

Sistemas de bloqueio

São sistemas utilizados para restringir o acesso do usuário a recursos do dispositivo. Um sistema deste tipo normalmente se sobrepõe ao aplicativo padrão de navegação do dispositivo, impedindo acesso a aplicativos e configurações (veja também Gestão de aplicativos móveis).

Além de bloquear recursos do dispositivo, que é uma das funcionalidades de segurança destacadas anteriormente, o bloqueio do acesso aos aplicativos e às configurações do dispositivo são importantes itens de segurança, pois não permitem que o usuário acesse aplicativos ou modifique configurações não aprovadas pelas políticas de segurança da empresa. Perceba que sistemas de bloqueio protegem o dispositivo inclusive de utilização indevida do próprio usuário que detém autorização para seu uso.

Conteinerização

O conceito de conteinerização refere-se ao conjunto de mecanismos oferecidos para separar o conteúdo corporativo do conteúdo do usuário no dispositivo móvel. Esse conceito ganha força na medida que modelos de uso de dispositivos pessoais nas empresas (BYOD) estão sendo adotados, pressionados pela consumerização de TI. Para um pouco de contexto sobre BYOD, leia esta discussão.

Alguns elementos importantes da conteinerização:

  • Criptografia local: A empresa pode forçar a criptografia de armazenamento e canais de comunicação próprios de seus sistemas, sem impor restrições similares nos aplicativos de uso pessoal.
  • Limpeza remota seletiva: Só as informações corporativas estão sujeitas a limpeza remota, em condições impostas pelas políticas corporativas (perda de dispositivo, desligamento de funcionário, etc)
  • Prevenção de vazamento de informações: O container controla a comunicação com outros aplicativos do dispositivo, podendo bloquear facilmente exportação de dados e comunicação.

É importante observar que, embora ofereça significativos avanços de segurança, sistemas deste tipo não são flexíveis. Não é qualquer aplicativo móvel que se adequa a um sistema container. O aplicativo precisa ser oferecido e mantido pelo fornecedor do sistema de container ou preparado pelo seu próprio fornecedor para este fim.

Conclusões

A segurança oferecida por sistemas de MDM passa não só pela oferta de um conjunto de funcionalidades clássicas de segurança, mas também pela forma como trata outras áreas de gerenciamento e como as integra. Fica evidente pelos exemplos de gestão de aplicativos e do conceito de conteinerização apresentados.

Assim, se faz necessário realizar uma análise completa da solução de MDM para identificar se ela se adequa as necessidades de segurança demandadas.

Escrito por Eduardo Klein

Utilização de API de mapas

A utilização de mapas e informações georeferenciadas tem se popularizado e representam um grande valor para muitas soluções corporativas, especialmente aquelas que visam sistemas de mobilidade e monitoramento. Na Mobiltec temos experiências com as APIs do Google Maps e MapLink, sendo que a utilização delas depende da necessidade de cada cliente ou aplicação. Muitos posts apresentam a utilização dessas API´s, como fazer rotas e incluir marcadores, neste iremos focar mais a apresentação de algumas utilizações dessas ferramentas.

Nosso principal produto, o M3, permite monitoramento de dispositivos informando visualmente sua localização, trajeto e distância percorrida, assim como a velocidade média de deslocamento, como funcionalidade de gerenciamento de dispositivos móveis (MDM). Por ser um sistema horizontal, o M3 busca coletar e apresentar as informações de trajeto e localização de forma genérica.

Outro exemplo de utilização de mapas é o sistema de coleta de leituras de medidores em campo, desenvolvido pela Mobiltec com base no Google Maps para apresentar os itinerários percorridos pelos agentes comerciais com informações pertinentes para a solução. Nesse case, havia a disposição informações das coordenadas e horários em que foram realizadas cada leitura, por isso optamos por traçar o trajeto com Polylines, ou seja, sem o serviço Directions do Google Maps. Essa decisão foi tomada pois nesse sistema existem leituras que são realizadas em zonas rurais onde pode não haver rota válida e mesmo nas zonas urbanas, ligar as coordenadas exatas possuía valor informativo maior do que traçar uma possível rota entre os pontos, já que o agente comercial pode cruzar terrenos sem que esse caminho exista na API.

A visualização do mapa é enriquecida com a inclusão de marcadores (Markers) que identificam, entre outras coisas, anomalias informadas pelos agentes comerciais e a localização da primeira e última leitura. Cada um desses marcadores possui informações mais detalhadas que são apresentadas ao serem clicados. Por meio dessas informações visuais, os gerentes podem identificar possíveis problemas no processo de coleta das informações, como cadastro de anomalias em locais errados e até mesmo o deslocamento incorreto do agente comercial em campo.

Um ponto muito interessante é a possiblidade de utilização do StreetView para visualizar o local de uma leitura, inclusive apresentando na visualização os marcadores inseridos no mapa. Todo esse conjunto de informações fornecem uma ferramenta diferenciada no monitoramento das atividades dos agentes comerciais, ao passo de que os mapas permitem identificar e analisar com facilidade problemas nas atividades realizadas.

Outro exemplo de sistema que foca a utilização de APIs de mapas é o de gerência de vendedores. Com a coletas de posições geográficas mais frequentes, o sistema permite acompanhar o percurso realizado pelo vendedor e outros dados como, por exemplo, tempos de paradas e clientes visitados. Nesse case foi optado pela utilização da API do MapLink por decisão do cliente.

Como é possível identificar na imagem a seguir, também são utilizados marcadores que indicam clientes que devem ser visitados, diferenciando aqueles que não foram atendidos na ordem indicada. As cores de cada cliente diferenciam também entre clientes não visitados, visitados com vendas, visitados sem vendas, visitados fora do roteiro com venda, visitados fora do roteiro sem vendas e vendas realizadas fora do ponto de venda. Assim como indicações da presença de itens em comodato e clientes inadimplentes. Ainda identifica pontos e tempos de parada.

Todos esses dados são importantes para analisar a qualidade do serviço oferecido e monitorar as atividades dos vendedores. Uma análise muito importante é identificar se as visitas foram registradas nos locais de venda, já que faz parte da função do vendedor analisar a qualidade e cuidados dos itens em comodato.

Há retornos muito satisfatórios na utilização dessas soluções, especialmente no que diz respeito a melhores decisões de negócio. As APIs de mapas possuem um potencial enorme para os negócios corporativos e esse é um know-how que a Mobiltec possui e faz extensivo uso.

Escrito por Guilherme Krüger Araujo e Bruno Souza