:::: MENU ::::

Distribuindo app no Moto 360 Watch

  • dez 18 / 2014
  • 1
Moto 360 Delphi
Notícias, XE7, [Tutorial]

Distribuindo app no Moto 360 Watch

 
Difficulty level not set for this Post

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.
Moto 360 Delphi
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:

  1. Segure o botão do lado até que Settings seja exibido;
  2. Deslize para About e toque nele;
  3. Toque no build number até que ele ative o modo desenvolvedor;
  4. Passe para as definições e, em seguida, toque em Developer options;
  5. Toque em ADB Debugging até que ele marque como Ativado;
  6. Toque em Debug over Bluetooth até marcar como Ativado.
  7. No seu telefone emparelhado, navegue até Android Wears (engrenagens na parte superior direita)
  8. Ative Debugging over Bluetooth.
    1. Ele deve mostrar
      1. Host: disconnected
      2. Target: connected
    2. Alvo é o relógio, o responsável é o computador.

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.

Moto 360 Delphi

É 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.

Moto 360 Delphi


Moto 360 Delphi

 


 

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.

Código-fonte completo
Artigo Original (Inglês)

foto

One Comment

[Fale Conosco] Contato