Pebble 表盘电池指示器

Pebble Watchface Battery Indicator

我想在我的 Pebble 表盘上添加一个电池指示器,以指示我的 Pebble 手表的电池电量。

我知道如果我使用此处找到的文档,我可以做对:http://developer.getpebble.com/docs/c/Foundation/Event_Service/BatteryStateService/
它提供了一系列确定电池状态的方法,我可以 link 不同的状态和我制作的不同图像。

但是我的问题是:

  1. 有没有更简单的方法来实现一个小的电池状态图标 我的表盘无需创建自己的电池状态 图片。
  2. 如果没有更简单的实现方法,是否有任何小的 电池状态图标可以在那里使用,而不是让我的 自己的图片。

我基本上是在寻找实现它的最佳方法,这样我就不必浪费时间和精力重新发明轮子。

我进行了一些挖掘,发现有许多开源项目都带有针对不同电池电量级别的电池指示图标。

我每 10 个百分比级别使用图像(因为电池充电仅 returns 功率级别以 10 为增量)

图像存储在使用 static GBitmap *battery_images[22];

声明的 GBitmap 数组中

将图像包含在您的资源文件夹中并使用 gbitmap_create_with_resource 分配它们,例如。 battery_images[2] = gbitmap_create_with_resource(RESOURCE_ID_BATTERY_20);

可能数组大小为 22,因为我使用了 0 - 100 电池电量和 0 - 100 充电电量。这是 handle_battery 函数。

void handle_battery(BatteryChargeState charge_state) {
  bitmap_layer_set_bitmap(battery_layer, battery_images[
    (charge_state.is_charging ? 11 : 0) + (charge_state.charge_percent / 10)]);
}

希望这对遇到类似问题的任何人有所帮助。

您可以使用一些代码在 "empty" 电池图标内绘制一个矩形。这样你只有一个图标,你 "fill" 它取决于电池状态。

你可以只画一个:

static Layer* s_output_layer;

static void draw_battery(Layer *layer, GContext *ctx) {
  graphics_context_set_stroke_color(ctx, GColorWhite);
  graphics_context_set_fill_color(ctx, GColorWhite);
  graphics_draw_rect(ctx, GRect(2, 0, 5, 2));
  graphics_draw_rect(ctx, GRect(0, 2, 9, 18));

  // Can't draw a 1 pixel rectangle.  Use 13 to ensure 10% => 2px height
  int gone = 13 - 0.13 * battery_state_service_peek().charge_percent;
  if (14-gone >= 2)
    graphics_fill_rect(ctx, GRect(2, 4+gone, 5, 14-gone), 0, GCornerNone);
}

void create_battery_layer(Layer *window_layer) {
  s_output_layer = layer_create(GRect(4, 22, 9, 20));
  layer_add_child(window_layer, s_output_layer);
  layer_set_update_proc(s_output_layer, draw_battery);
}

void destroy_battery_layer() {
  layer_destroy(s_output_layer);
}