2015-05-03 64 views
4

當通過本地節點打開一個通道:Android Wear +可穿戴ChannelApi openChannel無法與遠程節點打開?

Wearable.NodeApi.getLocalNode(googleApiClient) 

...的onChannelOpened監聽成功火災。

然而,經由遠程節點打開一個通道時:

Wearable.NodeApi.getConnectedNodes(googleApiClient) 

...的onChannelOpened監聽從未火災和隨後不能經由該信道共享文件。

我知道這兩個設備都需要openChannel,但通道偵聽器只會在本地打開它的設備上觸發......如果遠程設備不知道它已連接,它如何發送或接收文件?這裏有兩個設備

耐磨之間的擊穿:

  1. 保存本地文件 - 成功
  2. .openChannel與地方(可穿戴式)節點 - 成功
  3. .sendFile頻道 - 成功

把手舉行:

  1. .openChannel與遠程(可佩戴的)節點 - 從信道失敗
  2. .receiveFile - 失敗
  3. 顯示文件 - 失敗
+0

發佈有關通話失敗的信息會很有用。你從openChannel獲得的狀態碼是什麼? –

回答

8

Toubleshooting

這裏有一些事情檢查:

  • 您是否收到消息事件或數據項更新?如果您撥打Wearable.MessageApi.sendMessage,您是否在其他設備上獲得onMessageReceived?如果不是,則在另一個節點上如何設置WearableListenerService,或者以您的應用程序打包的方式(例如,您的microapp和應用程序位於不同的軟件包中,或使用不同的密鑰簽名),可能會出現問題。

  • 是否運行最新版本的Android Wear app? Channel API是最近添加的,可能您的手錶仍然沒有收到更新來支持它。版本1.1.1.1889093應該沒問題。

如何使用通道API

順便說一句,這聽起來像您可以簡化渠道的使用。不需要打開本地和遠程節點的通道。您通常使用API​​的方式是:

  1. 決定是要從手錶還是從手機啓動頻道。在這種情況下,聽起來就像是從手錶開始。

  2. 在手錶應用中,請撥打Wearable.ChannelApi.openChannel,指向手機應用。此方法返回PendingResult<OpenChannelResult>。成功完成後,您將獲得一個Channel對象。這是手錶的一面,您可以使用它來發送文件。

  3. 在手機應用程序中,包含一個WearableListenerService,應該得到一個onChannelOpened事件。該方法將通過一個Channel對象,該對象是通道的電話端。您可以在該對象上撥打receiveFile

所以,你可以看到,你應該只有一個電話openChannel:到遠程節點。

+0

雖然我之前解決了這個問題(使用消息傳遞api作爲示例,但非常類似的用法),但您的評論已被發現。謝謝。 – worked

+0

Nimrod Gileadi說,當你的microapp和app在不同的軟件包中,或者用不同的密鑰簽名時,它可能會成爲一個問題。爲了我的發展目的,最好爲智能手錶和智能手機安裝兩個分離的應用程序。這兩款應用程序是否可以通過Message或Channel API相互溝通,還是需要將smartwatch apk綁定到智能手機apk才能實現? – jfmg

+2

我自己想清楚了。您可以在build.gradle(Module:app)中更改''applicationId''。然後,分開的smartwatch應用程序能夠與具有相同applicationId(包名稱)的所有應用程序進行通信。 – jfmg