1

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

我知道如果我使用此处找到的文档,我可以做对:http: //developer.getpebble.com/docs/c/Foundation/Event_Service/BatteryStateService/
它提供了很多确定电池状态的方法,我可以只是将不同的状态与我制作的不同图像联系起来。

但我的问题是:

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

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

4

3 回答 3

1

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

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

图像存储在使用声明的 GBitmap 数组中static GBitmap *battery_images[22];

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

May 数组大小为 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)]);
}

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

于 2015-04-14T08:38:41.987 回答
1

您可以使用一些代码在“空”电池图标内绘制一个矩形。这样,您只有一个图标,然后根据电池状态“填充”它。

于 2015-04-14T10:13:54.667 回答
1

你可以画一个:

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);
}
于 2016-03-01T08:48:07.440 回答