Transformando seu celular android num monitor externo

Esses dias, por curiosidade resolvi transformar meu celular numa extensão do meu monitor, pra colocar um ou outro lembrete necessário ao dia-a-dia e também já deixar o celular carregando enquanto o estou utilizando para um fim mais nobre do que ficar apenas parado na mesa esperando alguém ligar.

Aparentemente parece algo trivial, mas eu me enganei e é exatamente por isso que estou escrevendo esse post.

Para transformar o celular ou tablet Android em um monitor segui os seguintes passos:

1. Baixei o aplicativo spacedesk em www.spacedesk.net necessário baixar no celular via play store.spacedesk - Multi Monitor alternative to MaxiVista, Duet Display and Air Display - Mozilla Firefox

Tanto o PC quanto o device android precisam estar na mesma rede.

2. Depois de baixado e configurado, iniciei o app no celular e voilà, ele identificou na rede o meu PC que já estava com o programa rodando.

photo5176962371405588447

3. Foi só clicar no IP da minha máquina e o PC reconheceu meu celular como um monitor, com direito a propriedades de vídeo e tudo, tudo funcionando via Wifi.

Configurações

Aí começaram os problemas…

O lag pra se utilizar o celular como monitor é imenso devido a tudo trafegar via Wifi, e pra resolver, fui pesquisar como que seria possível usar o mesmo esquema só que usando o cabo, felizmente achei a solução.

  1. Conectar o device no PC com o cabo USB.
  2. Ligar o roteamento de conexão do celular por USB em configurações.photo5177442389835491285(1)
  3. O Android exibe o PC agora com um IP de rede interna cabeada.photo5177442389835491286
  4. Basta clicar agora na conexão local e pronto, monitor agora sem lag, só que temos outro problema, agora o PC passa a priorizar a conexão USB para conectar a internet, e meus dados pra onde vão? Próximo passo, mudar as configurações de rede pra que o Windows priorize a minha rede Wifi para internet para isso vamos abrir o powershell em modo administrador.Cortana
  5. A seguir digite o seguinte comando: Get-NetIPInterface ele trará algo como:powershell-network-adapter-priority
  6. A seguir use o comando Set-NetIPInterface -InterfaceIndex “XX” -InterfaceMetric “100” onde XX é o número da interface que corresponde ao device Android na lista anterior e 100 é a prioridade, quanto maior o número menor será a prioridade, no nosso caso vamos colocar 100.
  7. O Windows volta novamente a priorizar minhas outras interfaces de rede.

É isso ai.

Usando Procedures CLR para acessar WebServices

Diante das grandes necessidades que temos hoje de integração de dados e interatividade, muitas vezes se faz necessária uma consolidação de dados mais centralizada, e eliminar recursos intermediários como agentes de processamento é uma grande pedida para ganharmos em qualidade, desempenho e melhoria no tempo para implementação de soluções assim acessar serviços diretamente do banco de dados é um grande recurso que ajuda em integrações mais rápidas.

Para iniciarmos primeiro é necessário criar um projeto do tipo SQL Server Project para isso abra o Visual Studio File > New > Project.

Nomeie com o nome mais adequado a necessidade no nosso caso chamamos o projeto de GPPMiddleware, por se tratar de o início de uma camada de chamadas de webservices dentro do banco.

Depois de criado o projeto, clique com o botão direito do mouse sobre o projeto e selecione Add > New Item. Algumas opções são possíveis dentro no nosso caso iremos criar uma Stored Procedure, mais nada impede que se possa criar uma Trigger, UDF ou outro tipo de objeto do banco.

Essa é a estrutura básica de uma procedure CLR, agora iremos codificar a lógica de negócio envolvida no processo.

O objetivo dessa procedure será consultar os dados de uma unidade de material no SAP utilizando um serviço, retornar esses dados para e exibi-los para o usuário.

Vamos agora adicionar a referencia ao serviço, clique com o botão direito do mouse sobre o projeto e selecione Add Web Reference, uma caixa será exibida para que seja informado o endereço do serviço.

Informe o endereço do serviço no campo URL pressione o botão GO, nomeie a referencia com o nome adequado no campo Web reference name e clique em Add Reference.

Depois de adicionada a referência, precisamos codificar o acesso e o que deverá ser feito, no nosso caso o programa irá consultar os dados e retornar para o usuário os dados referentes a unidade de material do SAP.

Depois de codificada a procedure chegamos numa parte que precisa de muito cuidado para que a tudo possa ser corretamente executado e instalado, primeiro vamos às configurações do projeto, clique com o botão direito do mouse sobre o projeto e selecione Properties serão selecione a aba Build, na seção Output selecione a opção On no campo Generate serialization assembly. Essa configuração se faz necessária para permitir criar um outro assembly responsável pela serialização dos objetos de comunicação entre o banco e o serviço.

Depois disso clique na aba Signing, na seção Sign the assembly selecione a opção <New…>, nomeie o arquivo que irá conter as definições de Strong Name do nosso projeto e caso queira coloque uma senha no arquivo.

Deixe desmarcada a opção Delay sign only. Depois disso selecione a aba Database, selecione a opção Unsafe no campo Permission Level, salve as opções de projeto.

Depois desses passos de configuração precisamos configurar o banco de dados e o SQL Server para aceitar procedures CLR:

sp_configure 'clr enabled', 1
GO
reconfigure
GO

Altere o banco de dados para trusthworthy

alter database GPPMiddleware set trustworthy on

Depois disso é necessário criar dois scripts responsáveis por registrar o assembly de serialização no banco, para isso acesse a pasta onde se encontra os fontes do projeto, La crie dois arquivos chamados Predeployscript.sql e Postdeployscript.sql, dentro de Predeployscript.sql escreva a seguinte sentença:

IF EXISTS (SELECT [name] FROM sys.assemblies WHERE [name] = N'GPPMiddleware.XmlSerializers')
DROP ASSEMBLY [GPPMiddleware.XmlSerializers]

No arquivo Postdeployscript.sql escreva a seguinte sentença:

CREATE ASSEMBLY [GPPMiddleware.XmlSerializers] from
'<Pasta do Projeto>BinDebugGPPMiddleware.XmlSerializers.dll'
WITH permission_set = SAFE

Depois disso é só dar um build e um deploy no projeto, depois é só chamar a procedure dentro do banco como qualquer outra.

Observe o resultado da chamada.