高级卵石手表配置
钥匙要点
- >更新“ appinfo.json”文件,通过在功能数组中添加“可配置”来启用卵石应用程序中的配置页面,从而允许用户自定义诸如pebble Interface中的位置类型之类的设置。 >
- > >
- >创建一个在线托管的用户友好的设置页面,其中包含一个供用户指定其首选位置类型的表格(例如,星巴克,冰淇淋)。此页面通过JavaScript与Pebble App通信,以在设备上保存本地设置。 >在pebblekit JavaScript框架内利用JavaScript的LocalStorage API来保存和检索用户设置,增强了应用程序记住用户偏好(例如位置类型)的能力。
- >调整`pebble-js-app.js`通过获取和存储在本地存储中的设置来从配置页面处理新设置,从而确保应用程序在启动和操作过程中尊重用户偏好。
- > >修改卵石应用程序中的C代码(`find_me_anything.c`C`)来处理设置的更改,专门为搜索的位置类型提供了新键,从而根据用户偏好动态更新显示。
- >在JavaScript中实现错误处理以管理外部API的未定义或丢失数据,以确保应用程序保持稳定并提供用户友好的通知或后备。 >
>我最近写了一篇有关JavaScript的卵石表开发基础知识的文章。总而言之,我们制作了一个使用Foursquare API来告诉用户他们最近的星巴克始终在哪里。这就是动作中的样子:
>我提到,JavaScript还有更多的可能性,我在那篇文章中无法介绍。这是我的后续行动,它将涵盖pebblekit JavaScript框架的其他功能。
如果您想遵循本教程,则需要:
- >安装和运行带卵石应用程序的Android手机或iPhone。 鹅卵石手表。
- Foursquare API的API凭证。
- >可用的Wi-Fi网络,可将您的应用传输到移动设备和卵石手表。 javaScript的基本知识
- 愿意使用命令行并对C代码进行实验。
- 最好是通过上一个教程或使用PebbleKit JavaScript框架对卵石应用开发的基础知识。
> >在线网络主机,用于在线存储单个文件,该文件将是您的配置页面。
- 此教程的完整代码
- 您可以在Github上查看“找到我的星巴克”的代码,或者通过上一个教程阅读,而不是将所有代码列入本文中的所有代码。我们更新的应用程序的代码也可以在github上的“找到我任何东西”上找到,因此,如果您想下载代码并跟随 - 请免费! >
- >配置如何在卵石应用世界中起作用 在介绍SDK版本2.0的PebbleKit JavaScript框架之前,需要将同伴应用程序安装在用户手机上才能接受任何自定义设置。如果用户想要一个天气应用程序向他们展示摄氏的天气,而不是华丽海特,则需要首先安装伴随应用程序并打开该应用程序以更改设置(或在Watchface应用程序本身上具有粗制设置窗口)。 🎜>
>使用新的SDK,我们现在可以定义一个配置页面,该页面可以在Pebble的Android/iOS应用程序本身中访问。与用户安装和安排其手表应用程序的位置相同的位置访问设置。从用户的角度来看,更清洁,更逻辑。
> JavaScript启用本地存储
>新SDK的JavaScript还使用W3C建议进行Web存储,使您可以将设置存储在应用程序中以备将来使用。如果用户要求使用该摄氏/fahreinheit设置,我们可以使用Web存储记住用户的喜好。在我们的情况下,我们要存储用户感兴趣的位置类型。
>
它的工作原理设置页面是网络上的一个页面,其中包含一个以切换应用程序设置的表单。应用程序中的JavaScript等待通过表格提交给您应用程序的JavaScript的任何调整的设置,并将其收到的设置存储在本地存储中。
>
听起来令人困惑吗?在某些情况下,这不是理想的设置,因为这意味着您必须在网上某个地方托管自己的设置页面,以供其他人访问。似乎Pebble计划将将来与该应用程序捆绑在一起,这对于某些应用程序非常有用。当前的设置确实带有好处 - 如果您仅在设置页面上进行重新皮肤或调整某些内容,则无需更新应用程序本身,因为设置页面是独立的。
>>更新您的appinfo.json
首先,要启用应用程序上的“设置”页面,我们将“可配置”添加到我们以前用来通过“位置”关键字来定义对Geolocation API访问的功能数组的添加。
<span>"capabilities": ["location", "configurable"]</span>
创建您的设置页
<span>"appKeys": { </span> <span>"location": 0, </span> <span>"searchingFor": 1 </span><span>}</span>
>如上所述,您需要托管带有表单的网页,以供用户更改他们的搜索内容。我的一个看起来像:
>您需要的基本HTML,因此(为简单起见,我删除
>
取消或提交设置<span><span><span><label</span> for<span>="searchingFor"</span>></span>Whatcha wanna find?<span><span></label</span>></span> </span><span><span><span><textarea</span> cols<span>="40"</span> rows<span>="8"</span> name<span>="searchingFor"</span> id<span>="searchingFor"</span>></span><span><span></textarea</span>></span> </span><span><span><span><button</span> type<span>="submit"</span> id<span>="b-cancel"</span>></span>Cancel<span><span></button</span>></span> </span><span><span><span><button</span> type<span>="submit"</span> id<span>="b-submit"</span>></span>Submit<span><span></button</span>></span></span>
我们提供两个选项,它们可以取消 - 防止其任何更改保存,或者可以提交将这些更改传递到应用程序的表格。
要取消他们的更改,我们将文档设置为pebblejs://关闭。那将向我们的鹅卵石JavaScript代码发送空的回复,该代码不会更改任何内容:>如果他们选择提交更改,我们将输入从TextArea中传递到字符串中。下面的saveOptions()函数将来自TextArea的值放入对象:
我们的点击函数通过将对象转换为字符串并编码其字符来提交我们的数据更改):
<span>$('#b-cancel').click(function() { </span> <span>document.location = 'pebblejs://close'; </span><span>});</span>
如果用户已经选择了东西怎么办?
>>如果用户已经对设置进行了更改,则说他们已经要求该应用程序找到冰淇淋,我们希望他们以前的“ gelato”设置在Textfield中出现设置。为此,我们将在URL中发送config HTML页面称为searchingfor。一个例子是URL http://www.yourpebbleappsettingpage.com?searchingfor = gelato。
>我很久以前找到了一个功能
<span>"capabilities": ["location", "configurable"]</span>
<span>"appKeys": { </span> <span>"location": 0, </span> <span>"searchingFor": 1 </span><span>}</span>
>
调整我们的JavaScript以接受设置>我们的Pebble应用程序知道我们要更改设置,我们告诉我们在我们的appinfo.json文件中。现在,我们的应用程序现在有一个不错的配置页面,看起来很有希望。问题是 - 我们的Pebble应用不知道在哪里可以找到我们承诺的配置屏幕。它甚至不知道我们要在哪里使用此搜索来来回发送的一些数据,只是我们打算拥有一个数据。这是我们更新pebble-js-app.js文件以连接所有内容的地方。
开始,我们将在JavaScript中需要一个新变量。让我们称其为搜索以匹配我们在appinfo.json文件中的密钥(不必将其命名相同,但为了保持一致性和清晰度,我已经这样做了)。这个变量需要做的是将用户对我们每天的卵石增强生活的位置类型的偏好存储。
>鹅卵石应用中的Web存储>为了保存用户的偏好在我们的应用中,我们可以访问Pebble为我们提供的LocalStorage API。 Pebble很友好,可以遵循W3C推荐Web存储的建议,因此语法希望过去与Web Storage一起工作的任何人都不会太陌生。要将某些东西存储在本地存储中,我们致电:
检索它:
<span>"capabilities": ["location", "configurable"]</span>
>因此,在我们的情况下,我们需要将搜索数据存储在Pebble应用程序的本地存储中。我们将使用JavaScript变量在整个应用程序中访问它,但是有时候,当我们首次加载应用程序或从配置屏幕返回时,我们将从本地存储中设置此搜索变量。
>我们将在JavaScript运行的那一刻查看本地存储。如果在本地存储中找不到我们的搜索数据,那么我们将默认设置为“星巴克”。这是在我们的locationOptions定义下在pebble-js-app.js file。
然后,我们将此变量添加到我们的ajax请求中,以代替星巴克提及:<span>"appKeys": { </span> <span>"location": 0, </span> <span>"searchingFor": 1 </span><span>}</span>
到目前为止,我们的应用程序将做与以前相同的事情 - 找到我们的星巴克。当用户按下您的应用程序“设置”按钮时,我们需要让它知道该怎么做。我们使用showconfiguration事件听众来做到这一点:
<span><span><span><label</span> for<span>="searchingFor"</span>></span>Whatcha wanna find?<span><span></label</span>></span> </span><span><span><span><textarea</span> cols<span>="40"</span> rows<span>="8"</span> name<span>="searchingFor"</span> id<span>="searchingFor"</span>></span><span><span></textarea</span>></span> </span><span><span><span><button</span> type<span>="submit"</span> id<span>="b-cancel"</span>></span>Cancel<span><span></button</span>></span> </span><span><span><span><button</span> type<span>="submit"</span> id<span>="b-submit"</span>></span>Submit<span><span></button</span>></span></span>
>将用户带到您的页面,并带有表格以填写这些设置。当他们提交新设置(例如上述“冰淇淋”)时,我们希望我们的JavaScript在pebble-js-app.js中准备好并等待该数据。 为此,我们使用WebViewClatose事件侦听器。在这里,我们将其从URI字符串(用于空间等的编码版本等)中解码,然后再次将其解析为JSON对象。我们从该JSON对象获得搜索值,并再次对其进行编码,现在它不在我们的JSON字符串中。最后一点点编码是将其存储为准备将其放入前面讨论的Foursquare API调用中的URL字符串(https://api.foursquare.com/v2/venues/venues/search?client_id ='client_id ='clientid'&client_secret'&client '&v ='version'&ll ='latitude','经度'&query ='searching for Request):
<span>$('#b-cancel').click(function() { </span> <span>document.location = 'pebblejs://close'; </span><span>});</span>
>如果我们的价值不确定(似乎有很多原因可能发生了,但它们是边缘案例),我将最后的选择将其切换回“星巴克”。将来可能会有一种更好的方法来处理此问题,可能会出现错误,但是为了使此演示的事情保持简单,我在最坏的情况下默认为星巴克:
>>我们对请求进行了搜索并准备存储后,我们就会使用上述窗口将其存储在本地存储中。这样,下次他们打开应用程序时仍将在那里。
<span>function saveOptions() { </span> <span>var options = { </span> <span>searchingFor: $('#searchingFor').val() </span> <span>} </span> <span>return options; </span><span>}</span>
>现在,我们已收到新的设置请求,我们以新值再次运行window.navigator.geolocation.watchposition()函数。这将运行我们的地理位置搜索与Foursquare API的新要求设置,它们关闭设置窗口。
<span>$('#b-submit').click(function() { </span> <span>var location = 'pebblejs://close#' + encodeURIComponent(JSON.stringify(saveOptions())); </span> <span>document.location = location; </span><span>});</span>
我们的JavaScript现在了解这个新设置,但还有更多要做的事情。
>我们的C代码
添加了一些添加>我们的find_me_anything.c文件不需要更改太多。我进行了以下添加和更改。
增加消息缓冲区大小
我将消息缓冲区的大小提高到124个字节。我相信这是您可以将其带到卵石表上的最大值。额外的缓冲尺寸是这样,我可以发送潜在的位置名称和查询。新设置的数据长度有更大的变化,因此我们希望为此提供尽可能多的余地!>
定义Sync_buffer时,更改是在文件开始时进行的:>当我们打开消息同步时,它在init()函数中也会进一步更改:
<span>"capabilities": ["location", "configurable"]</span>
>在我们的应用中添加新密钥
<span>"appKeys": { </span> <span>"location": 0, </span> <span>"searchingFor": 1 </span><span>}</span>
>我更新了init_location_search()函数,以便将searching_for值的初始值定义为''。它是空白的,因为一旦我们的JavaScript启动并告诉C我们要寻找的东西。
>
<span><span><span><label</span> for<span>="searchingFor"</span>></span>Whatcha wanna find?<span><span></label</span>></span> </span><span><span><span><textarea</span> cols<span>="40"</span> rows<span>="8"</span> name<span>="searchingFor"</span> id<span>="searchingFor"</span>></span><span><span></textarea</span>></span> </span><span><span><span><button</span> type<span>="submit"</span> id<span>="b-cancel"</span>></span>Cancel<span><span></button</span>></span> </span><span><span><span><button</span> type<span>="submit"</span> id<span>="b-submit"</span>></span>Submit<span><span></button</span>></span></span>
>
<span>$('#b-cancel').click(function() { </span> <span>document.location = 'pebblejs://close'; </span><span>});</span>
<span>function saveOptions() { </span> <span>var options = { </span> <span>searchingFor: $('#searchingFor').val() </span> <span>} </span> <span>return options; </span><span>}</span>
>我们JavaScript代码的额外添加 我在实现此新功能时发现的一件事是,有时Foursquare API实际上没有一个地址或我们在每个场所需要的值。一些场所缺少该数据。当我们在手表上显示时,这将返回“未定义”。不好!因此,我重写了一些req.onload函数以通过我们的条目进行检查,并使用一个具有地址和城市的第一个功能:
>
我上面所做的工作是设置一个称为“地点”的变量,该变量从不确定开始。我遍历响应中的每个项目。回答。从foursquare返回的数据,如果我找到包含地址和城市的数据,那么我将该对象保存在场地中,我们将不再搜索其余的响应。
我们现在是一个更令人兴奋的应用程序!
>>多亏了Pebblekit JavaScript框架的力量,我们现在让Pebble Watch所有者决定如何使用我们的应用程序。它是定制的,更个人化。我们现在也使用本地存储,因此我们的应用程序可以记住事物。这比以前更有价值,我们正在使用JavaScript在Pebble Watch上可以做的一切。
>最后,我的用户现在可以沉迷于自己的迷恋,而不是我的个人星巴克。即使您不打算为您提供地址的时钟,希望此示例为您的应用程序添加个性化提供了一些指导。尝试让人们将其背景从黑色更改为白色,或者让他们选择其他API或进食以获取数据。让他们决定最终使您的应用程序更有用和引人入胜的小事情。
>>在乘火车回家时休假一个周末,例如疯狂的代码或代码!将这些JavaScript知识用于您从未想过的事情,并在此过程中获得很多乐趣!
>更多资源
-
与JavaScript一起使用JavaScript的Pebble Watch Development - 我以前的文章“找到我星巴克”出生了。我为那些刚开始的人有很多资源。
- > >使用Pebblekit JavaScript框架 - 使用其JavaScript框架
- 的卵石团队的更多信息
>
>如何将鹅卵石手表更新为最新的固件?>将鹅卵石手表更新为最新的固件是一个简单的过程。首先,确保您的手表通过蓝牙连接到智能手机。然后,在智能手机上打开卵石应用程序。如果有更新,则会出现通知,提示您安装它。只需按照屏幕上的说明完成更新即可。请记住在更新过程中保持手表靠近智能手机,以保持稳定的连接。我可以在卵石表上自定义手表脸吗?>
>卵石表的电池寿命是什么?用法。但是,在正常使用时,大多数卵石表可以持续5至7天。诸如您收到的通知数量,您使用的手表的次数以及应用程序的使用等因素会影响电池寿命。>如何延长卵石表的电池寿命?其中包括减少您收到的通知数量,使用简单的手表脸以及禁用不经常使用的功能。此外,请确保您的手表软件是最新的,因为更新通常包括优化以提高电池寿命。>我可以用iPhone使用鹅卵石手表吗? iOS设备。您可以通过蓝牙连接卵石手表到iPhone,并使用Pebble应用程序来管理设置,安装手表脸等。
> 如何将鹅卵石手表重置为出厂设置?要将鹅卵石手表重置为出厂设置,请转到手表上的设置菜单,然后选择“系统”,然后选择“出厂重置”。这将删除您手表上的所有数据和设置。请注意,这个动作无法解开。
>我可以在卵石表上使用应用程序吗?
是的,您可以在卵石表上使用应用程序。有许多应用程序可从Pebble App Store下载,包括健身跟踪器,游戏和生产力工具。您可以通过智能手机上的鹅卵石应用在手表上安装应用程序。
如果我的卵石手表不与智能手机同步,该怎么办?
智能手机,尝试以下步骤:确保您的手表和智能手机彼此之间。检查是否在两个设备上启用了蓝牙。尝试重新启动手表和智能手机。如果问题持续存在,请尝试不搭配,然后重新配置您的手表和智能手机。>我如何照顾卵石手表?
软布和温和的肥皂。避免将其暴露于极端温度或苛刻的化学物质中。不使用时,将其存储在凉爽的干燥位置。定期更新手表软件,以确保其继续发挥最佳功能。
>
>我可以用iPhone使用鹅卵石手表吗? iOS设备。您可以通过蓝牙连接卵石手表到iPhone,并使用Pebble应用程序来管理设置,安装手表脸等。
>如何将鹅卵石手表重置为出厂设置?要将鹅卵石手表重置为出厂设置,请转到手表上的设置菜单,然后选择“系统”,然后选择“出厂重置”。这将删除您手表上的所有数据和设置。请注意,这个动作无法解开。
>我可以在卵石表上使用应用程序吗?
是的,您可以在卵石表上使用应用程序。有许多应用程序可从Pebble App Store下载,包括健身跟踪器,游戏和生产力工具。您可以通过智能手机上的鹅卵石应用在手表上安装应用程序。
如果我的卵石手表不与智能手机同步,该怎么办?
智能手机,尝试以下步骤:确保您的手表和智能手机彼此之间。检查是否在两个设备上启用了蓝牙。尝试重新启动手表和智能手机。如果问题持续存在,请尝试不搭配,然后重新配置您的手表和智能手机。>我如何照顾卵石手表?软布和温和的肥皂。避免将其暴露于极端温度或苛刻的化学物质中。不使用时,将其存储在凉爽的干燥位置。定期更新手表软件,以确保其继续发挥最佳功能。
>以上是高级卵石手表配置的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

本文讨论了在浏览器中优化JavaScript性能的策略,重点是减少执行时间并最大程度地减少对页面负载速度的影响。

本文讨论了使用浏览器开发人员工具的有效JavaScript调试,专注于设置断点,使用控制台和分析性能。

本文说明了如何使用源地图通过将其映射回原始代码来调试JAVASCRIPT。它讨论了启用源地图,设置断点以及使用Chrome DevTools和WebPack之类的工具。

本文探讨了Java收藏框架的有效使用。 它强调根据数据结构,性能需求和线程安全选择适当的收集(列表,设置,地图,队列)。 通过高效优化收集用法

掌握了入门级TypeScript教程后,您应该能够在支持TypeScript的IDE中编写自己的代码,并将其编译成JavaScript。本教程将深入探讨TypeScript中各种数据类型。 JavaScript拥有七种数据类型:Null、Undefined、Boolean、Number、String、Symbol(ES6引入)和Object。TypeScript在此基础上定义了更多类型,本教程将详细介绍所有这些类型。 Null数据类型 与JavaScript一样,TypeScript中的null

本教程将介绍如何使用 Chart.js 创建饼图、环形图和气泡图。此前,我们已学习了 Chart.js 的四种图表类型:折线图和条形图(教程二),以及雷达图和极地区域图(教程三)。 创建饼图和环形图 饼图和环形图非常适合展示某个整体被划分为不同部分的比例。例如,可以使用饼图展示野生动物园中雄狮、雌狮和幼狮的百分比,或不同候选人在选举中获得的投票百分比。 饼图仅适用于比较单个参数或数据集。需要注意的是,饼图无法绘制值为零的实体,因为饼图中扇形的角度取决于数据点的数值大小。这意味着任何占比为零的实体
