【问题标题】:Pebble communication methods卵石通信方法
【发布时间】:2014-06-24 17:08:10
【问题描述】:

我已经用鹅卵石试验了一两天了,但我有点停滞不前。也就是说,我似乎无法弄清楚某些事情是如何相关的。我想要做的是从 Android 上的应用程序获取数据以发送到 pebble,然后让 pebble 对这些数据做一些富有成效的事情。

我意识到您在一个 android 应用程序中使用 PebbleKit API 来与 pebble 进行通信,使用诸如 sendDataToPebble() 之类的东西。不过,在那之后,我不太确定该怎么做。

使用 cloudpebble.net,我使用 pebble SDK 在 C 中创建了一个应用程序来确认数据(使用他们网站上建议的处理程序)。但是,我最近发现整个组合中也可以有 javascript,我只是不知道如何与 js 交互。

是否有可能完全通过 javascript 完成所有 ack/nack 数据,以及数据的后续处理/显示,完全避免使用 C,还是我需要在 c 中接收数据,然后将其发送到 javascript 一些如何使用它(我目前不知道该怎么做)。

相信当 JS 应用程序接收到数据时,会触发某种事件(我认为是appmessage),但是,我认为这只是来自 C 应用程序?

因此,大多数情况下,我的困惑在于 JS 如何融入整个组合。如果有人能帮我解决这个问题,我将不胜感激。

编辑:我应该补充一点,我正在尝试在 cloudpebble.net 中使用 pebble.js 创建一个应用程序。

谢谢!

【问题讨论】:

    标签: javascript android pebble-watch pebble-sdk cloudpebble


    【解决方案1】:

    注意:下面的一些链接指向 Pebble API 文档,在撰写本文时,只有当您使用您的Pebble 帐户。

    Pebble 开发入门可能会有点让人不知所措。有很多活动部件,其中一些是您需要的,而另一些则不需要。以下是主要组件的简要概述:

    1. 用 C 编写的应用程序。您肯定需要编写其中一个。 (嗯,几乎可以肯定。请参阅下面关于 SimplyJS 的说明。)

      这是在实际手表上运行的。在这里,您可能会创建windowsmenus,也许会使用graphics 做一些工作。你可能会设置click handlers to handle button presses

      手表本身并不能做很多有趣的事情。例如,它无法发出任何网络请求,因此无法与网络通信。它本身不能进行地理定位。不过,您可以构建一个完全独立的表盘或计时器或简单的游戏。

    2. 除非您的应用完全在手表上运行,否则您还需要其中一个

      • 一个用 Java 编写的 Android 应用,使用 PebbleKit for Android
      • 一个用 Objective C 编写的 iOS 应用,使用 PebbleKit for iOS

        我对 Android 版 PebbleKit 或 iOS 版 PebbleKit 没有任何经验,但它们都有官方 API 文档:

        这些都不能从 CloudPebble.net 使用。

      • 使用 PebbleKitJS 编写的 JavaScript 应用程序,适用于Android 和 iOS

        因为此选项允许开发人员同时针对两种移动平台,所以这是我最喜欢的选项。我的感觉是许多其他开发人员都同意。除非您需要访问 PebbleKitJS 提供之外的东西,否则我建议您使用它。

        此处的 JavaScript 代码在您手机上的官方 Pebble 应用程序中执行。从本质上讲,Pebble 应用程序的每个手表应用程序都有一个沙盒 JavaScript 环境。如果您走这条路,您不会构建配套的 Android 或 iOS 应用程序。官方 Pebble 应用程序有效地成为您的伴侣应用程序。

        (请注意,在 iOS 上,JavaScript 代码实际上必须捆绑在官方 Pebble 应用程序中。这会在发布您的应用程序后生成大约 5-6 天的时间,iOS 用户将在此期间收到消息: “即将推出”,而 Android 用户将能够立即使用它。)

    3. 最后,如果你真的不想使用 C,你可以使用 Simply.js(一个不受支持的第三方工具)纯粹用 JavaScript 编写一个 Pebble 应用程序。我从来没有用过这个,主要是因为你似乎可以only have one Simply.js app running on your watch at once

      如何使用它?

      您需要使用 OS 2.0 的 Pebble。

      • 编写一个 Simply.js 脚本并在线托管。
      • 将 Simply.js v0.3.2 下载到您的 Pebble。
      • 在新的官方 Pebble 手机应用中转到“我的 Pebble”。
      • 点击 Simply.js 设置齿轮。
      • 放置脚本的 URL 并点击保存。† 您的脚本应立即运行。
      • 玩你的 Pebble!

      †如果您在 Github 上托管脚本,请使用脚本的原始 URL。

    为了让事情变得更加混乱,您可以使用三个电话 API 中的任何一个来使用两个通信 API 之一:

    1. AppMessage 是开发者可以使用的基础通信 API:

      AppMessage 是一个双向消息传递子系统,可实现手机应用程序和 Pebble 手表应用程序之间的通信。这是通过允许电话和手表应用程序交换任意组键/值对来实现的。键/值对以字典的形式存储,其布局留给应用程序开发人员定义。

      它工作得相当好,但有时开始工作可能有点棘手。如果您正在使用 PebbleKitJS,请随意使用console.log,因为没有调试器。

    2. AppSync 是一个更高级别的库,声称是用于 UI 同步的:

      AppSync 是位于 AppMessage 之上的便利层,用作 AppMessage 的 UI 同步层。这样一来,AppSync 可以更轻松地使用手机应用发送的消息来驱动手表应用 UI 中显示的信息。

      AppSync 维护和更新字典,并为您的应用程序提供一个回调 (AppSyncTupleChangedCallback) 例程,当字典更改和应用程序的 UI 更新时调用该例程。请注意,应用程序 UI 不会自动更新。要更新 UI,需要实现回调。

      我还没有使用它,但我将尝试将应用程序从 AppMessage 迁移到 AppSync。即使您不进行 UI 同步,它看起来也很有用。

    除了官方指南和 API 文档,Pebble 在 SDK 中提供了许多有用的示例应用程序。由于您似乎对 JavaScript 选项感兴趣,因此最有趣的可能是

    • 股票报价应用程序,位于Examples/pebblekit-js/quotes/,以及
    • 天气应用,位于Examples/pebblekit-js/weather/

    查看每个应用的 src/<appname>.csrc/js/pebble-js-app.js 文件。

    【讨论】:

    • 是否可以选择将 app_message 从 watchapp 发送到 iOS 应用程序和 PebbleJS 应用程序(实际上,我有兴趣从 PebbleJS 接收数据并将其发送到 iOS 应用程序)?或者一个 watchapp 只能在手机上有一个处理程序来接收 app_messages?
    • @abjurato,我不知道。这可能值得提出一个新问题。你为什么要这样做?
    • 测试。我需要使用文件中的数据模拟原始加速度计数据,但文件太大而无法存储在 pebble 上(最大 3 mb),所以我想通过 watchapp 将数据从一个 ios 应用程序流式传输到另一个。
    • 我知道这是一个较旧的帖子,但我想问一下您的Android开发环境是什么样的?我假设本地 Pebble SDK、本地 Pebble 模拟器、Android Studio 和本地 Android 模拟器?假设是这种情况,你如何让模拟手表和模拟手机连接起来?
    • @BK-,我不确定。我没有使用过 Android PebbleKit SDK,因为 PebbleKit JS 一直都能满足我的需求。
    猜你喜欢
    • 2016-05-27
    • 1970-01-01
    • 2011-06-23
    • 2020-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    相关资源
    最近更新 更多