Gear S3 中的每小时提醒(铃声)
Hourly alert (chime) in Gear S3
如何在 Gear S3 的原生表盘应用程序中制作每小时提醒?
有代码示例吗?
您可以尝试使用闹钟 API 来达到这个目的。按照以下步骤操作:
- 首先创建一个Watch Application和一个Service Application。打包这两个应用程序并构建。通过this link进行打包
现在在表盘应用程序中使用以下代码片段在特定时间(在您的情况下为 1 小时)后触发警报。
bool init_alert(){
int ret;
int DELAY = 3;
int REMIND = 3600; //alert after every 1hr.
int alarm_id;
app_control_h app_control = NULL;
ret = app_control_create(&app_control);
ret = app_control_set_operation(app_control, APP_CONTROL_OPERATION_DEFAULT);
ret = app_control_set_app_id(app_control, "Service_App_ID");
ret = alarm_schedule_after_delay(app_control, DELAY, REMIND, &alarm_id);
return true;}
在表盘应用程序清单文件中使用以下权限:
现在在服务应用程序的 service_app_control() 函数中,使用以下代码创建警报:
void service_app_control(app_control_h app_control, void *data){
dlog_print(DLOG_INFO, LOG_TAG, "Hourly Alert Here");
notification = notification_create(NOTIFICATION_TYPE_NOTI);
int ret =0;
ret = notification_set_text(notification, NOTIFICATION_TEXT_TYPE_TITLE, "Hourly Alert!!",
NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
ret = notification_post(notification);
notification_free(notification);
return;}
在服务应用程序清单文件中使用以下权限:
http://tizen.org/privilege/notification
要详细了解请查看this link。
编辑:1
你可能会在this link中找到这个问题的原因。请仔细阅读 备注 和 另请参阅 部分。我之前发布了版本 2.3.2 的答案。这就是为什么我没有收到任何错误。
请按照以下方式进行。就我而言,它适用于 3.0 版。
第 1 步: 拿一个计数器,首先将其设置为 0 并在每次时钟给出 0 秒时递增它,如下所示:
watch_time_get_second(watch_time, &second);
if(second == 0) count++;
第 2 步: 现在,检查计数器值是否等于您需要的值,例如如果你想要每 3 分钟间隔一次警报,那么你可以检查它是否等于 3,然后创建一个这样的通知:
if(count == 3){
dlog_print(DLOG_INFO, LOG_TAG, "Hourly Alert");
notification = notification_create(NOTIFICATION_TYPE_NOTI);
int ret =0;
ret = notification_set_text(notification, NOTIFICATION_TEXT_TYPE_TITLE, "Hourly Alert!!",
NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
ret = notification_post(notification);
notification_free(notification);
count = 0;
}
最后,将计数器设置为0,准备为下一个间隔计数。在下面找到完整的代码结构以便更好地理解:
#include <notification.h>
static notification_h notification = NULL;
int count = 0;
static void
update_watch(appdata_s *ad, watch_time_h watch_time, int ambient)
{
char watch_text[TEXT_BUF_SIZE];
int hour24, minute, second;
if (watch_time == NULL)
return;
watch_time_get_hour24(watch_time, &hour24);
watch_time_get_minute(watch_time, &minute);
watch_time_get_second(watch_time, &second);
if (!ambient) {
if(second == 0) count++;
if(count == 3){
dlog_print(DLOG_INFO, LOG_TAG, "Hourly Alert");
notification = notification_create(NOTIFICATION_TYPE_NOTI);
int ret =0;
ret = notification_set_text(notification, NOTIFICATION_TEXT_TYPE_TITLE, "Hourly Alert!!",
NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
ret = notification_post(notification);
notification_free(notification);
count = 0;
}
dlog_print(DLOG_INFO, LOG_TAG, "cnt = %d", count);
snprintf(watch_text, TEXT_BUF_SIZE, "<align=center>Hello<br/>%02d:%02d:%02d</align>",
hour24, minute, second);
} else {
snprintf(watch_text, TEXT_BUF_SIZE, "<align=center>Hello Watch<br/>%02d:%02d</align>",
hour24, minute);
}
elm_object_text_set(ad->label, watch_text);
}
N.B: 别忘了添加通知权限。
如何在 Gear S3 的原生表盘应用程序中制作每小时提醒? 有代码示例吗?
您可以尝试使用闹钟 API 来达到这个目的。按照以下步骤操作:
- 首先创建一个Watch Application和一个Service Application。打包这两个应用程序并构建。通过this link进行打包
现在在表盘应用程序中使用以下代码片段在特定时间(在您的情况下为 1 小时)后触发警报。
bool init_alert(){ int ret; int DELAY = 3; int REMIND = 3600; //alert after every 1hr. int alarm_id; app_control_h app_control = NULL; ret = app_control_create(&app_control); ret = app_control_set_operation(app_control, APP_CONTROL_OPERATION_DEFAULT); ret = app_control_set_app_id(app_control, "Service_App_ID"); ret = alarm_schedule_after_delay(app_control, DELAY, REMIND, &alarm_id); return true;}
在表盘应用程序清单文件中使用以下权限:
现在在服务应用程序的 service_app_control() 函数中,使用以下代码创建警报:
void service_app_control(app_control_h app_control, void *data){ dlog_print(DLOG_INFO, LOG_TAG, "Hourly Alert Here"); notification = notification_create(NOTIFICATION_TYPE_NOTI); int ret =0; ret = notification_set_text(notification, NOTIFICATION_TEXT_TYPE_TITLE, "Hourly Alert!!", NULL, NOTIFICATION_VARIABLE_TYPE_NONE); ret = notification_post(notification); notification_free(notification); return;}
在服务应用程序清单文件中使用以下权限:
http://tizen.org/privilege/notification
要详细了解请查看this link。
编辑:1 你可能会在this link中找到这个问题的原因。请仔细阅读 备注 和 另请参阅 部分。我之前发布了版本 2.3.2 的答案。这就是为什么我没有收到任何错误。 请按照以下方式进行。就我而言,它适用于 3.0 版。
第 1 步: 拿一个计数器,首先将其设置为 0 并在每次时钟给出 0 秒时递增它,如下所示:
watch_time_get_second(watch_time, &second);
if(second == 0) count++;
第 2 步: 现在,检查计数器值是否等于您需要的值,例如如果你想要每 3 分钟间隔一次警报,那么你可以检查它是否等于 3,然后创建一个这样的通知:
if(count == 3){
dlog_print(DLOG_INFO, LOG_TAG, "Hourly Alert");
notification = notification_create(NOTIFICATION_TYPE_NOTI);
int ret =0;
ret = notification_set_text(notification, NOTIFICATION_TEXT_TYPE_TITLE, "Hourly Alert!!",
NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
ret = notification_post(notification);
notification_free(notification);
count = 0;
}
最后,将计数器设置为0,准备为下一个间隔计数。在下面找到完整的代码结构以便更好地理解:
#include <notification.h>
static notification_h notification = NULL;
int count = 0;
static void
update_watch(appdata_s *ad, watch_time_h watch_time, int ambient)
{
char watch_text[TEXT_BUF_SIZE];
int hour24, minute, second;
if (watch_time == NULL)
return;
watch_time_get_hour24(watch_time, &hour24);
watch_time_get_minute(watch_time, &minute);
watch_time_get_second(watch_time, &second);
if (!ambient) {
if(second == 0) count++;
if(count == 3){
dlog_print(DLOG_INFO, LOG_TAG, "Hourly Alert");
notification = notification_create(NOTIFICATION_TYPE_NOTI);
int ret =0;
ret = notification_set_text(notification, NOTIFICATION_TEXT_TYPE_TITLE, "Hourly Alert!!",
NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
ret = notification_post(notification);
notification_free(notification);
count = 0;
}
dlog_print(DLOG_INFO, LOG_TAG, "cnt = %d", count);
snprintf(watch_text, TEXT_BUF_SIZE, "<align=center>Hello<br/>%02d:%02d:%02d</align>",
hour24, minute, second);
} else {
snprintf(watch_text, TEXT_BUF_SIZE, "<align=center>Hello Watch<br/>%02d:%02d</align>",
hour24, minute);
}
elm_object_text_set(ad->label, watch_text);
}
N.B: 别忘了添加通知权限。