xMova Android

APP

Na parte APP do aplicativo estão as configurações gerais de comportamento da aplicação como configurações de timeout de conexão ou tempo entre cada requisição do GPS por exemplo. Também é onde é cadastrada a URL de comunicação com painel, os dados de instalação e a implementação das telas do tipo Custom.

Formato

O app é definido da seguinte forma:

App appCode=tipo_do_app diskMinSpaceMB=30 diskToleranceSpaceMB=75 retainLogFilesInDisk=12
      id 1
      name Nome_do_Aplicativo
      version 1.0.0
      intVersion 1
      install type=fillAuth inputEntity=AuthInput
      server
              jsonServiceApi url=%jsonServiceApiUrl
              sqlDataSource agro
              defaultOnlineValidator jsonServiceApi
              defaultDataSource jsonServiceApi
              defaultReceiver jsonServiceApi
              versionControl Crc
              timeZoneProvider jsonServiceList path=types.records key=timezone filter=id:obra url=%cmUrlObra
      mobileevents types=1,2,3,4,5,6 // linha opcional

Main main entity=AuthInput fields=descricao
      actions
              Iniciar style=primary margin=0,0,0,0
                      crud Entidade2
              Sair
                      exit
              Reiniciar
                      restart
vars
      _last Entidade1

Constants
      agroHost http://comercial.simova.ws
      agroWS %agroHost/SimovaResponse
      jsonServiceApiUrl %agroWS/x-mova
      cmUrlObra %jsonServiceApiUrl/list?json={"appCode":"X","types":[{"name":"Obra"}],"auth":{}}

InstallData
      Entidade1
              1       10      Entidade1 A
              2       20      Entidade1 B

Atributos do App

Primeira Linha do App

  • appCode: Texto utilizado para definir o tipo de aplicativo. (ex.: appCode=L)
  • alertTimer: Habilita a funcionalidade de verificação de alerta.
  • alertTimer - timerInterval: Define o intervalo de tempo que a função alertTimer será chamada. (ex.: alertTimer timerInterval=1m)
  • darkTheme: Modifica todo o aplicativo para usar o tema escuro. Ideal para usar em local com muita claridade.
  • dateOneScreen: Habilita a insersão de data manual usando tela de data do android.
  • diskMinSpaceMB: Define a tolerância para fechar a aplicação ao iniciá-la, pois disco está em estado crítico, valor padrão é 20. Deve ser usado junto ao diskToleranceSpaceMB. (ex.: diskMinSpaceMB=20)
  • diskToleranceSpaceMB: Define tolerância de alerta de disco, deve ser usado junto ao diskMinSpaceMB, valor padrão é 30. (ex.: diskToleranceSpaceMB=30)
  • retainLogFilesInDisk: Define a quantidade de arquivos de log a serem mantidos no disco. Valor default=5.
  • multiLang: Habilita a função de multiplos idiomas.
  • networkWait: Define o tempo para espera para tentar conectar com o servidor. (ex.: networkWait=4s)
  • networkTimeout: Define o tempo para espera de resposta do servidor, após conectado.(ex.: networkTimeout=15s)
  • notResetWifi: Usado para desabilitar o reset do WIFI quando houver um erro no sincronismo.
  • offlineDate: Define o tipo de data que o sistema utilizará caso não consiga obter data do servidor ou gps. (ex.: offlineDate=Device ou offlineDate=Manual) (default = Device)
  • periodicSync: Habilita o sincronismo periódico das entidades do tipo backgroundIn.
  • periodicSync - syncInterval: Define o intervalo de tempo que será realizado o sincronismo. (ex.: periodicSync syncInterval=1m)
  • resetMobileData: Usado para habilitar o reset dos dados móveis quando houver um erro no sincronismo.
  • resetWifi : Usado para habilitar o reset do WIFI quando houver um erro no sincronismo.
  • simulateNoServer: Utilizado para teste. Permite a instalação do fluxo sem realizar o primeiro sincronismo. Utiliza os dados do installCode para as entidades sync=in.
  • maxLogFileSizeMB: Utilizado para definir o valor que o arquivo de log deve ter para ser renomeado e compactado. Caso não seja definido o valor padrão é 5
  • mobileevents: Determina que sua aplicação irá salvar como SYNC_OUT códigos de representação de eventos ocorridos no dispositivo, é preciso especificar os eventos identificados com types. Exemplo: mobileevents types=1,2,3.
  • VoiceToast: Determina se a aplicação irá utilizar o sintetizador do voz do aparelho para ler os toasts quando forem apresentados.
  • airPlane: Determina se a aplicação irá ignorar o “Modo Avião” do dispositivo. Por padrão a aplicação mostra uma mensagem de erro e se fecha quando esse quando o modo avião está ativado.
  • simulateCorruptedSource: Usado em testes para simular erro de Source corrompido. Ao utilizá-lo o fluxo começará a enviar uma flag junto da requisição de instalação e update de fluxo, fazendo o server retornar um source corrompido.
  • confirmDeviceDateHour: Usado para ativar a confirmação da data/hora manual, comparando com a data do celular.

Corpo do App

  • afterSync: Realiza o evento após realizar o sincronismo.
  • afterUpdate: Realiza a instrução após realizar a atualização de versão.
  • beforeUpdate: Realiza a instrução antes de realizar a atualização de versão. Caso retorne falso, não permite atualizar o fluxo, exibindo uma mensagem para o usuário.
  • buffer: Permite a configuração de como deve se comportar a rotina de buffer para este aplicativo.
  • buffer - maxFileSizeMB: Determina qual o tamanho máximo que o arquivo pode atingir antes de ser renomeado e compactado. (Padrão: 5)
  • buffer - maxFilesToKeep: Determina quantos arquivos deverão ser mantidos em disco, além do arquivo corrente de buffer. (Padrão: 5)
  • buffer - saveBinary: Determina se deve ser salvo o valor dos dados binários no formato ‘String Base 64’ no arquivo de buffer. Por padrão quando o atributo não está presente não são salvos os dados binários no buffer.

Exemplo:

App syncInterval=5m networkWait=4s networkTimeout=30s appCode=X offlineDate=Device
      id 8995
      name Sample
      version 1.0.158
      intVersion 159
      install type=fillAuth inputEntity=AuthInput
      clearOptionMenu password=123
      settingsOptionMenu password=123321
      buffer maxFileSizeMB=0.7 maxFilesToKeep=2 saveBinary
      beforeUpdate
              toast @before_update
  • bluetooth: veja: Sincronismo Off-line por Bluetooth
  • bluetooth - sender: Habilita a função de envio de dados via bluetooth aplicativos xmova.
  • bluetooth - receiver: Habilita a função de recebimento de dados via bluetooth aplicativos xmova.
  • bluetooth - fileReceiver: Habilita a função de recebimento de arquivo via bluetooth aplicativo xmova e PegaDados.
  • bluetooth - restorePassword: Usado para definir uma senha numérica, usada para reenviar os dados via bluetooth (default: 123). (ex.: bluetooth sender password=456).
  • bluetooth - maxBackupDays=[dias]: Usado para estipular a quantidade de dias que o backup do bluetooth deve ser mantido, caso não seja informado o padrão é 90 dias.
  • camera - quality: Configura a qualidade da imagem gravada quando tira foto. (ex.: camera quality=20).
  • camera - resolution: Configura a resolução da imagem gravada quando tira foto. (ex.: camera resolution=480).
  • clearOptionMenu - password: Usado para definir uma senha numérica para que se possa usar a opção de limpar o fluxo (default: 123). (ex.: clearOptionMenu password=456).
  • settingsOptionMenu - password: Usado para definir uma senha numérica para acesso as configurações do aplicativo (default: 123). Esta tela permite alterar o lado do teclado (visando canhotos), alterar o tempo do timeout de sincronização etc.
  • defaultFormat - format: Usado para definir a formatação dos números decimais, por padrão os números decimais são formatados automaticamente, caso este atributo seja usado será desabilitada a formatação automática dos números decimais. (ex.: defaultFormat format=manualDecimal).
  • getDeviceName: Define o nome do aparelho que será apresentado para seleção na lista de bluetooth.

Exemplo:

