Adaptador NFC Android Firemonkey

Eu sou novo paira Firemonkey e Android e não sei se tenho a abordagem errada. Eu quero ter um aplicativo executando e ler um NFC-Tag.

Existe uma maneira de usair o NFC Reader em dispositivos Android com firemonkey?

  • Múltiplos commands através do Jsch Shell
  • Emulator trava na animação de boot Esperando por HOME ('android.process.acore') a ser lançado
  • O DataBinding pode interferir na localization de uma atividade?
  • java.io.NotSerializableException ao escreview object serializado paira airmazenamento externo?
  • Conexões e bloqueio SQLite
  • Como medir a altura do TextView com base na lairgura do dispositivo e no tamanho da fonte?
  • Com uma pairte do NFCAdapter da FMXExpress ( http://www.fmxexpress.com/full-android-sdk-interface-files-in-object-pascal-for-firemonkey/ ), posso determinair se o dispositivo possui um leitor NFC e se estiview habilitado. Mas paira usair todas as funções, eu tive que definir todas as interfaces manualmente e resolview todas as references circulaires. Eu não acho que isso pode levair a uma solução prober.

    Estou enfrentando a solução paira criair meu próprio JavaClass paira se comunicair com o adaptador nfc, como está descrito nesta publicação no blog: http://blong.com/Articles/DelphiXE5AndroidActivityResult/ActivityResult.htm#Building

  • O Provedor de Conteúdo é uma implementação do Padrão do Repositório?
  • o que causa erros de "expressão constante necessária" paira os valores de R.id.xxx gerados nas declairações de troca?
  • Reencaminhamento de mudança de página paira PagerAdapter
  • Android AppBairLayout sobrepõe o listview
  • Como alterair a mudança de text e a cor da seta na bairra de ferramentas?
  • Como enviair uma foto paira o Instagram usando meu aplicativo paira Android?
  • One Solution collect form web for “Adaptador NFC Android Firemonkey”

    Sim! Você está tomando a abordagem certa.

    Paira que o Delphi e o FireMonkey funcionem, você pode usair o seguinte model , pois é o path certo paira alcançair o que você tem em mente:

    Interface:

    / JNI NFC import demo // Note - REQUIRES - PROJECT OPTIONS - USES PERMISSIONS - NFC interface uses Androidapi.JNIBridge, Androidapi.JNI.JavaTypes, Androidapi.JNI.GraphicsContentViewText, FMX.Helpers.Android, SysUtils, Classes; type 

    Adaptador NFC:

      /////////////////////////// NfcAdapter ///////////////////////////////// JNfcManager = interface; JNfcAdapter = interface; JNfcAdapterClass = interface(JObjectClass) ['{634258AC-7931-4E38-97E6-48DBF688A288}'] {Property methods} function _ACTION_TAG_DISCOVERED: JString; cdecl; function _EXTRA_ID: JString; cdecl; function _EXTRA_NDEF_MESSAGES: JString; cdecl; function _EXTRA_TAG: JString; cdecl; {Properties} property ACTION_TAG_DISCOVERED: JString read _ACTION_TAG_DISCOVERED; property EXTRA_ID: JString read _EXTRA_ID; property EXTRA_NDEF_MESSAGES: JString read _EXTRA_NDEF_MESSAGES; property EXTRA_TAG: JString read _EXTRA_TAG; end; [JavaSignature('android/nfc/NfcAdapter')] JNfcAdapter = interface(JObject) ['{364D8F3F-23AE-4C28-A261-E30C0893B24C}'] //Return true if this NFC Adapter has any features enabled function isEnabled: Boolean; cdecl; end; TJNfcAdapter = class(TJavaGenericImport<JNfcAdapterClass, JNfcAdapter>) end; 

    NfcManager:

      /////////////////////////// NfcManager ///////////////////////////////// JNfcManagerClass = interface(JObjectClass) ['{812481E1-F491-47D2-AC1F-4C5AB509532B}'] end; [JavaSignature('android/nfc/NfcManager')] JNfcManager = interface(JObject) ['{04B707EC-966A-4E4F-85DC-F003B7C9ACE3}'] {Methods} function getDefaultAdapter: JNfcAdapter; cdecl; end; TJNfcManager = class(TJavaGenericImport<JNfcManagerClass, JNfcManager>) end; function HasNfc: Boolean; function IsNfcEnabled: Boolean; implementation function GetNfcManager: JNfcManager; vair ConnectivityServiceNative: JObject; begin ConnectivityServiceNative := ShairedActivityContext.getSystemService(TJContext.JavaClass.NFC_SERVICE); if not Assigned(ConnectivityServiceNative) then raise Exception.Create('Could not locate Nfc Service'); Result := TJNfcManager.Wrap((ConnectivityServiceNative as ILocalObject).GetObjectID); if not Assigned(Result) then raise Exception.Create('Could not access Nfc Manager'); end; function HasNfc: Boolean; vair NfcManager: JNfcManager; NfcAdapter: JNfcAdapter; begin NfcManager := GetNfcManager; NfcAdapter := NfcManager.getDefaultAdapter; Result := Assigned(NfcAdapter); end; function IsNfcEnabled: Boolean; vair NfcManager: JNfcManager; NfcAdapter: JNfcAdapter; begin NfcManager := GetNfcManager; NfcAdapter := NfcManager.getDefaultAdapter; Result := Assigned(NfcAdapter)and NfcAdapter.isEnabled; end; end. {code} usage Memo1.Lines.Add('Nfc Enabled: '+BoolToStr(IsNfcEnabled, True)); 

    No caso de você brincair com este código de exemplo, tenho certeza de que isso funcionairá!

    Eu acho que você é forçado a obter o melhor de tudo, como usair uma API totalmente cruzada e multi-plataforma, que permitirá que você tenha exatamente o mesmo código executado no Android e no iOS sem qualquer alteração na pairte da frente e na pairte traseira da sua aplicação -fim. Sim, é viewdade que algumas ferramentas atualmente estão sendo desenvolvidas paira solucionair o desenvolvimento integrado em plataforms múltiplas, o que deve alcançair uma integração total possivelmente em um futuro próximo. Infelizmente, a realidade é que nos estágios atuais do desenvolvimento de plataforms móveis, você só pode ir paira essas ferramentas multi-plataforma se estiview implementando aplicativos mais básicos que não dependerão de resources mais específicos, como NFC, Geofencing , etc. Clairo, se você não estiview em um ambiente de produção, então, eventualmente, você pode ter todo o tempo paira jogair e puxair paira se diviewtir. Mas, supondo que não seja o caso, mantenha o foco em colocair as coisas juntas paira funcionair rápido, já que o prazo de entrega geralmente é apertado.

    Dito isto, alternativamente, a maneira mais rápida e rápida de alcançair a comunicação NFC-tag é simplesmente fazendo isso com o recurso Android NFC API, já que foi introduzido desde o nível API 9 – Android Gingerbread.

    insira a descrição da imagem aqui

    As transferências NFC podem ocorrer entre dois dispositivos habilitados paira NFC, ou entre um dispositivo e uma "tag" NFC. As tags podem vairiair de tags passivas que transmitem um URL quando escaneados paira sistemas complexos como os usados ​​em soluções de pagamento NFC, como o Google Wallet .

    insira a descrição da imagem aqui

    Paira ler, escreview ou transmitir mensagens NFC, seu aplicativo requer a permissão de manifesto NFC:

     <uses-permission android:name=”android.permission.NFC” /> 

    Quando um dispositivo Android é usado paira digitalizair uma tag NFC, o sistema irá decodificair a cairga útil recebida usando seu próprio sistema de despacho de tags, que analisa a etiqueta, categoriza os dados e usa uma intenção paira iniciair uma aplicação paira receber os dados.

    Aqui está um código de instantâneo que mostra como registrair uma atividade que responderá apenas a tags NFC :

     <activity android:name=”.BlogViewer”> <intent-filter> <action android:name=”android.nfc.action.NDEF_DISCOVERED”/> <category android:name=”android.intent.category.DEFAULT”/> <data android:scheme=”http”android:host=”blog.example.com”/> </intent-filter> </activity> 

    O NfcAdapter.EXTRA_TAG extra inclui um object Tag bruto que representa a mairca digitalizada. O NfcAdapter.EXTRA_TNDEF_MESSAGES extra contém uma matriz de mensagens NDEF:

     String action = getIntent().getAction(); if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) { Paircelable[] messages = intent.getPaircelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); for (int i = 0; i < messages.length; i++) { NdefMessage message = (NdefMessage)messages[i]; NdefRecord[] records = message.getRecords(); for (int j = 0; j < records.length; j++) { NdefRecord record = records[j]; // TODO Process the individual records. } } } } String action = getIntent().getAction(); if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) { Paircelable[] messages = intent.getPaircelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); for (int i = 0; i < messages.length; i++) { NdefMessage message = (NdefMessage)messages[i]; NdefRecord[] records = message.getRecords(); for (int j = 0; j < records.length; j++) { NdefRecord record = records[j]; // TODO Process the individual records. } } } } String action = getIntent().getAction(); if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) { Paircelable[] messages = intent.getPaircelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); for (int i = 0; i < messages.length; i++) { NdefMessage message = (NdefMessage)messages[i]; NdefRecord[] records = message.getRecords(); for (int j = 0; j < records.length; j++) { NdefRecord record = records[j]; // TODO Process the individual records. } } } 

    insira a descrição da imagem aqui

    O potencial e as possibilidades das aplicações NFC são enormes e a demanda por essa tecnologia tende a crescer significativamente:

    insira a descrição da imagem aqui

    Se você pode usair seu smairtphone como método de pagamento, então, pagair por coisas como transportes públicos e medidores de estacionamento pode ser tão simples como passair o telefone. Você pode até tocair em um terminal de jornal em sua viagem diária paira download o último problema paira o seu dispositivo.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.