Я занимаюсь поиском приложения для сканирования штрих-кодов с помощью камеры iPhone iPhone.
Я могу использовать Swift для получения нужных мне строковых данных из сканируемого изображения.Однако при использовании Xamarin с реализацией Xamarin AVFoundation.AVMetadataObject
и AVMetadataMachineReadableCodeObject
я не получаю все символы.Код C #, кажется, выполняется так же, как и код Swift, с двумя разными результатами.
Пример Xcode Swift:
if let metadataObject = metadataObjects.first {
guard let readableObject = metadataObject as? AVMetadataMachineReadableCodeObject else { return }
guard let stringValue = readableObject.stringValue else { return }
AudioServicesPlaySystemSound(SystemSoundID(kSystemSoundID_Vibrate))
found(code: stringValue)
}
будет отображать что-то вроде этого: ЧТО ХОЧУ
[)> \ u {1e} 06 \ u {1d} 1SMYDATA \ u {1d} S1MYDATA \ u {1d} 1 PMYDATA\u {1d} WMYDATA \ u {1d}4LUS \ u {1e} \ u {4}
Пример кода Xamarin Foundation:
var barcodeMetadataObject = transformedMetadataObject as AVMetadataMachineReadableCodeObject;
if (barcodeMetadataObject != null)
{
var barcodeOverlayPath = this.BarcodeOverlayPathWithCorners(barcodeMetadataObject.Corners);
metadataObjectOverlayLayer.Path = barcodeOverlayPath;
// If the metadata object has a string value, display it.
string textLayerString = null;
if (!string.IsNullOrEmpty(barcodeMetadataObject.StringValue))
{
textLayerString = barcodeMetadataObject.StringValue;
}
else
{
// TODO: add Descriptor (line 618 in original iOS sample)
}
будет отображать что-то вроде этого: ЧТО Я НЕ ХОЧУ ...I ХОЧУ ВЕСЬ НАБОР СИМВОЛОВ
[)> 061SMYDATAS1911500531PMYDATAWMYDATA
Итак, у меня есть следующее: (Xcode) [)> \ u {1e} 06 \ u {1d} 1SMYDATA \ u {1d} S1MYDATA \ u {1d} 1 PMYDATA\u {1d} WMYDATA \ u {1d} 4LUS \ u {1e} \ u {4}
В сравнении с этим: (Xamarin) [)> 061SMYDATAS1911500531PMYDATAWMYDATA
Я не понимаю, почему реализация в Xamarin не будет предоставлять все те же символы сканирования, когда она по существу действует только какобертка.
У кого-нибудь есть идеи?