2010-12-09 108 views
2

我有一個Android應用程序,可以自由地連接到藍牙設備。當我嘗試連接到未與手機配對的設備時,對話框將提示用戶輸入密碼。密鑰是先驗知道的,但由於沒有方法以編程方式輸入(至少在標準的Android API中),所以必須向用戶顯示,然後輸入。用對話框阻止Android線程

我現在有一個線程通過抓住BluetoothSocket並呼叫.connect()來啓動連接。如果需要配對,則該呼叫將阻塞,直到用戶在對話框中輸入密鑰。

爲了搶先一步,我添加到我的活動的處理程序的東西來顯示對話框。在發送消息之前,我做了一個虛擬對象傳遞,並在發送消息和嘗試連接之間調用.wait(),在收到對話框中的OnClick後,我可以.notify(),但是我無法引用處理內部AlertDialog類中的消息,正如this question中的問題一樣。

我可以把它召回給持有線程的類,但它似乎有點笨重,導致我的核心問題:是我的結構從根本上打破了?我應該怎麼做呢?

Another related question建議使用通知系統,但是在這裏用另一個對話框來鏡像密碼對話框看起來好多了。

回答

0

請勿阻塞,只實現Interfaces和消防使用它們(接口=監聽器),

  1. 搜索
  2. 選擇設備
  3. 連接:
  4. 如果設備已配對,然後連接。
  5. 如果不配對顯示對話框,並在正面單擊,連接。

BWT,我認爲你需要擴展對話,並實現自己的方法,保存有關您要配對的設備的一些信息,我喜歡你也實現了自己的界面。