2017-08-01 106 views
0

我正在開發一款應用程序,將安裝在集成了條碼掃描器的移動設備中。 在我的頁面中有不同類型的小部件,包括一個不想看到的條目,我想暫時使用它來存儲掃描的條形碼值。 問題是用戶可以點擊頁面中的所有小部件並與其交互,並且在不知不覺中,他可以掃描條形碼。 我想在這個不可見的條目中強制關注或攔截鍵入的文本(因爲條形碼掃描就像鍵盤打字)。我該怎麼做? 我正在用Xamarin.Forms與MVVM的Prism框架進行開發。截取條形碼掃描事件

N.B. =條形碼掃描不在凸輪上。

+0

的下面的答案表明使用Xamarin SDK是最好的,但另一種方法是使用意圖。您所描述的楔形功能(將條形碼數據作爲擊鍵發送)是一種輸出機制,包括回答中提及的Zebra TC51在內的一些製造商也允許將條形碼數據與Intent一起發送 - 然後您可以攔截Xamarin應用程序中的意圖並相應地填充UI字段。 –

+0

嗨Darryn,你能解釋我如何攔截掃描事件和數據?你有沒有例子? – TeoVr81

+0

爲了充分披露,我爲Zebra工作,但考慮到這一點,我在我的個人github上有一個示例應用程序來演示如何攔截意圖:https://github.com/darryncampbell/DataWedge-API-Exerciser請按照設備配置部分在回購自述文件中,示例應用程序將收到它,例如此行顯示通過廣播意圖發送的掃描:https://github.com/darryncampbell/DataWedge-API-Exerciser/blob/master/app/src/main/java/com/zebra/datawedgeexerciser/MainActivity.java#L488 –

回答

3

使用「鍵盤仿真」從掃描儀讀取條形碼並不是一個好主意。我不知道你在用什麼(通過藍牙連接的外部條形碼閱讀器,一個集成的條形碼閱讀器),但通常你不應該有一個焦點輸入來閱讀從掃描儀收到的字符串。

如果您正在使用通過藍牙連接的外部條形碼閱讀器,我建議閱讀this article

否則,如果您使用的是集成式掃描器(如TC51斑馬設備),你應該使用SDK。

如果您使用的是TC51,您可以在這裏找到SDK for Xamarinhere的一個示例如何在Xamarin.Android中使用它。

如果你必須測試在Xamarin形式,你必須做你與Xamarin.Android做同樣的事情,當你收到一個條形碼,發送到您的XF應用與MessagingCenter

void scanner_Data(object sender, Scanner.DataEventArgs e) 
{ 
    ScanDataCollection scanDataCollection = e.P0; 

if ((scanDataCollection != null) && (scanDataCollection.Result == ScannerResults.Success)) 
{ 
    IList<ScanDataCollection.ScanData> scanData = scanDataCollection.GetScanData(); 

    foreach (ScanDataCollection.ScanData data in scanData) 
    { 
     displaydata(data.LabelType + " : " + data.Data); 

     // Something like this 
     Xamarin.Forms.MessagingCenter.Send<App> ((App)Xamarin.Forms.Application.Current, "Barcode", data.Data); 
    } 
} 


} 
+0

非常感謝您的幫助。現在我試着在Xamarin.Forms中做同樣的事情。 – TeoVr81

+0

Alessandro我試圖將Zebra SDK包含在我的項目中,但我遇到了兩個問題:第一個問題是現在應用程序無法在傳統的智能手機(Samsung Galaxy S4)中使用,也許是因爲它沒有掃描儀硬件。該應用程序在啓動時崩潰。我在AndroidManifest.xml中用android:required =「false」嘗試過,但沒有很好的結果。第二個問題是我不知道messageCenter如何工作。我嘗試從Android項目的MainActivity(我可以參考Zebra SDK)將消息發送到Portable項目,但沒有成功。 – TeoVr81

+0

另一個說明:我無法調試,因爲我沒有用於Zebra的USB電纜。 – TeoVr81