我想在我的Pebble表盘上添加一个电池指示灯,表示我的Pebble手表的电池电量。
我知道如果我使用此处的文档,我可以做到正确:http://developer.getpebble.com/docs/c/Foundation/Event_Service/BatteryStateService/
它提供了一堆确定电池状态的方法,我可以用不同的图像链接不同的状态。
但我的问题是:
我基本上都在寻找实现这一目标的最佳方式,这样我就不必浪费时间和精力来重新发明轮子。
答案 0 :(得分:1)
我做了一些挖掘工作,我发现有很多开源项目都带有电池指示图标,可以显示不同级别的电池电量。
我每10个百分点使用一次图像(因为电池电量仅以10为增量返回功率级别)
图像存储在使用static GBitmap *battery_images[22];
将图像包含在资源文件夹中,并使用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);
}