В моем приложении, разработанном с помощью XE7 для Android/iOS, есть форма для сканирования штрих-кодов. При обнаружении штрих-кода мое приложение проверяет, является ли он допустимым штрих-кодом или нет. Следуйте инструкциям здесь: http://www.fmxexpress.com/qr-code-scanner-source-code-for-delphi-xe5-firemonkey-on-android-and-ios/
В настоящее время я тестирую на Android, и я могу интегрировать сканирование и чтение штрих-кодов, но событие onBarCode не срабатывает при возврате из общего действия по поиску штрих-кода. Тот же код хорошо работал с предыдущими версиями Rad Studio (XE4, XE5, XE6), но теперь в XE7 это не так.
Вот несколько фрагментов кода:
...
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 — это даже то, что я использовал для проверки и добавления штрих-кода в список, но я не включил его, потому что проблема не в этом коде — он даже не срабатывает. Text1.text:=Barcode и memo1.paseFromClipboard были в них для проверки того, что даже не сработало. Я могу подтвердить, что штрих-коды считываются, потому что, если я нажму и вставлю вручную, появится штрих-код.
Почему это не работает на XE7, как это было в предыдущих версиях Rad Studio?
com.google.zxing.client.android.SCAN
, поэтому я предполагаю, что он основан на ZXing. На самом деле вы могли бы использовать строки, показанные в моем ответе, вместо компонента/класса TAndroidBarcodeScanner (который, кажется, находится в загрузке 20,3 МБ по адресу cc.embarcadero.com/Download.aspx?id=29699, если я правильно понял) - person mjn   schedule 08.10.2014