/* Initialization*/void handle_init( void ) { window = window_create(); window_stack_push( window, true ); Layer *window_layer = window_get_root_layer( window ); // Read persistent data if ( persist_exists( SETTING_STATUS_KEY ) ) { current_status = persist_read_int( SETTING_STATUS_KEY ); } else { current_status = STATUS_ON; } if ( persist_exists( SETTING_WEATHERSTATUS_KEY ) ) { weather_status = persist_read_int( SETTING_WEATHERSTATUS_KEY ); } else { weather_status = WEATHER_ON; } if ( persist_exists( SETTING_LANGUAGE_KEY ) ) { current_language = persist_read_int( SETTING_LANGUAGE_KEY ); } else { current_language = LANG_EN; } if ( persist_exists( SETTING_FORMAT_KEY ) ) { current_format = persist_read_int( SETTING_FORMAT_KEY ); } else { current_format = FORMAT_WEEK; } if ( persist_exists( SETTING_INVERT_KEY ) ) { invert_format = persist_read_int( SETTING_INVERT_KEY ); } else { invert_format = INVERT_ON; } if ( persist_exists( BLUETOOTHVIBE_KEY ) ) { bluetoothvibe_status = persist_read_int( BLUETOOTHVIBE_KEY ); } else { bluetoothvibe_status = BLUETOOTHVIBE_ON; } if ( persist_exists( HOURLYVIBE_KEY ) ) { hourlyvibe_status = persist_read_int( HOURLYVIBE_KEY ); } else { hourlyvibe_status = HOURLYVIBE_ON; } if ( persist_exists( SECS_KEY ) ) { secs_status = persist_read_int( SECS_KEY ); } else { secs_status = SECS_ON; } // Read watchface settings from persistent data or use default values current_status = persist_exists( SETTING_STATUS_KEY ) ? persist_read_int( SETTING_STATUS_KEY ) : STATUS_ON; weather_status = persist_exists( SETTING_WEATHERSTATUS_KEY ) ? persist_read_int( SETTING_WEATHERSTATUS_KEY ) : WEATHER_ON; current_language = persist_exists( SETTING_LANGUAGE_KEY ) ? persist_read_int( SETTING_LANGUAGE_KEY ) : LANG_EN; current_format = persist_exists( SETTING_FORMAT_KEY ) ? persist_read_int( SETTING_FORMAT_KEY ) : FORMAT_WEEK; invert_format = persist_exists( SETTING_INVERT_KEY ) ? persist_read_int( SETTING_INVERT_KEY ) : INVERT_ON; bluetoothvibe_status = persist_exists( BLUETOOTHVIBE_KEY ) ? persist_read_int( BLUETOOTHVIBE_KEY ) : BLUETOOTHVIBE_ON; hourlyvibe_status = persist_exists( HOURLYVIBE_KEY ) ? persist_read_int( HOURLYVIBE_KEY ) : HOURLYVIBE_ON; secs_status = persist_exists( SECS_KEY ) ? persist_read_int( SECS_KEY ) : SECS_ON; // Background image background_image = gbitmap_create_with_resource( RESOURCE_ID_IMAGE_BACKGROUND ); background_layer = bitmap_layer_create( layer_get_frame( window_layer ) ); bitmap_layer_set_bitmap( background_layer, background_image ); layer_add_child( window_layer, bitmap_layer_get_layer( background_layer ) ); // Initial settings Tuplet initial_values[] = { TupletInteger( SETTING_STATUS_KEY, current_status ) , TupletInteger( SETTING_WEATHERSTATUS_KEY, weather_status ) , TupletInteger( SETTING_LANGUAGE_KEY, current_language ) , TupletInteger( SETTING_FORMAT_KEY, current_format ) , TupletInteger( SETTING_INVERT_KEY, invert_format ) , TupletInteger( BLUETOOTHVIBE_KEY, bluetoothvibe_status ) , TupletInteger( HOURLYVIBE_KEY, hourlyvibe_status ) , TupletInteger( SECS_KEY, secs_status ) , TupletInteger( SETTING_ICON_KEY, (uint8_t) 14) , TupletCString( SETTING_TEMPERATURE_KEY, "") }; // Open AppMessage to transfers app_message_open( 256 , 256 ); // Initialize AppSync app_sync_init( &app, sync_buffer , sizeof( sync_buffer ) , initial_values , ARRAY_LENGTH( initial_values ) , tuple_changed_callback , app_error_callback , NULL ); // Perform sync app_sync_set( &app, initial_values, ARRAY_LENGTH( initial_values ) ); appStarted = true; //.........这里部分代码省略.........