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