Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

« Anterior Versão 15 Próxima »

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.

  • Sem rótulos