=========
`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: :ref:`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: :ref:`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 |
+--------+----------------------------------------------------------------+