2014-09-24 42 views
0

我以前曾與iOS和Bluetoot低能量,現在我需要這個在Android上工作。 有了iOS,代理方法就有了。我在一個視圖中更改了BLE特性的值,並將更新後的值傳遞給已建立連接的前一視圖。這個觀點立即將新的價值轉移到BLE外圍。致電家長活動方法 - BLE

僞代碼:

[_delegate setDeviceDateTime:[NSDate now]]; 

的問題是,我無法找到與Android這樣的事情。父母活動持有BluetoothGatt,它可以更新周邊的值。進出口尋找類似如下:

僞代碼當前視圖:

getParent().setDeviceDateTime(new Date()); 

僞代碼父視圖:

public void setDeviceDateTime(Date date) { 
    BluetoothGattCharacteristic myCharacteristic = getCharacteristic(dateTime); 
    myCharacteristic.setValue(date); 
    myGatt.writeCharacteristic(myCharacteristic); 
} 

看來,即時通訊的方式也堅持認爲我與iOS做的方式,我似乎無法找到一個解決辦法..

編輯:

好所以我需要訪問父活動wile目前的活動仍然活躍,所以startActivityForResult() wouldnt工作。

基本上我需要推一個按鈕,將一個字符串傳遞給父處理器,處理它並通過BLE傳遞給外設。並且在仍然(並保持)與外圍設備連接的同時更改一些其他設置而不關閉「設置活動」。

回答

1

您的使用情況是不完全清楚,但似乎你需要尋找到StartActivityForResult() 您可以startActivityForResult()所以當第二個活動是做它可以傳送回信息的主要活動執行的第二個活動。

但是,如果您需要通知主要活動,而第二個活動仍然有效,它將無法工作。在這種情況下,我會改變設計: 在Android中,一個活動是一個UI組件,一個屏幕。並且Android不是建立在屏幕「工作」(例如與BT通信)的同時不在前臺。

您需要某種可以從多個活動訪問的'全局'BT控制器。 兩種方式做到這一點(可能還有更多):

  1. 擴展Application類,有你的BT邏輯存在。
  2. 使用bound service並處理那裏的邏輯。

在這兩種情況的任何活動將有機會獲得該應用程序的/服務的方法,並能夠使用藍牙,改變它的設置等

+0

看到我的編輯,希望這使事情變得更加清晰 – daydr3amer 2014-09-24 13:53:59

+0

看到我的回覆,我添加了另一個選擇。 – nitzanj 2014-09-25 06:00:34

+0

謝謝,我想即將擴展應用程序類。似乎少一點工作。 – daydr3amer 2014-09-25 06:03:58