Lectura de códigos de barras Delphi xe7, evento después de la intención que no desencadena

En mi aplicación, desarrollada con XE7 para Android / iOS, tengo un formulario para escanear códigos de barras. Al encontrar un código de barras, mi aplicación valida si es un código de barras aceptable o no. Siguientes tutoriales aquí: http://www.fmxexpress.com/qr-code-scanner-source-code-for-delphi-xe5-firemonkey-on-android-and-ios/

Actualmente estoy probando en Android y soy capaz de integrar el escaneo y la lectura de códigos de barras, pero el evento 'onBarCode' no se dispara cuando vuelve de la actividad compartida de encontrar el código de barras. El mismo código funcionó bien con versiones anteriores de Rad Studio (XE4, XE5, XE6) pero ahora en XE7 no.

Estos son algunos fragmentos de código:

... begin Scanner := TAndroidBarcodeScanner.Create(true); Scanner.OnBarCode := BarcodeHandler; Scanner.Scan; end; procedure TmScannerForm.BarcodeHandler(Sender: TAndroidBarcodeScanner; BarCode: String); begin text1.Text := Barcode; memo1.PasteFromClipboard; AddBarcode(BarCode, true); end; 

AddBarCode es la misma que he utilizado para validar y agregar código de barras a una lista, pero no lo incluí, porque ese código no es el problema – ni siquiera está desencadenando. El Text1.text: = Código de barras y memo1.paseFromClipboard estaban en su para validar la incluso no fue disparar demasiado. Puedo confirmar que los códigos de barras se están leyendo, porque si toco y pego manualmente, aparece el código de barras.

¿Por qué esto no funciona en XE7 como lo hizo en versiones anteriores de Rad Studio?

Andrea Magni tiene una solución más elegante que el temporizador en su blog basado en el manejo de eventos.

Me gustaría comentar para enviar el enlace, pero no tengo suficiente reputación. El enlace a su blog es:

http://blog.delphiedintorni.it/2014/10/leggere-e-produrre-barcode-con-delphi.html

Tal vez esto pueda ayudarte. El blog está en italiano sin embargo, pero las fuentes se proporcionan y se explican por sí mismos.

Hay un fragmento de código fuente en http://john.whitham.me.uk/xe5/ que parece utilizable (basado en Zxing):

  intent := tjintent.Create; intent.setAction(stringtojstring('com.google.zxing.client.android.SCAN')); sharedactivity.startActivityForResult(intent,0); 

El código en el artículo vinculado también muestra cómo recibir el resultado de Intent. (No funciono con Delphi en Android, así que no estoy seguro de si esa parte utiliza una buena práctica – TTKRBarCodeScanner utiliza una solución con un temporizador y el Portapapeles).

Me gustaría probar esto como una alternativa para ver si funciona.

Este código funciona para mí!

Establezca el temporizador activado en true cuando ejecute el código de exploración

 procedure Tform.Timer1Timer(Sender: TObject); begin if (ClipService.GetClipboard.ToString <> '') then begin timer1.Enabled:=false; zSearch.Text := ClipService.GetClipboard.ToString; //Do what you need end; end; 

Este código para mí funciona bien!

En andorid.BarcodeScanner

 function TAndroidBarcodeScanner.HandleAppEvent(AAppEvent: TApplicationEvent; AContext: TObject): Boolean; var aeBecameActive : TApplicationEvent; begin aeBecameActive := TApplicationEvent.BecameActive; if FMonitorClipboard and (AAppEvent = aeBecameActive) then begin GetBarcodeValue; end; end; 
  • Cómo decodificar datos utilizando Zxing C ++
  • Cómo establecer el tamaño del mapa de bits en ZXing?
  • Android Genera código QR y código de barras usando Zxing
  • Integre ZXing en Android Studio
  • Recursos para Android de Xamarin NotFoundException ZXingNetMobile
  • ¿Cómo abrir la pantalla de escaneo "zxing Barcode" en una pequeña ventana?
  • Uso de ZXing para crear una aplicación de escaneo de códigos de barras Android
  • ZXing Android Generar código de barras 1D
  • ¿Cómo incluir la biblioteca Zxing en el proyecto android?
  • Un escáner de QR dentro de un fragmento
  • ¿Puedo usar Zxing para fines comerciales?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.