News & Events
Distribuindo app no Moto 360 Watch
- 18 de dezembro de 2014
- Posted by: Adriano Santos
- Category: Notícias XE7 [Tutorial]
O post é antigo, de 19 de Setembro deste ano, mas é super atual em termos de tecnologia. Jim McKeeth, Embarcadero Evangelist Leader, publicou em seu blog alguns dos principais detalhes para desenvolver e distribuir aplicativos em RAD Studio XE7 para dispositivos vestíveis, nesse caso: um relógio Motorola Moto 360. Resolvemos, com autorização de Jim, traduzir seu post e publicar na íntegra para todos.
Jim responde que só é possível fazer esse tipo de aplicação graças ao novo Form Designer FireUI do RAD Studio XE7. Dessa forma é possível configurar tranquilamente um novo template com as dimensões corretas do novo dispositivo. Assim como é dito por ele, não é surpresa que um app desenvolvido em Delphi ou C++ funcione no aparelho, haja vista que a maioria dos dispositivos Android utilizando armv7 e um conjunto de instruções Neon. Por isso não é nenhuma surpresa que o Moto 360 consiga fazer isso. Entretanto há um porém, o Moto 360 não possui uma USB, então o deploy precisa necessariamente ser feito utilizando Bluetooph, o que nas palavras de Jim é lento, muito lento. Para fazer esse deploy via BT (Bluetooph) é necessário fazer algumas configurações e usar o ADB para enviar.
@Trecho de dica do Jim McKeeth
Em primeiro lugar, o visor 360 Moto não é perfeitamente redondo. Ele tem uma área plana na parte inferior. Se você olhar de perto você pode ver o sensor de luz lá. Não sei se foi por isso que ele não é redondo, ou se há alguma razão relacionada a design. Em todo caso, a resolução da tela é de 320 x 290 pixels a 213 pixels por polegada. Isso significa que em tempo de design você tem uma área útil de 240 x 218 pixels. Esta é a informação que precisamos para criar uma exibição personalizada. Basta colocar o código a seguir em um pacote.
Trecho de código:
TDeviceinfo.AddDevice(TDeviceinfo.TDeviceClass.Tablet, ViewName, // The Moto360 is 320x290 phyiscal and 240x218 logical with 213 PPI TSize.Create(320, 290), TSize.Create(240, 218), TOSVersion.TPlatform.pfAndroid, 213, True); // Exclusive
Há uma classe “Watch class” no Delphi, mas ainda não é possível detectar que o dispositivo relógio seja detectado, isso provavelmente ocorre porque o Delphi foi lançado antes do Moto 360. Em outras palavras, o Moto 360 é detectado como se fosse um Tablet, esperamos, como diz Jim, que uma atualização na IDE resolva isso.
O pré-requisito para obter uma exibição personalizada do Moto 360 é necessário atualizar o arquivo MobileDevices.xml presente no diretório %AppData%\Roaming\Embarcadero\BDS\15.0\MobileDevices.xml. Localize esse arquivo e em seguida o elemento MobileDevices. Adicione o código seguite:
<MobileDevice> <Displayname>Moto360</Displayname> <Name>Moto360</Name> <DevicePlatform>3</DevicePlatform> <FormFactor>2</FormFactor> <Portrait Enabled="True" Width="240" Height="218" Top="102" Left="29" StatusbarHeight="0" StatusBarPos="0" Artwork="C:\Users\adrianosantos\Documents\Embarcadero\Studio\Projects\HelloMoto360\Moto360.png" /> <UpsideDown Enabled="False" Width="240" Height="218" Top="0" Left="0" StatusbarHeight="0" StatusBarPos="0" Artwork="" /> <LandscapeLeft Enabled="False" Width="240" Height="218" Top="0" Left="0" StatusbarHeight="0" StatusBarPos="0" Artwork="" /> <LandscapeRight Enabled="False" Width="240" Height="218" Top="0" Left="0" StatusbarHeight="0" StatusBarPos="0" Artwork="" /> </MobileDevice>
Observe apenas atentamente a linha “<Portrait Enable…..>”, pois ao final dela encontramos o caminho completo para a imagem Moto360.png que pode ser baixada juntamente com o código-fonte do pacote FireUIViews.dpk completo nesse link. Você precisa instalar esse pacote para que o Delphi/C++ inclua a view na IDE. No próprio link informado anteriormente, há todas as informações necessárias para isso caso tenha dúvidas.
Feitas as devidas configurações, você poderá iniciar uma nova aplicação no Delphi/C++ e adicionar uma nova view Moto360 que estará disponível na lista de views da IDE. Veja na Figura 1 como sua aplicação deverá se parecer. No meu caso, fiz como Jim orienta em seu post. Ele redimensiona o formulário Master e adiciona um TCircle dentro dele, assim como modifica a cor de fundo do formulário, veja:
Você notará um círculo vermelho na superfície de design. Eu adicionei este para ver onde os cantos estão (já que o display é redondo). Em tempo de execução, você quase não vê o círculo vermelho, se você segurar o botão direito do relógio. Escondemos isso tem produção. Eu coloquei a TCircle na posição -1 x -1 e defini o tamanho de 242 x 242. Desta forma, o círculo segue o painel e não a área de exibição da tela.
Alguns componentes foram adicionados, tais como um TImage e quatro Labels.
Figura 1. Aplicativo criado no Delphi
Distribuindo app no Moto 360 Watch
Assim como outros dispositivos Android, é necessário ativar o relógio para debug. Siga os passos que McKeeth fala nas descrições abaixo:
- Segure o botão do lado até que Settings seja exibido;
- Deslize para About e toque nele;
- Toque no build number até que ele ative o modo desenvolvedor;
- Passe para as definições e, em seguida, toque em Developer options;
- Toque em ADB Debugging até que ele marque como Ativado;
- Toque em Debug over Bluetooth até marcar como Ativado.
- No seu telefone emparelhado, navegue até Android Wears (engrenagens na parte superior direita)
- Ative Debugging over Bluetooth.
- Ele deve mostrar
- Host: disconnected
- Target: connected
- Alvo é o relógio, o responsável é o computador.
- Ele deve mostrar
Para fazer o envio do computador para o relógio, você precisa executar os comandos abaixo. Um arquivo .BAT foi criado para isso, para facilitar o deploy. Não sei se notaram, mas é necessário fazer o deploy usando o celular que está conectado ao relógio por meio de Bluetooph. Omitimos algumas informações no post original do Jim para facilitar o entendimento. Depois você poderá ler o tutorial completo no site dele.
@echo off REM optional cleaning up adb disconnect localhost:4444 adb -d forward –remove-all REM this is the connection adb -d forward tcp:4444 localabstract:/adb-hub adb -d connect localhost:4444 REM these lines are to see if it worked echo Here is the forwarded ports . . . . adb forward –list echo. echo Wait a second for it to connect . . . . pause adb devices
O ADB deve mostrar algo semelhante a:
List of devices attached 123456abcd device localhost:4444 device
Aguarde porque o aparelho deve receber o aplicativo e inicializar de maneira normal. Provavelmente será mostrado como Conectado tanto em Host quanto em Target. Se tudo correr bem, você deve ver algo como na foto que Jim nos envia.
É claro que ser você não tem um Moto 360 e não tem a possibilidade de comprar um aparelho desse, Jim ainda dá a dica para rodar em um emulador:
Se você não tem uma Moto 360, você pode configurar um emulador Android (AVD) em seu lugar. Eu fiz isso. Você precisa fazer o download da imagem Android 4.4W (API20) SDK Platform and ARM System.
Veja os prints com as configurações do SDK e do AVD.
Conclusões
Jim McKeeth nos mostra que o Delphi/C++ estão cada vez mais modernos nos dando um leque cada vez maior de possibilidades. Isso é ótimo. Ele ainda finaliza seu artigo informando que adicionou também uma view personalizada para Samsung Gear Live. Postaremos aqui uma tradução de seu artigo com foco nesse relógio.
Author: Adriano Santos
1 comentário
Comments are closed.
[…] algum tempo, falamos aqui sobre como distribuir aplicativos para os relógios inteligentes Moto360 da Motorola e também o […]