2016-07-30 36 views
1

我正在開發一個簡單的項目,在該項目中,我需要通過互聯網通過Android電話的Gyroscope Sensor來控制Arduino機器人(雙伺服電機)。 正如您可以看到的一樣,即使3D空間中Phone的方向變化很小,3軸Gyroscopic Coordinates也會非常敏感地變化,所以我想將延遲最小化爲毫秒。如何在Android上使用WebRTC進行實時通信?

現在除了硬件之外,我的第一個里程碑是通過互聯網儘可能快速和持續地發送陀螺儀座標從Android到計算機(如實時數字數據流)。我知道傳統HTTP based Client-Server機制將是相當緩慢的,因此我看着到以下幾點:

  1. 谷歌的香奈兒API
  2. 的WebRTC
  3. 的WebSockets

根據我的研究,通道API顯示從10ms到甚至在幾秒鐘內的延遲。 GAE也將請求限制爲30秒。這裏是一個頻道API壓力測試: http://channelapistresstest.appspot.com/ 嘗試點擊「發送5」按鈕很多,你會看到延遲時間數字上升到幾秒鐘。

現在WebRTC聽起來最有前途且比WebSocket更快。如果有人能夠指導我如何在Native JAVA和Native Android中實現WebRTC,我將非常感激(任何好的庫?我想從Android發送coords並通過桌面上的JAVA-SE客戶端接收)。我對混合應用程序解決方案不感興趣(如Crosswalk)。我還想知道應該如何設置信令服務器。總結它我有以下問題:

  1. 我應該使用哪種方法? (通道API,WebSockets,WebRTC或其他)與本地Java和Android支持?
  2. IncR的WebRTC,我應該如何設置信令服務器? (只是簡要說明)還是WebSocket的WebSocket服務器?
  3. 我可以利用Google的雲平臺或類似的東西來降低我的複雜性嗎?
  4. 任何整體建議?

在此先感謝。

回答

2

我會忽略此項目的WebRTC。設置更復雜,需要一個特殊的服務器。
WebSocket對於這個項目應該不錯。它與TCP一樣快。
如果你想不惜一切代價儘量避免這種延遲,但丟包不是問題,那麼我會選擇簡單的UDP。對於所有這些,你不需要任何庫,只需幾行代碼。

2

你不想使用WebRTC。 WebRTC無論如何都要求你設置一個獨立的信號通道,比如WebSockets,所以對於你所要做的事情來說它是不必要的複雜和非常重要的。

如果您的要求很簡單,就是從一個設備到另一個通信的一系列陀螺儀值,我建議:

  1. 開始用一個簡單的socket服務器
  2. 通過socket
  3. 您的客戶端連接到這臺服務器
  4. 從一個客戶端傳送信息給其他

A simple server to print socket input to standard output is just a few lines of Python,例如。這確實要求您學習使用套接字,因爲您的客戶端需要以相同的方式解釋字節流。您也可以使用WebSockets,但這可能會顯着增加服務器的複雜性;例如,Java EE比Java SE複雜得多。

如果你想要數據完整性(我想你會這樣做),你應該使用TCP。

如果你真的擔心延遲,你應該跳過去互聯網。在局域網上運行一切。我想你無論如何都得控制設備,所以沒有必要去上網。

相關問題