es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

DELPHI 10.4, recibir resultado de salida via Broadcast de escáner de códigos de barras.

Tengo un dispositivo Sunmi L2s, y estoy tratando de recibir el resultado de un escaneo de código de barras a través de una transmisión a una aplicación de Android. Me gustaría crear una aplicación que, cuando presiono el botón de hardware para escanear (botón naranja al lado del teléfono), muestre el código de barras en un TLabel.Text en la aplicación.

Encontré código aquí en StackOverflow, pero no puedo hacer que reciba los resultados, y estoy recibiendo un mensaje cuando la aplicación se inicia que dice “External exception 0”.

Soy nuevo en el desarrollo de Delphi / Android, ¡así que cualquier ayuda es bienvenida!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Solución para recibir los resultados de un escaneo de código de barras vía broadcast en una aplicación de Delphi para Android.

    Para recibir los resultados de un escaneo de código de barras vía broadcast en una aplicación de Delphi para Android, se puede utilizar el siguiente código:

    implementation
    
    {$R *.fmx}
    
    uses
      FMX.Platform.Android, Androidapi.JNI.JavaTypes, Androidapi.JNI.Net,
      Androidapi.JNI.Os, Androidapi.Helpers;
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      TMessageManager.DefaultManager.SubscribeToMessage(TMessageReceivedNotification,
        HandleActivityMessage);
    
      MainActivity.registerIntentAction(
        StringToJString('com.sunmi.scanner.ACTION_DATA_CODE_RECEIVED'));
    end;
    
    procedure TForm1.HandleActivityMessage(const Sender: TObject;
      const M: TMessage);
    var
      Intent: JIntent;
      Barcode: JString;
    begin
      if M is TMessageReceivedNotification then begin
        Intent := TMessageReceivedNotification(M).Value;
        if (Intent <> nil) and Intent.getAction.equals(
            StringToJString('com.sunmi.scanner.ACTION_DATA_CODE_RECEIVED')) then begin
          Barcode := Intent.getStringExtra(
            StringToJString('com.sunmi.scanner.EXTRA_DATA'));
          if Barcode <> nil then
            Label1.Text := JStringToString(Barcode);
        end;
      end;
    end;
    
    end.
    

    Este código se suscribe al mensaje TMessageReceivedNotification, y registra una acción de intent utilizando MainActivity.registerIntentAction. En el método HandleActivityMessage, el código verifica si la acción de intent recibida es para el escáner de código de barras, y si es así, extrae los datos del código de barras del intent y actualiza la propiedad TLabel.Text. Asegúrese de actualizar Label1 en el código con su objeto TLabel específico.

Comments are closed.