8 заметок с тегом

Pebble

Formula 1

20 марта 2016, 17:59
Formula 1 app for Pebble watch

Вот и начался новый сезон Формулы 1. Прошел первый Гран При Австралии.
Обидно за Квята, что не смог стартовать, но в Бахрейне у него все получиться.

А теперь о приложении Formula 1 для часов Pebble. Уже второй год подряд вы можете наблюдать за результатами гонок, а также видеть оставшееся время до следующего Гран При.

С 2016 сезона приложение очень сильно изменилось, добавилась поддержка часов Pebble Time, появилась Timeline с уведомлениями о начале практики/квалификации/гонки. По сути это переписанное с нуля приложение. Скоро добавиться поддержка Pebble Time Round, и много всяких интересных вещей. В Timeline будут только напоминания о предстоящих событиях и никаких результатов, поэтому не переживайте за спойлеры!!!

Качайте и ставьте лайки.

Formula 1   Pebble

Pebble Time Round

12 октября 2015, 23:48

Компания Pebble представила новую линейку наручных часов Pebble Time Round. Да, да, экран теперь ввиде круга. Изменениям подвергся только экран, теперь он имеет разрешение 180х180 пикселей, против 144х168 в предыдущих версиях, но срезан по углам. В остальном железная начинка ничем не отличается от версии Pebble Time.

Новые часы уже можно приобрести, но большинство приложений без адаптации под новый экран будут выглядеть криво. Ознакомиться с новыми элементами и адаптировать свои приложения уже можно с помощью предварительной версии SDK для разработчиков или в бета версии CloudPebble.

Сегодня покажу на примере watchface Space Time, как адаптировать под Time Round. Напоминаю, Space Time — это часы, где в центре экрана расположено неподвижное солнце, вокруг него вращается Земля и показывает направление часовой стрелки, вокруг Земли вращается луна и показывает относительно Земли направление минутной стрелки и наконец, вокруг луны вращается некий астероид и показывает секунды.

Space Time состоят из одного окна и двух слоев, вся адаптация заключается в изменении размеров элементов на экране. Так как предыдущие модели часов имели прямоугольный экран, планеты двигались по эллиптической орбите, то в Pebble Time Round это будет лишним. Но в круглых часах немного увеличилось разрешение экрана, и чтобы его полностью заполнить, немного увеличим размеры планет.

Начиная с версии SDK 3.6 появились новые условные директивы PBL_ROUND, PBL_RECT и PBL_PLATFORM_CHALK. Кстати, новая платформа получила имя «Chalk», что в переводе означает мел. Также
С помощью новых директив можно быстро адаптировать свое приложение под все платформы.
Например различие классических Pebble от моделей с цветным экраном:

#ifdef PBL_BW
    // Pebble с ч/б экраном
#elif PBL_COLOR
    // С цветным экраном
#endif

Или различие Pebble с квадратным и круглым экраном:

#ifdef PBL_RECT
    // Квадратный экран
#elif PBL_ROUND
    // Круглый экран
#endif

В моем случае этого было достаточно, расставить необходимые директивы в нужных местах и перекомпилировать. Все изменения можно посмотреть на github. Результат адаптации под все платформы показан на следующем изображении.

Но различия в этом не заканчиваются, на портале разработчика можно прочитать про новые элементы доступные для Pebble Time Round, с помощью которых можно создавать приложения не похожие на приложения для моделей с квадратными экранами. После релиза версии 3.6 появятся много новых и интересных приложений в appstore для Pebble Time Round.

development   Pebble

Pebble Time уже сегодня

8 марта 2015, 0:03

Ребята из Pebble пришли на Kickstarter с новой версией часов и бьют все рекорды.
А все потому, что в новой версии появится цветной экран, но это еще не все, технические характеристики в сравнении с прошлой версией:

Pebble/Pebble Steel Pebble Time
Имя платформы Aplite Basalt
Частоты CPU 64 MHz 100MHz
Макс. размер ресурсов 96 kb 256 kb
Макс. размер приложения 24 kb 64 kb
Разрешение дисплея 144 х 168 144 х 168
Количество цветов дисплея 2 64
Сенсоры акселерометр, компас акселерометр, компас
Кнопки 4 4
Микрофон нет есть
Порт для зарядки только питание питание + аксессуары

О них можно говорить много, но сегодня я покажу, как уже сейчас начать разрабатывать приложение и как отлаживать на эмуляторе.
Все действия ниже описанные были проделаны с SDK 3.0 dp2 в Mac OS X 10.10.2.

Установка

Установка Pebble SDK

Установим Xcode Command Line Tools если еще не установлено.
Скачаем последнюю версию SDK.
Создадим директорию куда хотим установить все необходимые утилиты и распакуем в нее скаченный SDK:

mkdir ~/pebble-dev/
cd ~/pebble-dev/
tar -zxf ~/Downloads/PebbleSDK-3.0-dp2.tar.gz

Добавим путь к SDK в настройки терминала:

echo 'export PATH=~/pebble-dev/PebbleSDK-3.0-dp2/bin:$PATH' >> ~/.bash_profile
. ~/.bash_profile

Установка Pebble ARM тулчейна

Скачаем тулчейн.
В терминале заходим в папку с SDK и распаковываем архив:

cd ~/pebble-dev/PebbleSDK-3.0-dp2
tar -zxf ~/Downloads/arm-cs-tools-macos-universal-static.tar.gz

Установка библиотек для Python

Для конвертирования шрифтов и изображений в ресурсы Pebble необходимы Python библиотеки. Для их установки нам потребуется менеджер пакетов pip.
Установим pip и virtualenv:

sudo easy_install pip
sudo pip install virtualenv

Установим необходимые библиотеки:

cd ~/pebble-dev/PebbleSDK-3.0-dp2
virtualenv --no-site-packages .env
source .env/bin/activate
CFLAGS="" pip install -r requirements.txt
deactivate

Установка freetype

Для работы со шрифтами необходима библиотека freetype, для ее установки нам потребуется менеджер пакетов homebrew.

brew update
brew install freetype

Установка эмулятора

Для работы эмулятора необходимо установить следующие библиотеки:

brew install boost-python
brew install glib
brew install pixman

Разработка

Введение

Мы установили Pebble SDK и все необходимые утилиты и библиотеки, теперь перейдем к написанию приложения.
Если вы уже представляете с чего начать и работали с SDK 2.x, то прочитайте о нововведениях в SDK 3.0 или если вы в этом деле новичок, то прочитайте статьи о самых основных моментах.

Работа с эмулятором

Первые модели Pebble Time своих владельцев достигнут еще не скоро, а ознакомиться со всеми возможностями уже не терпится, поэтому будем использовать эмулятор.
Скачаем какой нибудь пример приложения с github использующий возможности SDK 3.0.

git clone https://github.com/pebble-hacks/isotime
cd isotime

Скомпилируем приложение:

pebble build

И запустим на эмуляторе Pebble Time:

pebble install --emulator basalt

Ключ эмулятора basalt как раз и указывает какую версию часов запускать, если указать aplite, то запуститься эмулятор Pebble предыдущей версии.
После запуска эмулятора мы можем наблюдать, как будет выглядеть наше приложение:

После такого трудно устоять и не пойти на Kickstarter и не заказать новые часы.
В новых часах гораздо больше идей можно будет реализовать и приложения будут выглядеть намного приятнее, чем текущие черно-белые.
Ждем Pebble Time!

development   Pebble

WoT Adjutant 1.2 для часов Pebble

11 января 2015, 18:17

Представляю обновленную версию приложения помощника к игре World of Tanks.
В приложении можно просматривать статистику и достижения полученные в игре.

В новой версии добавились 4 новых региона: Азия, Корея, Европа и Северная америка.
Скачать последнюю версию можно по ссылке.
Исходный код доступен на GitHub.

Pebble   WoT Adjutant

Геолокация в Pebble

3 декабря 2014, 23:52

Сегодня рассмотрим, как получить географические координаты в своем приложении.

Для начала создадим новый проект:

$ pebble new-project Geolocation-Pebble

В созданном проекте, в папке src, добавим новый каталог js, а в нем новый файл pebble-js-app.js
В файле напишем 2 функции, одна будет вызываться при успешном получении координат, другая при ошибке:

function locationSuccess(pos) {
  var coordinates = pos.coords;
  Pebble.sendAppMessage({
    "KEY_LATITUDE"  : coordinates.latitude.toString(),
    "KEY_LONGITUDE" : coordinates.longitude.toString()
  });
  console.log("lat: " + coordinates.latitude);
  console.log("lon: " + coordinates.longitude);
}
function locationError(err) {
  console.warn('location error (' + err.code + '): ' + err.message);
}
var locationOptions = {
  enableHightAccuracy : true,
  timeout             : 60000, 
  maximumAge          : 10000
};

Когда мы получили координаты, мы их собираем в объект и отправляем в часы функцией Pebble.sendAppMessage.
Также добавим опции, такие как enableHightAccuracy — повышенная точность определения местоположения, timeout — максимальное время на получение координат и maximumAge — максимальный допустимый возраст координат. Подробнее о спецификации можно почитать на сайте W3C.
После этого добавить слушатель, который будет получать команду из часов и запускать процесс определения координат:

Pebble.addEventListener("appmessage",
  function(e) {
    window.navigator.geolocation.getCurrentPosition(locationSuccess, locationError, locationOptions);
  }
);

Далее перейдем к файлу appinfo.json и добавим туда 2 ключа, в одном будет передаваться широта, в другом долгота и добавим разрешение на использование геолокационного сервиса:

"capabilities": [ "location" ],
"appKeys": {
  "KEY_LATITUDE"  : 0,
  "KEY_LONGITUDE" : 1
},

Перейдем к написанию самого приложения для часов, оно будет состоять из 2х текстовых полей и одного события. При нажатии на кнопку «выбор» будет происходить обновление координат.
В функции windows_load опишем текстовые поля:

static void window_load(Window *window) {
  Layer *window_layer = window_get_root_layer(window);
  
  latitude_layer = text_layer_create(GRect(0, 45, 144, 68));
  text_layer_set_text_color(latitude_layer, GColorWhite);
  text_layer_set_background_color(latitude_layer, GColorClear);
  text_layer_set_font(latitude_layer, fonts_get_system_font(FONT_KEY_GOTHIC_18_BOLD));
  text_layer_set_text_alignment(latitude_layer, GTextAlignmentCenter);
  layer_add_child(window_layer, text_layer_get_layer(latitude_layer));
  text_layer_set_text(latitude_layer, "Press SELECT for update");

  longitude_layer = text_layer_create(GRect(0, 90, 144, 68));
  text_layer_set_text_color(longitude_layer, GColorWhite);
  text_layer_set_background_color(longitude_layer, GColorClear);
  text_layer_set_font(longitude_layer, fonts_get_system_font(FONT_KEY_GOTHIC_18_BOLD));
  text_layer_set_text_alignment(longitude_layer, GTextAlignmentCenter);
  layer_add_child(window_layer, text_layer_get_layer(longitude_layer));
  text_layer_set_text(longitude_layer, "N/A");
}

Создадим функции для отслеживания нажатий на кнопку «выбор» и передачи команды в JavaScript Framework для обновления координат:

static void select_click_handler(ClickRecognizerRef recognizer, void *context) {
  Tuplet initial_values[] = {
    TupletCString(KEY_LATITUDE, "N/A"),
    TupletCString(KEY_LONGITUDE, "N/A"),
  };
  app_sync_init(&sync, sync_buffer, sizeof(sync_buffer), initial_values, ARRAY_LENGTH(initial_values),
      sync_tuple_changed_callback, sync_error_callback, NULL);

  send_cmd();
}
static void click_config_provider(void *context) {
  window_single_click_subscribe(BUTTON_ID_SELECT, select_click_handler);
}

Опишем функцию передачи данных в JavaScript Framework, хотя мы и будем передавать пустой объект, это все для того чтобы запустить Pebble.addEventListener:

static void send_cmd(void) {
  Tuplet value = TupletInteger(2, 1);
  DictionaryIterator *iter;
  app_message_outbox_begin(&iter);
  if (iter == NULL) {
    return;
  }
  dict_write_tuplet(iter, &value);
  dict_write_end(iter);
  app_message_outbox_send();
}

В следующей функции мы принимаем объект состоящий из 2х ключей и обновляем наши соответствующие текстовые поля:

static void sync_tuple_changed_callback(const uint32_t key, const Tuple* new_tuple, const Tuple* old_tuple, void* context) {
  switch (key) {
    case KEY_LATITUDE:
      text_layer_set_text(latitude_layer, new_tuple->value->cstring);
      break;
    case KEY_LONGITUDE:
      text_layer_set_text(longitude_layer, new_tuple->value->cstring);
      break;
  }
}

Незабываем добавить пару строчек в  функцию init:

app_message_open(app_message_inbox_size_maximum(), app_message_outbox_size_maximum());
window_set_click_config_provider(window, click_config_provider);

При желании или необходимости можно добавить таймер и через определенный интервал обновлять координаты, а потом, например, рисовать пройденный трек, но мне для своего приложения этого не требовалось, поэтому об этом расскажу может в следующий раз.

Полную версию исходников можно посмотреть на GitHub.

geolocation   Pebble   tutorial

Учебник по Pebble SDK

23 ноября 2014, 22:07

Привожу ссылки на замечательный цикл статей по разработке для Pebble от Chris Lewis.
В 10 статьях будет описано почти все возможности Pebble SDK, кроме тех которые появились в версии 2.5 и выше.

  1. Your First Watchapp
  2. Telling the Time
  3. Images and Fonts
  4. Animations and Timers
  5. Buttons and Vibrations
  6. AppMessage for PebbleKit JS
  7. MenuLayers
  8. Android App Integration
  9. App Configuration
  10. Event Services
Pebble   tutorial

RPi-Monitor для часов Pebble

15 октября 2014, 7:16

Представляю вашему вниманию свое первое приложение для часов Pebble.

Приложение RPi-Monitor представляет из себя монитор основных показателей Raspberry Pi.
Для работы необходимо установить RPi-Monitor на вашу Raspberry Pi плату.

На 4х страницах отображается вся основная информация и системе.
Исходный код доступен на github.com

Скачать: веб сайт или Pebble Appstore

c   Pebble   raspberry pi   RPi-Monitor
Ctrl + ↓ Ранее