2012-07-11 29 views
0

我已經完成了將文本編碼爲Android上的QR碼,並且解碼部分也工作得很好。爲了好玩,我將中文單詞編碼爲QR碼,Android上的zxing可以很好地識別它。然而,我嘗試了zxing iPhone應用程序,它解碼中文失敗(很長時間沒有結果,而Android代碼只需要1秒鐘就可以返回識別的文本)。我沒有看IOS的zxing sdk,只是好奇爲什麼來自同一家公司的應用在這兩個平臺上表現不同,我認爲算法應該是一樣的。謝謝!Android和IOS上zxing解碼的不同行爲

回答

1

ZXing不是公司,它是一個開源項目。

更重要的是,在這種情況下,在Java(Android)和C++(iOS)端口上工作的人重疊但不一樣。正如ZXing常見問題中提到的那樣,這些端口並不相同。

但是,在Java和C++中的QR碼支持非常小心地保持同步,所以結果應該沒有太大的不同。你最好的辦法是將引起問題的代碼發佈到ZXing郵件列表中,以便人們有機會進行調查。

(FWIW,我是最頻繁的貢獻者之一的C++/iOS的斑馬線端口)。

+0

感謝您的建議! – sophia 2012-07-12 13:46:21

+0

是否可以使用zxing在我的android手機上截取屏幕截圖來掃描qr代碼? – 2017-03-01 12:25:00

4

至於你是不是中國人,但你發現這個problem.You必須是一個優秀的測試人員。如您所知,zxing解碼與iOS和Android不同。可以說zixng iOS是zxing Android的一個子集(我認爲)。如果您想在zxing iOS中支持中文,您必須改進C++端口中的StringUtils.cpp。添加這些代碼可能對你有所幫助

if (length > 2) { 
    for (int i = 0; i < length - 1; i++) { 
     int value = bytes[i] & 0xFF; 
     if (value > 0x7F) { 
      if (value > 0xB0 && value <= 0xF7) { 
       int value2 = bytes[i + 1] & 0xFF; 
       if (value2 > 0xA0 && value2 <= 0xF7) 
        return GB2312; 
      } 
     } 
    } 
}