2017-07-15 2 views
-1

Comment faire une alerte horaire dans l'application native de la montre pour Gear S3? Des échantillons de code?Gear S3, Tizen: Alerte horaire (carillon) dans l'application native

Merci pour toute information!

+0

Avez-vous ajouté ci-dessous des lignes dans le fichier tizen-manifest.xml de l'application watchface? http: // tizen.org/privilège/alarm.get http://tizen.org/privilege/alarm.set

+0

Oui moi. Ces lignes se trouvent dans le fichier tizen-manifest.xml de l'application watchface. – Gregory

+0

Modifier la question avec le code dans le fichier manifeste. Je ne reçois pas une telle erreur. Je suppose que vous avez manqué l'une des étapes. –

Répondre

1

Vous pouvez essayer d'utiliser Alarm API dans ce but. Suivez les étapes ci-dessous:

  1. Créez d'abord une application de surveillance et une application de service. Forfait à la fois les applications et la construction. Passez par this link pour faire l'emballage.
  2. Maintenant, utilisez l'extrait de code ci-dessous dans l'application de watchface pour déclencher l'alerte après un délai spécifique de 1 heure dans votre cas.

    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;} 
    

    Utilisation pour des privilèges dans le fichier application au cadran manifeste: fonction

    http://tizen.org/privilege/alarm.get

    http://tizen.org/privilege/alarm.set

  3. maintenant dans service_app_control() de l'application de service, créez une alerte en utilisant le code ci-dessous:

    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;} 
    

utilisation ci-dessous dans l'application privilège du service fichier manifeste:

http://tizen.org/privilege/notification 

savoir dans les détails passent par this link.

Edit: 1 Vous pouvez trouver la raison de ce problème dans this link. S'il vous plaît passer par remarques et voir aussi section. J'ai déjà posté la réponse pour la version 2.3.2. C'est pourquoi je ne recevais aucune erreur. Veuillez suivre le chemin ci-dessous. Cela fonctionne pour la version 3.0 dans mon cas.

Étape 1: Prenez un compteur, d'abord le mettre à 0 et l'incrément chaque fois que l'horloge donne 0 pendant quelques secondes comme ceci:

watch_time_get_second(watch_time, &second); 
if(second == 0) count++; 

Étape 2: Maintenant, vérifier le compteur valeur si elle est égale à votre valeur requise, par exemple si vous voulez une alerte après chaque intervalle de 3 minutes, vous pouvez vérifier si elle est égale à 3 et après créer une notification comme ceci:

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; 
     } 

A la fin, le compteur à 0, pour se préparer à compter pour l'intervalle suivant. Trouver la structure complète du code ci-dessous pour une bonne compréhension:

#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.: Ne pas oublier d'ajouter un privilège pour la notification.

+0

Merci! Mais ** alarm_schedule_after_delay() ** renvoie ** ALARM_ERROR_NOT_PERMITTED_APP **, ce qui signifie que - _If app_control n'est pas une application de l'interface utilisateur, ALARM_ERROR_NOT_PERMITTED_APP renvoyé._ ([description] (https://developer.tizen.org/ko/development/ api-references/native-application? redirect =/dev-guide/2.4/org.tizen.native.mobile.apireference/groupe__CAPI__ALARM__MODULE.html # ga83e440e25f14588b9bf2a6193cf6653c)). Comment le réparer? – Gregory

+0

S'il vous plaît modifier la poste avec votre code. –