麦步社区-论坛

标题: 求定时器代码样本 [打印本页]

作者: Zola    时间: 2015-11-11 11:13
标题: 求定时器代码样本
想给表盘加手势识别,每200毫秒取样,判断Z轴大于2000小于2100就是平放,此时若大于2200就判断为翻手腕。

但我不知道app_service_timer_subscribe和app_window_timer_subscribe有什么区别,

uint8_t app_service_timer_subscribe(uint32_t millis, AppServiceTimerCallback timer_callback , void* context)

void check_z_status(){
}
我使用app_service_timer_subscribe(200,check_z_status);会说我参数太少;

app_window_timer_subscribe

int8_t app_window_timer_subscribe(Window *window, uint32_t millis, AppServiceTimerCallback timer_callback, void *context);
这个加了一个窗口参数,不知道是指定窗口还是窗口ID。

谁写过跑表或闹钟应用,求借鉴一小段定时器的用法。

作者: Zola    时间: 2015-11-11 11:46
去这个开源的代码里找了一下,没有发现人家用定时器 https://github.com/hongjones/maibu_activety_face
作者: 陶坤@麦步    时间: 2015-11-11 18:18
截图所示

image.jpeg (12.51 KB, 下载次数: 234)

image.jpeg

image.jpeg (42.54 KB, 下载次数: 219)

image.jpeg

作者: Zola    时间: 2015-11-11 19:25

感谢,搞定:
/*每300毫米刷新*/
        app_timer_change_id = app_window_timer_subscribe(p_window, 300, app_timer_change, NULL);

/*定时器,更新第二时区或剩余电量*/
void app_timer_change(date_time_t tick_time, uint32_t millis, void* context )
{
        P_Window p_window = app_window_stack_get_window_by_id(g_app_mwd_window_id);       
                if (NULL == p_window)
                {
                        return ;
                }

        P_Layer layer_battery = app_window_get_layer_by_id(p_window, g_app_mwd_battery_layer_id);
                if (NULL == layer_battery)
                {
                        return;
                }

        /*更新电量到第二时区图层*/
        int8_t percent;
        int16_t x, y, z;
        char str[20] = "";
        struct date_time datetime;
        int hour=datetime.hour;
        maibu_get_accel_data(&x, &y, &z);
        int accelx=x;
        int accely=y;
        in
作者: Zola    时间: 2015-11-11 19:26
又说我操作有风险被拦截。提交的代码被吃掉一截了。
作者: killbull    时间: 2015-11-12 11:06
楼主加入麦步公司吧!!




欢迎光临 麦步社区-论坛 (http://203.195.186.190/) Powered by Discuz! X3.2