Pebble Watchface电池指示灯

时间:2015-04-13 10:56:06

标签: indicator pebble-watch batterylevel cloudpebble

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

我知道如果我使用此处的文档,我可以做到正确:http://developer.getpebble.com/docs/c/Foundation/Event_Service/BatteryStateService/
它提供了一堆确定电池状态的方法,我可以用不同的图像链接不同的状态。

但我的问题是:

  1. 是否有更简单的方法来实现小型电池状态图标 我的表盘没有我必须创建自己的电池状态 图像。
  2. 如果没有更简单的方法来实现它,那么有什么小的 电池状态图标可供使用而不是制作我的 自己的形象。
  3. 我基本上都在寻找实现这一目标的最佳方式,这样我就不必浪费时间和精力来重新发明轮子。

3 个答案:

答案 0 :(得分:1)

我做了一些挖掘工作,我发现有很多开源项目都带有电池指示图标,可以显示不同级别的电池电量。

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

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

声明的GBitmap数组中

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

5月阵列大小为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)]);
}

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

答案 1 :(得分:1)

你可以使用一些代码在"空"内画一个矩形。电池图标。通过这种方式,您只需一个图标即可“填充”#34;它取决于电池状态。

答案 2 :(得分: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);
}