TMobile é uma classe utilitária que agrupa métodos focados na plataforma móvel TOTVS | FatClient Embarcado e promove as integrações com aplicativos ou com o hardware do dispositivo móvel.
Hierarquia
- TMobile
Construtores
Propriedades
Métodos
Observações
- A plataforma móvel TOTVS | FatClient Embarcado para Android está na versão Beta (para testes e avaliações) e encontra-se disponível na loja Google Play Store.
- Atualmente a classe TMobile está disponível somente para dispositivos Android.
Exemplos
#include "totvs.ch" // Definições para integração com leitor de código de barras #define PRODUCT_MODE "PRODUCT_MODE" // Decode only UPC and EAN barcodes. This is the right choice for shopping apps which get prices, reviews, etc. for products. #define ONE_D_MODE "ONE_D_MODE" // Decode only 1D barcodes. #define QR_CODE_MODE "QR_CODE_MODE" // Decode only QR codes. #define DATA_MATRIX_MODE "DATA_MATRIX_MODE" // Decode only Data Matrix codes. #define AZTEC_MODE "AZTEC_MODE" // Decode only Aztec. #define PDF417_MODE "PDF417_MODE" // Decode only PDF417. // Definições dos valores usados para orientação da tela do dispositivo #define ORIENTATION_UNSPECIFIED -1 // Usado somente para o SetScreenOrientation. Posição livre definida pelo usuário ou sensor do dispositivo. #define ORIENTATION_PORTRAIT 1 // Tela na posição retrato. #define ORIENTATION_LANDSCAPE 2 // Tela na posição paisagem. #define ORIENTATION_INVERTED_PORTRAIT 4 // Tela na posição retrato invertido. #define ORIENTATION_INVERTED_LANDSCAPE 8 // Tela na posição paisagem invertida. Function u_tstMobile() Local calibri18Black := TFont():New("Calibri",,018,,.T.,,,,,.F.,.F.) DEFINE MSDIALOG oDlg TITLE "Testes com TMobile" FROM 000, 000 TO 195, 700 COLORS 0, 16777215 PIXEL PRIVATE oMbl := TMobile():New(oDlg) oTFont:= TFont():New('calibri',,-18,,.T.) oTSay := TSay():New( 005, 045,{||"Integrações disponíveis na classe tMobile para a plataforma TOTVS | FatClient Embarcado"},oDlg; ,,oTFont,.T.,.F.,.F.,.T.,0,,270,020,.F.,.T.,.F.,.F.,.F.,.F. ) SetCss("TButton{color: black;}") @ 035, 007 BUTTON oButton1 PROMPT "Ler Código de Barras" SIZE 150, 012 OF oDlg ACTION {|| u_tmbl1() } PIXEL @ 035, 180 BUTTON oButton2 PROMPT "Listar Dispositivos Bluetooth Pareados" SIZE 150, 012 OF oDlg ACTION {|| u_tmbl2() } PIXEL @ 055, 007 BUTTON oButton3 PROMPT "Capturar Foto" SIZE 150, 012 OF oDlg ACTION {|| u_tmbl3() } PIXEL @ 055, 180 BUTTON oButton4 PROMPT "Mostrar Orientação da Tela" SIZE 150, 012 OF oDlg ACTION {|| u_tmbl4() } PIXEL @ 075, 007 BUTTON oButton5 PROMPT "Especificar Orientação da Tela" SIZE 150, 012 OF oDlg ACTION {|| u_tmbl5() } PIXEL @ 075, 180 BUTTON oButton6 PROMPT "Ativar bScreenOrientationChanged" SIZE 150, 012 OF oDlg ACTION {|| u_tmbl6() } PIXEL ACTIVATE DIALOG oDlg CENTERED Return Static Function u_tmbl1() LOCAL cBarType LOCAL aBarResult // Especificar aqui um tipo de código de barras para limitar a leitura. //cBarType:= PRODUCT_MODE; cBarType:= ""; aBarResult:= oMbl:BarCode() If aBarResult[1] = "" sMsg := "Nenhum código de barras foi lido." Else sMsg := "Código de barras lido:" + chr(13) + chr(13) + "Código: " + aBarResult[1] + chr(13) + "Formato: " + aBarResult[2] EndIf MsgInfo(sMsg) Return Static Function u_tmbl2() LOCAL aDevicesResult Local i aDevicesResult:= oMbl:GetPairedBluetoothDevices() sMsg := "" For i := 1 to len(aDevicesResult) sMsg := sMsg + "Nome: " + aDevicesResult[i][1] + chr(13) sMsg := sMsg + "Endereço: " + aDevicesResult[i][2] + chr(13) + chr(13) Next i If sMsg = "" sMsg := "Nenhum dispositivo pareado ou interface Bluetooth desligada." Else sMsg := "Dispositivos Bluetooth Pareados:" + chr(13) + chr(13) + sMsg EndIf MsgInfo(sMsg) Return Static Function u_tmbl3() Local cFilePath Local cMsg DEFINE DIALOG oDlg TITLE "Exemplo TMobile TakePicture" FROM 180,180 TO 610,700 PIXEL cFilePath:= oMbl:TakePicture() if (cFilePath = "") cMsg := "Nenhuma imagem foi gravada." else cMsg := "Arquivo: " + cFilePath endif // Por ser o Android um sistema baseado no linux e para indicar que o arquivo encontra-se no // lado do client, é adicionada uma letra de unidade de disco fictícia. cFilePath:= "C:" + cFilePath oTBitmap1 := TBitmap():New(01,01,260,184,,cFilePath,.F.,oDlg,,,.F.,.T.,,,.F.,,.T.,,.F.) oTBitmap1:lAutoSize := .F. oSay:= TSay():New(187, 02, {||cMsg},oDlg,,,,,,.T.,CLR_RED,CLR_WHITE,200,10) oTButton1 := TButton():New( 200, 110, "Fechar", oDlg, {||oDlg:End()},40,10,,,.F.,.T.,.F.,,.F.,,,.F. ) ACTIVATE DIALOG oDlg CENTERED Return Static Function u_tmbl4() PrintOrientation( oMbl:GetScreenOrientation() ) Return Static Function u_tmbl5() DEFINE MSDIALOG oDlgInput TITLE "Escolha uma orientação para a tela" FROM 180,180 TO 260,360 PIXEL nRadio := 1 aItems := {'-1=Unspecified','1=Portrait','2=Landscape','4=Inverted Portrait','8=Inverted Landscape'} cCombo1:= aItems[1] oCombo1 := TComboBox():New(01,01,{|u|if(PCount()>0,cCombo1:=u,cCombo1)},; aItems,80,20,oDlgInput,,,,,,.T.,,,,,,,,,'cCombo1') oBtn1 := TButton():New( 25, 002, 'Ok', oDlgInput, {|| oMbl:SetScreenOrientation(VAL(cCombo1)), oDlgInput:End() },25,15,,,.F.,.T.,.F.,,.F.,,,.F. ) oBtn2 := TButton():New( 25, 034, 'Cancela', oDlgInput, {|| oDlgInput:End() },25,15,,,.F.,.T.,.F.,,.F.,,,.F. ) ACTIVATE MSDIALOG oDlgInput CENTERED Return Static Function u_tmbl6() oMbl:bScreenOrientationChanged := { |nOrientation| PrintOrientation(nOrientation) } MsgInfo("O blobo de código bScreenOrientationChanged foi ativado." + CRLF + ; "Mude a orientação da tela do dispositivo móvel para que" + CRLF + ; "uma mensagem seja exibida mostrando a nova orientação.") Return Static Function PrintOrientation( nOrientation ) cMsg:= "" Do Case Case nOrientation == ORIENTATION_PORTRAIT cMsg:= "Portrait Orientation" Case nOrientation == ORIENTATION_LANDSCAPE cMsg:= "Landscape Orientation" Case nOrientation == ORIENTATION_INVERTED_PORTRAIT cMsg:= "Inverted Portrait Orientation" Case nOrientation == ORIENTATION_INVERTED_LANDSCAPE cMsg:= "Inverted Landscape Orientation" OtherWise cMsg:= "Not supported!" EndCase MsgInfo(cMsg) Return
Abrangência
TOTVS | FatClient Embarcado versão Beta para Android.
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas