【问题标题】:How to Sync Data from a Smartwatch to a Smartphone without Sharing Data with the Google Cloud?如何在不与 Google Cloud 共享数据的情况下将数据从智能手表同步到智能手机?
【发布时间】:2020-08-05 18:45:08
【问题描述】:
亲爱的 Android 社区,
我目前正在开发一个 Android 应用程序,我想在其中与智能手机实时共享来自智能手表的一些传感器数据。 Github 上有几个这样的项目。这些项目仅使用DataClient 来同步数据。我对Android developer documentation 的调查导致了一些关于Android 何时与谷歌云共享数据的混淆。据我了解documentation,数据似乎是由 Android 与所谓的云节点同步的。由于这些信息对我的用户很敏感,我不想与 Google 云共享任何数据。因此,如果有人通过回答以下一些问题来支持我,我会很高兴:
- 有没有办法在不启用云节点的情况下使用 DataClient 的便捷同步方法?
- 当我改用 ChannelClient 或 MessageClient 时,数据是否与 Google 共享?
提前谢谢你,
埃格雷戈斯
【问题讨论】:
标签:
android
google-cloud-platform
wear-os
privacy
google-data-api
【解决方案1】:
很好的问题。
简短的回答是否:您无法确定您通过 Wear API 传输的任何数据都不会进入 Google 云。通信由不透明的 Google Play 服务(又名 GMS)处理。我们无法知道通过 GMS 发送的任何数据都只会发送到手机,而不会发送到云端。
更长的答案是也许。 DataClient API 将您的数据副本存储在 GMS 中,并且(如您所说)将其与“云节点”同步,因此这可能不是正确的方向。但是没有证据表明 MessageClient API 在消息传递后会保留它们。所以:使用NodeClient API,您可以确定手机的Node.isNearby() 为真;我的经验是,这相当于手机和手表之间的蓝牙连接。然后,您可以通过 MessageClient API 发送您的数据,这些数据可能会通过蓝牙传送到手机,而无需在 GMS 中停留足够长的时间来访问 Google 云。
如果您需要比这更有力的保证,那么您可能无法按原样使用 Wear API 进行数据传输。我想到的其他几个选项:
- 滚动您自己的数据传输,可能基于原始蓝牙 API。这当然是可能的(我已经做到了),但工作量很大。
- 在将数据传递给 GMS 之前对其进行加密,然后在您的手机应用程序中对其进行解密。这似乎比构建您自己的通信层更容易,但加密并不真正在我的驾驶室中,所以我不能就此提供更多建议。
【讨论】:
-
感谢您的回答。我开始实现与 ChannelClient 的数据同步,因为我似乎对这个过程有更多的控制权,而且这种非结构化数据似乎不太可能被 Android 与 GMS 同步。关于您的两个建议: 1.我也在研究使用第三方库的方法,例如socket.io,但我没有找到简单的解决方案。 2. 在智能手表上加密实时数据可能过于耗费资源,但我会进一步调查并将其作为一个单独的问题发布。