2016-09-29 23 views
0

我正在運行RxAndroidBle中提供的整個示例應用程序從掃描發現服務到writeCharacteristic。我正在嘗試調試流程並在CharacteristicOperationExampleActivity.java文件的onWriteClick()中放置一個斷點。單擊WRITE按鈕不會執行任何操作。沒有發現斷點。RxAndroidBle rxBleConnection.writeCharacteristic

從博客RxAndroidBle

指出發現的特性是可選的寫讀指令。但是,這個示例應用程序的活動設置的方式,必須在顯示特徵操作頁面之前通過發現特徵。在特徵頁面上,我選擇了讀/寫特徵條目以進入操作頁面。這不正確的方式來操作應用程序?

另外,有沒有辦法處理writeCharacteristic而無需發現其特點?我不想顯示特性視圖,用戶必須選擇正確的特性才能讀取和寫入BLE設備。

在任何情況下,示例應用程序發現我的BLE設備並連接到它,但未能寫入它。有沒有人有與RxAndroidBle的經驗,請幫助。

回答

0

該示例中似乎存在一個錯誤 - 我無法使其正常工作(儘管連接按鈕被禁用) - 需要查看它。 對於速戰速決,你可以用替換onConnectToggleClick()方法:

@OnClick(R.id.connect) 
public void onConnectToggleClick() { 

    if (isConnected()) { 
     triggerDisconnect(); 
    } else { 
     connectionObservable 
       .observeOn(AndroidSchedulers.mainThread()) 
       .doOnSubscribe(() -> connectButton.setText("Connecting")) 
       .subscribe(
         rxBleConnection -> { 
          Log.d(getClass().getSimpleName(), "Hey, connection has been established!"); 
          updateUI(); 
         }, 
         this::onConnectionFailure 
       ); 
    } 
} 

示例應用程序並不意味着與任何特定BLE裝置運行,從而表明可能BluetoothCharacteristic的IT需要執行一個未知設備一個明確的發現將它們呈現給用戶。當使用帶有已知設備的庫時,您可以安全地使用UUID s的BluetoothCharacteristic s,但不執行發現(它將在任一方式下完成,但不需要明確調用)。

+0

好的,那有效。我沒有意識到在示例應用程序的操作頁面中有一次,我需要點擊CONNECT按鈕才能寫入BLE設備。這種連接級別是什麼?我最初認爲,一旦設備被發現並與rxBleConnection對象連接,我們就可以開始閱讀/寫入設備。 –

+0

當然你是對的,但在示例應用程序中,每個活動都在自己處理連接。如果活動暫停,則連接關閉。 –

+0

另外,如何通過自動執行連接而無需使用操作頁面中的連接按鈕執行此額外步驟來簡化此代碼? –

相關問題