getDeviceName
        AuthInput a = selectLast from AuthInput
        return a.celular
  • location: veja: GPS
  • location - minTime: Intervalo de tempo para o core atualizar a posição atual do GPS.
  • location - minDistance: Distância mínima para o core atualizar a posição atual do GPS.
  • location - minLastTime: É o tempo da última posição válida obtida do GPS que o apontamento pode utilizar.
  • location - tracking: Habilita o rastreamento. Deve adicionar minDistance = 0m. O minTime` também deve ser configurado, e seu valor deve ser maior que zero.
  • location - onInsert: Utilizado para adicionar informações adicionais no apontamento.
  • logo: Define o logo apresentado nas configurações que é exibido em todos os menus. (default: logo_simova)(ex.: logo name=descricao_do_logo). Devido a implementação o logo somente será obtido na instalação do fluxo. Caso o arquivo logo seja alterado mas mantenha o mesmo nome, ele não será baixado novamente. Somente será alterado no aplicativo se o nome do arquivo for diferente do anterior.
  • mainInfo: Usado para atributos de controle da tela Main (tela inicial ou abaixo do menu do boletim)
  • mainInfo - phoneNumber: Colocando esse atributo o número do telefone será exibido na tela Main (Somente se houver suporte do SimCard e permissão de API).
  • mainInfo - hidePendingRecords: Atributo usado para ocultar a informação de registros pendentes da tela de informações.
  • messageAlert - sound: Usado para definir o som a ser tocado quando a mensagem for recebida (default: BarcodeBeep). Opções disponíveis: none, BarcodeBeep, BarcodeError, AlertTimer, BarcodeRead. (ex.: messageAlert sound=none).
  • messageAlert - soundLoop: Usado para definir a quantidade de vezes que o som será tocado (default: 2). (ex.: messageAlert soundLoop=3).
  • messageAlert - vibrateTime: Usado para definir quanto tempo irá durar cada vibração (default: 1s). (ex.: messageAlert vibrateTime=3s).
  • messageAlert - vibrationLoop: Usado para definir a quantidade de vezes que a vibração irá ocorrer (default: 2). (ex.: messageAlert vibrationLoop=3).
  • networkReset - minTime: Define o tempo mínimo após o reset da rede (wifi/mobile data) o aplicativo deve resetar novamente a rede se o sincronismo falhar (default 30m) (Somente é feito o reset da rede quando ResetMobileData e/ou ResetWifi estão habilitados). (ex.: networkReset minTime=20m, networkReset minTime=1h)
  • onStart: Evento chamado ao entrar no aplicativo.
  • onExit: Evento chamado ao sair do aplicativo.
  • pictureAnytime: Habilita a opção de tirar foto a qualquer momento. Grava as fotos na galeria, e permite escolher no preechimento de um campo do tipo Binary picture.
  • reader - camera - minQuality: Usado para definir a qualidade mínima aceitável de um código de barras lido pela câmera, sendo 0 a qualidade máxima, 5 boa qualidade, 15 qualidade aceitável, 30 qualidade razoável, etc. Pode-se usar qualquer número. O default inicial era 3.
  • reader - camera - types: Lista com tipos de códigos de barras aceitos pela leitura. Estes são os tipos aceitos: PARTIAL,EAN8,UPCE,ISBN10,UPCA,EAN13,ISBN13,I25,DATABAR,DATABAR_EXP,CODABAR,CODE39,PDF417,QRCODE,CODE93,CODE128.
  • reader - camera - sizes: Lista com quantidades de caracteres de códigos de barras aceitos pela leitura. O ideal é limitar para o padrão que será lido para não haver leituras falsas.
  • support - password: Usado para definir uma senha numérica, usada para enviar log ao suporte. (default 123). (ex.: support password=456)
  • syncOptionMenu: Usado para desabilitar (syncOptionMenu false) ou habilitar (syncOptionMenu true) a opção de sincronizar do menu principal (default habilitada).
  • serverUrl: Define url do servidor (ex.: serverUrl http://xmova-server-dev.simova.ws/x/m). Também é possível utilizar múltiplas URLs, deve ser usada da forma: serverUrl http://xmova-server-dev.simova.ws/x/m,http://url2.simova.ws/x/m,http:url3.simova.ws/x/m, ou seja, url1,url2,url3, sem espaços, apenas vírgula como separador. Sua regra funciona da seguinte forma: enquanto uma url possibilitar sincronismo irá utilizá-la, caso de erro irá para próxima até o final da lista, retornando ao começo e assim executando o processo novamente, semelhante ao elemento circular queue. Também é possível inserir um nano server, basta adicionar a url e ao seu início nano:, exemplo: nano:http://192.168.0.1
  • updateUrl: Define url de atualização do aplicativo. (ex.: updateUrl http://xmova-center-dev.simova.ws/xmova-center/update)

Tipos de Tela

CUSTOM : Tela Customizável

Exemplo:

CustomScr custom title="Resumo"
      views
              recordDetail getRecord=_last fields=data,operacao,medicao labels
      events
              beforeInit
                      _last = selectLast from Apontamento
              beforeClose
                      _last = null
  • fontssize: Utilizado para definir o tamanho das fontes dos campos, utiliza a unidade Scale-independent Pixels (SP). Os dados são passados em forma de array, identificando os campos esquerda para a direita, caso algum campo não exista, define o valor 16sp (padrão). Valores aconselháveis para as fontes são em torno de 10 até 30, acima, pode ficar exageradamente grande.
  • titlefontssize: Semelhante ao atributo fontssize, a diferença é que aplica a fonte aos títulos que identificam seus campos.

Exemplo:

CustomScr custom title="Resumo"
      views
              recordDetail getRecord=_last fields=data,operacao,medicao labels fontssize=10,12,14 titlefontssize=30,20,10
              button label="@ActionBarSubtitle" style=primary margins=10,8,10,8
                      onClick
                              crud ActionBarSubtitleEntity
      events
              beforeInit
                      _last = selectLast from Apontamento
              beforeClose
                      _last = null
  • style: Estilização do botão, aceita os tipos definidos, como no Bootstrap: primary, default, success (padrão), warning, info e danger.
  • margins: Padrão html, default será 0,0,0,0 (top, right, bottom, left).

MAIN : Tela principal do aplicativo

Exemplo:

Main main entity=AuthInput fields=obra
      actions
              Boletim
                      crud Boletim
              Sair
                      exit

MESSAGE : Tela de mensagens

Exemplo:

MessageScr message title=Mensagem entity=MensagemRecebida messageField=texto dateField=data fromField=remetente
      actions
              ok
                      INSERT INTO ResumoMensagem (texto,data,remetente,enviada) VALUES (:texto,:data,:remetente,false)

TABLELAYOUT : Tela para exibir conteúdo em formato de tabela

Exemplo:

TableScr tableLayout title="Tabela"
      views
              recordList getRecords=_table
                      recordDetail fields=campo1,campo2 labels
      events
              beforeInit
                      _table =  SELECT * FROM TabelaResumo
              beforeClose
                      _table = null
  • aligments: (LEFT|CENTER|RIGHT) Utilizado para definir o posicionamento do texto em cada coluna, o alinhamento deve respeitar a ordem dos campos a que será aplicado. No exemplo abaixo o primeiro campo será alinhado à esquerda e o segundo campo ao centro, o valor default do alinhamento caso não seja definido é ‘CENTER’.

Exemplo:

TableScr tableLayout title="Tabela"
      views
              recordList getRecords=_table
                      recordDetail fields=campo1,campo2 aligments=LEFT,CENTER labels
      events
              beforeInit
                      _table =  SELECT * FROM TabelaResumo
              beforeClose
                      _table = null
  • fontssize: Utilizado para definir a cada coluna o tamanho da sua fonte, utiliza a unidade Scale-independent Pixels (SP). Os dados são passados em forma de array, identificando as colunas da esquerda para a direita, caso alguma coluna não exista, define o valor 16sp (padrão). Valores aconselháveis para as fontes são em torno de 10 até 30, acima, pode ficar exageradamente grande.

Exemplo:

TableScr tableLayout title="Tabela"
      views
              recordList getRecords=_table
                      recordDetail fields=campo1,campo2 fontssize=16,10,11
      events
              beforeInit
                      _table =  SELECT * FROM TabelaResumo
              beforeClose
                      _table = null

WEBVIEW : Tela para exibir uma página http

Exemplo:

Web webView fullScreen title="WebView"
      loadUrl
              return _urlToLoad

      postVars
              String user
              String password

      post
              user = @"userName"
              password = @"userPassword"

      onHttpError
              if httpStatusCode == 404
                      toast PAGE NOT FOUND

      events
              beforeInit
                      _urlToLoad =  @http://www.somepage.com
  • fullScreen: Quando presente faz com que o aplicativo ocupe toda a tela do dispositivo quando a tela de webView é exibida, ocultando a barra de notificação.
  • title: Quando a propriedade ‘title‘ não é definida a Action Bar do aplicativo é ocultada.
  • loadUrl: Evento responsável por retornar um texto que represente a url a ser acessada pelo WebView.
  • postVars: Local onde são declaradas as variáveis que serão enviadas no payload da requisição POST feita para o WebView. Somente utilizada quando o evento ‘post‘ está presente.
  • post: Evento responsável por atribuir o valor às variáveis presentes em ‘postVars‘ e que serão enviadas na requisição POST.
  • onHttpError: Evento responsável por repassar para o aplicativo dinânmico os erros ao carregar recursos no WebView. Podem ser usadas as variáveis: originalCode (Representa o valor original enviado pelo Android, httpStatusCode (Representa uma conversão do ‘originalCode’ para um código semelhante do protocolo HTTP) e url (Representa o recurso que não pode ser carregado.

TABELA DE EVENTOS: Código e Descrição dos Eventos

O elemento mobileevents descritos no App, precisa referenciar os códigos de suporte, a seguir uma tabela descrevendo os eventos suportados e sua funcionalidade:

Código Descrição
1 Battery USB is charging
2 Battery AC is charging
3 Battery is not charging
4 Network is not connected
5 Network is connected (Unknown)
6 Network is connected in VPN
7 Network is connected in Wifi
8 Network is connected in Mobile
9 Application will call Android System Installer to Update Xmova