Classe br.com.softwareexpress.sitef.android.CliSiTef

Neste modelo, as transações utilizam o conceito de listener/eventos/call-back. Ou seja, a automação comercial registra uma função que será chamada durante o fluxo da transação.

Por se tratar de uma implementação exclusiva para ambientes Android, a integração da automação neste ambiente é muito mais simples, quando comparada com interfaces das outras plataformas.

Para acoplar a classe à sua aplicação, basta chamar o construtor, passando como parâmetro o contexto da aplicação.

Para receber eventos adicionais (como mudanças de status de conexão do PinPad), atribua um android.os.Handler apropriado.

clisitef = new CliSiTef (this.getApplicationContext ());
clisitef.setMessageHandler (hndMessage);

Importante: instancie apenas uma vez a CliSiTef, para evitar problemas de concorrência com o pinpad.

Antes de iniciar uma transação, é necessário que a automação implemente a interface ICliSiTefListener:

public interface ICliSiTefListener extends EventListener {
public void onData (int currentStage, int command, int fieldId, int minLength,
int maxLength, byte [] input);
public void onTransactionResult (int currentStage, int resultCode);
}

A transação é iniciada a partir do método startTransaction, que recebe como parâmetro inicial um objeto que implementa ICliSiTefListener, e os demais parâmetros análogos aos da iniciaFuncaoSiTefInterativo.

// Assumindo que ‘this’ implementa ICliSiTefListener
int sts = clisitef.startTransaction (this, modalidade,valor, docFiscal,
dataFiscal, horaFiscal, operador, restricoes);

Este método retorna imediatamente. Caso retorne zero, serão disparados os eventos em onData e onTransactionResult.

Para cada evento onData, a aplicação recebe os dados necessários para a coleta. Após este evento, pode-se optar por continuar a transação (método continueTransaction – passando os dados coletados), ou cancelar o fluxo (através do método abortTransaction).

O evento onTransactionResult é um indicativo de fim de transação, retornando o código de retorno da transação. O valor zero indica sucesso na transação.

Neste caso, a automação deve confirmar/não-confirmar a transação, através do método finishTransaction.

De forma análoga ao método startTransaction, este método volta imediatamente e, a partir daí, os eventos de coleta serão recebidos em onData e onTransactionResult.