LB updated
authorDonghyun Lee <dh0922.lee@samsung.com>
Thu, 9 Jun 2016 04:51:43 +0000 (13:51 +0900)
committerDonghyun Lee <dh0922.lee@samsung.com>
Thu, 9 Jun 2016 04:52:06 +0000 (13:52 +0900)
233 files changed:
org.tizen.devtools/html/download/2_4_rev6_release_notes.htm [new file with mode: 0644]
org.tizen.devtools/html/download/download.htm
org.tizen.devtools/html/download/release_notes.htm
org.tizen.gettingstarted/html/images/build_ui_basic_textbox_mw.png
org.tizen.gettingstarted/html/images/camera_state_changes_n.png [new file with mode: 0644]
org.tizen.gettingstarted/html/images/connectivity_download_state.png [new file with mode: 0644]
org.tizen.gettingstarted/html/images/connectivity_tdls.png [new file with mode: 0644]
org.tizen.gettingstarted/html/images/connectivity_wifidirect.png [new file with mode: 0644]
org.tizen.gettingstarted/html/images/graphics_animation.png [new file with mode: 0644]
org.tizen.gettingstarted/html/images/graphics_pentagon.png [new file with mode: 0644]
org.tizen.gettingstarted/html/images/graphics_project.png [new file with mode: 0644]
org.tizen.gettingstarted/html/images/graphics_project_create.png [new file with mode: 0644]
org.tizen.gettingstarted/html/images/graphics_squares.png [new file with mode: 0644]
org.tizen.gettingstarted/html/images/graphics_triangle.png [new file with mode: 0644]
org.tizen.gettingstarted/html/images/player_state_changes_n.png [new file with mode: 0644]
org.tizen.gettingstarted/html/images/recorder_state_changes_n.png [new file with mode: 0644]
org.tizen.gettingstarted/html/images/simple_ui_tau_create_mw.png
org.tizen.gettingstarted/html/images/simple_ui_tau_create_ww.png
org.tizen.gettingstarted/html/images/simple_ui_update_mgr_ww.png
org.tizen.gettingstarted/html/index.htm
org.tizen.gettingstarted/html/native/cover_page_n.htm
org.tizen.gettingstarted/html/native/details/tizen_apis_n.htm
org.tizen.gettingstarted/html/native/feature/app_connectivity_n.htm [new file with mode: 0644]
org.tizen.gettingstarted/html/native/feature/app_connectivity_operation_n.htm [new file with mode: 0644]
org.tizen.gettingstarted/html/native/feature/app_connectivity_p2p_n.htm [new file with mode: 0644]
org.tizen.gettingstarted/html/native/feature/app_connectivity_usage_n.htm [new file with mode: 0644]
org.tizen.gettingstarted/html/native/feature/app_graphics_animation_n.htm [new file with mode: 0644]
org.tizen.gettingstarted/html/native/feature/app_graphics_n.htm [new file with mode: 0644]
org.tizen.gettingstarted/html/native/feature/app_graphics_polygon_n.htm [new file with mode: 0644]
org.tizen.gettingstarted/html/native/feature/app_graphics_square_n.htm [new file with mode: 0644]
org.tizen.gettingstarted/html/native/feature/app_multimedia_audio_n.htm [new file with mode: 0644]
org.tizen.gettingstarted/html/native/feature/app_multimedia_camera_n.htm [new file with mode: 0644]
org.tizen.gettingstarted/html/native/feature/app_multimedia_n.htm [new file with mode: 0644]
org.tizen.gettingstarted/html/native/feature/app_multimedia_video_n.htm [new file with mode: 0644]
org.tizen.gettingstarted/html/native/feature/ui_builder_app_design_mn.htm [moved from org.tizen.gettingstarted/html/native/ui/ui_builder_app_design_mn.htm with 100% similarity]
org.tizen.gettingstarted/html/native/feature/ui_builder_overview_mn.htm [moved from org.tizen.gettingstarted/html/native/ui/ui_builder_overview_mn.htm with 100% similarity]
org.tizen.gettingstarted/html/native/mobile/build_ui_mn.htm
org.tizen.gettingstarted/html/native/process/app_dev_process_n.htm
org.tizen.gettingstarted/html/native/wearable/build_ui_wn.htm
org.tizen.gettingstarted/html/native/wearable_watch/build_ui_watch_wn.htm
org.tizen.gettingstarted/html/native/wearable_widget/build_ui_widget_wn.htm
org.tizen.gettingstarted/html/web/mobile/build_ui_mw.htm
org.tizen.gettingstarted/html/web/wearable/build_ui_ww.htm
org.tizen.gettingstarted/html/web/wearable_watch/build_ui_watch_ww.htm
org.tizen.gettingstarted/index.xml
org.tizen.guides/html/index.htm
org.tizen.guides/html/native/account/account_manager_n.htm
org.tizen.guides/html/native/account/oauth2_n.htm
org.tizen.guides/html/native/account/sync_manager_n.htm
org.tizen.guides/html/native/location/geofence_n.htm
org.tizen.guides/html/native/location/maps_n.htm
org.tizen.guides/html/native/multimedia/media_vision_n.htm
org.tizen.guides/html/native/multimedia/metadata_editor_n.htm
org.tizen.guides/html/native/multimedia/metadata_extractor_n.htm
org.tizen.guides/html/native/multimedia/multimedia_guide_n.htm
org.tizen.guides/html/native/multimedia/openal_n.htm
org.tizen.guides/html/native/multimedia/player_n.htm
org.tizen.guides/html/native/multimedia/radio_n.htm
org.tizen.guides/html/native/multimedia/recorder_n.htm
org.tizen.guides/html/native/multimedia/screen_mirroring_n.htm
org.tizen.guides/html/native/multimedia/sound_manager_n.htm
org.tizen.guides/html/native/multimedia/thumbnail_util_n.htm
org.tizen.guides/html/native/multimedia/tone_player_n.htm
org.tizen.guides/html/native/multimedia/video_util_n.htm
org.tizen.guides/html/native/multimedia/wav_player_n.htm
org.tizen.guides/html/native/network/bluetooth_n.htm
org.tizen.guides/html/native/network/connection_n.htm
org.tizen.guides/html/native/network/curl_n.htm
org.tizen.guides/html/native/network/iotcon_n.htm
org.tizen.guides/html/native/network/mtp_n.htm
org.tizen.guides/html/native/network/network_guide_n.htm
org.tizen.guides/html/native/network/nfc_n.htm
org.tizen.guides/html/native/network/nsd_n.htm [new file with mode: 0644]
org.tizen.guides/html/native/network/smartcard_n.htm
org.tizen.guides/html/native/network/vpn_n.htm
org.tizen.guides/html/native/network/wifi_direct_n.htm
org.tizen.guides/html/native/network/wifi_n.htm
org.tizen.guides/html/native/security/key_manager_n.htm
org.tizen.guides/html/native/security/privilege_n.htm
org.tizen.guides/html/native/social/calendar_n.htm
org.tizen.guides/html/native/social/contact_n.htm
org.tizen.guides/html/native/social/service_adaptor_n.htm
org.tizen.guides/html/native/system/device_n.htm
org.tizen.guides/html/native/system/dlog_n.htm
org.tizen.guides/html/native/system/feedback_n.htm
org.tizen.guides/html/native/system/runtime_info_n.htm
org.tizen.guides/html/native/system/sensors_n.htm
org.tizen.guides/html/native/system/settings_n.htm
org.tizen.guides/html/native/system/storage_n.htm
org.tizen.guides/html/native/system/sysinfo_n.htm
org.tizen.guides/html/native/system/t-trace_n.htm
org.tizen.guides/html/native/telephony/phonenumber_util_n.htm
org.tizen.guides/html/native/telephony/telephony_info_n.htm
org.tizen.guides/html/native/ui/eom_n.htm
org.tizen.guides/html/native/ui/minicontrol_n.htm
org.tizen.guides/html/native/uix/ime_n.htm
org.tizen.guides/html/native/uix/stt_n.htm
org.tizen.guides/html/native/uix/tts_n.htm
org.tizen.guides/html/native/uix/voicecontrol_elm_n.htm
org.tizen.guides/html/native/uix/voicecontrol_n.htm
org.tizen.guides/html/native/web/web_guide_n.htm
org.tizen.guides/index.xml
org.tizen.tutorials/html/index.htm
org.tizen.tutorials/html/native/account/account_tutorial_n.htm
org.tizen.tutorials/html/native/account/oauth2_tutorial_n.htm
org.tizen.tutorials/html/native/account/sync_manager_tutorial_n.htm
org.tizen.tutorials/html/native/app_framework/attach_panel_tutorial_n.htm
org.tizen.tutorials/html/native/app_framework/data_control_tutorial_n.htm
org.tizen.tutorials/html/native/app_framework/message_port_tutorial_n.htm
org.tizen.tutorials/html/native/app_framework/notification_tutorial_n.htm
org.tizen.tutorials/html/native/app_framework/shortcut_tutorial_n.htm
org.tizen.tutorials/html/native/graphics/cairo_tutorial_n.htm
org.tizen.tutorials/html/native/location/maps_tutorial_n.htm
org.tizen.tutorials/html/native/messaging/push_tutorial_n.htm
org.tizen.tutorials/html/native/multimedia/media_vision_tutorial_n.htm
org.tizen.tutorials/html/native/multimedia/metadata_editor_tutorial_n.htm
org.tizen.tutorials/html/native/multimedia/metadata_extractor_tutorial_n.htm
org.tizen.tutorials/html/native/multimedia/openal_tutorial_n.htm
org.tizen.tutorials/html/native/multimedia/player_tutorial_n.htm
org.tizen.tutorials/html/native/multimedia/radio_tutorial_n.htm
org.tizen.tutorials/html/native/multimedia/recorder_tutorial_n.htm
org.tizen.tutorials/html/native/multimedia/screen_mirroring_tutorial_n.htm
org.tizen.tutorials/html/native/multimedia/sound_manager_tutorial_n.htm
org.tizen.tutorials/html/native/multimedia/thumbnail_util_tutorial_n.htm
org.tizen.tutorials/html/native/multimedia/tone_player_tutorial_n.htm
org.tizen.tutorials/html/native/multimedia/video_util_tutorial_n.htm
org.tizen.tutorials/html/native/multimedia/wav_player_tutorial_n.htm
org.tizen.tutorials/html/native/network/bluetooth_tutorial_n.htm
org.tizen.tutorials/html/native/network/connection_tutorial_n.htm
org.tizen.tutorials/html/native/network/curl_tutorial_n.htm
org.tizen.tutorials/html/native/network/iotcon_tutorial_n.htm
org.tizen.tutorials/html/native/network/mtp_tutorial_n.htm
org.tizen.tutorials/html/native/network/network_tutorials_n.htm
org.tizen.tutorials/html/native/network/nfc_tutorial_n.htm
org.tizen.tutorials/html/native/network/nsd_tutorial_n.htm [new file with mode: 0644]
org.tizen.tutorials/html/native/network/smartcard_tutorial_n.htm
org.tizen.tutorials/html/native/network/vpn_tutorial_n.htm
org.tizen.tutorials/html/native/network/wifi_direct_tutorial_n.htm
org.tizen.tutorials/html/native/network/wifi_tutorial_n.htm
org.tizen.tutorials/html/native/security/key_tutorial_n.htm
org.tizen.tutorials/html/native/security/privilege_tutorial_n.htm
org.tizen.tutorials/html/native/social/calendar_tutorial_n.htm
org.tizen.tutorials/html/native/social/contact_tutorial_n.htm
org.tizen.tutorials/html/native/social/service_adaptor_tutorial_n.htm
org.tizen.tutorials/html/native/system/device_tutorial_n.htm
org.tizen.tutorials/html/native/system/dlog_tutorial_n.htm
org.tizen.tutorials/html/native/system/feedback_tutorial_n.htm
org.tizen.tutorials/html/native/system/runtime_tutorial_n.htm
org.tizen.tutorials/html/native/system/sensor_tutorial_n.htm
org.tizen.tutorials/html/native/system/storage_tutorial_n.htm
org.tizen.tutorials/html/native/system/sysinfo_tutorial_n.htm
org.tizen.tutorials/html/native/system/system_setting_tutorial_n.htm
org.tizen.tutorials/html/native/system/t-trace_tutorial_n.htm
org.tizen.tutorials/html/native/telephony/phonenumber_util_tutorial_n.htm
org.tizen.tutorials/html/native/telephony/telephony_info_tutorial_n.htm
org.tizen.tutorials/html/native/ui/eom_tutorial_n.htm
org.tizen.tutorials/html/native/ui/minicontrol_tutorial_n.htm
org.tizen.tutorials/html/native/uix/ime_tutorial_n.htm
org.tizen.tutorials/html/native/uix/stt_tutorial_n.htm
org.tizen.tutorials/html/native/uix/tts_tutorial_n.htm
org.tizen.tutorials/html/native/uix/voicecontrol_elm_tutorial_n.htm
org.tizen.tutorials/html/native/uix/voicecontrol_tutorial_n.htm
org.tizen.tutorials/html/native/web/web_tutorials_n.htm
org.tizen.tutorials/index.xml
org.tizen.ui.practices/.project
org.tizen.ui.practices/about.html
org.tizen.ui.practices/html/cover_page.htm
org.tizen.ui.practices/html/images/FAR_SHADOW.png [new file with mode: 0644]
org.tizen.ui.practices/html/images/FAR_SOFT_SHADOW.png [new file with mode: 0644]
org.tizen.ui.practices/html/images/GLOW.png [new file with mode: 0644]
org.tizen.ui.practices/html/images/OUTLINE.png [new file with mode: 0644]
org.tizen.ui.practices/html/images/OUTLINE_SHADOW.png [new file with mode: 0644]
org.tizen.ui.practices/html/images/OUTLINE_SOFT_SHADOW.png [new file with mode: 0644]
org.tizen.ui.practices/html/images/PLAIN.png [new file with mode: 0644]
org.tizen.ui.practices/html/images/SHADOW.png [new file with mode: 0644]
org.tizen.ui.practices/html/images/SOFT_OUTLINE.png [new file with mode: 0644]
org.tizen.ui.practices/html/images/SOFT_SHADOW.png [new file with mode: 0644]
org.tizen.ui.practices/html/images/border.png
org.tizen.ui.practices/html/images/change_text_globally.png
org.tizen.ui.practices/html/images/display_text_classes.png
org.tizen.ui.practices/html/images/edje_hierarchy.png [new file with mode: 0644]
org.tizen.ui.practices/html/images/efllibs.png
org.tizen.ui.practices/html/images/evas_map_effect.png
org.tizen.ui.practices/html/images/evas_map_effect_without.png [new file with mode: 0644]
org.tizen.ui.practices/html/images/events_flow.png
org.tizen.ui.practices/html/images/hwkey_phone_wearable.png [new file with mode: 0644]
org.tizen.ui.practices/html/images/numberonly_variation_decimal.png
org.tizen.ui.practices/html/images/numberonly_variation_signed.png
org.tizen.ui.practices/html/images/numberonly_variation_signed_and_decimal.png
org.tizen.ui.practices/html/images/object_size_16.png
org.tizen.ui.practices/html/images/object_size_22.png
org.tizen.ui.practices/html/images/object_size_44.png
org.tizen.ui.practices/html/images/password_variation_numberonly.png
org.tizen.ui.practices/html/images/pos_map_accelerate.png [new file with mode: 0644]
org.tizen.ui.practices/html/images/pos_map_bounce.png [new file with mode: 0644]
org.tizen.ui.practices/html/images/pos_map_decelerate.png [new file with mode: 0644]
org.tizen.ui.practices/html/images/pos_map_linear.png [new file with mode: 0644]
org.tizen.ui.practices/html/images/pos_map_sinusoidal.png [new file with mode: 0644]
org.tizen.ui.practices/html/images/pos_map_spring.png [new file with mode: 0644]
org.tizen.ui.practices/html/images/scalable_group1.png
org.tizen.ui.practices/html/images/scalable_group2.png
org.tizen.ui.practices/html/images/scale.png
org.tizen.ui.practices/html/images/scale_3_finger_150.png
org.tizen.ui.practices/html/images/scale_3_finger_50.png
org.tizen.ui.practices/html/images/scale_5_finger_50.png
org.tizen.ui.practices/html/images/scale_grid.png
org.tizen.ui.practices/html/images/size_hint_align.png [new file with mode: 0644]
org.tizen.ui.practices/html/images/size_hint_weight.png [new file with mode: 0644]
org.tizen.ui.practices/html/images/text_class_properties.png
org.tizen.ui.practices/html/images/text_class_screens.png [new file with mode: 0644]
org.tizen.ui.practices/html/index.htm
org.tizen.ui.practices/html/native/dali/buttons_n.htm
org.tizen.ui.practices/html/native/dali/constraints_n.htm
org.tizen.ui.practices/html/native/dali/event_handling_n.htm
org.tizen.ui.practices/html/native/dali/imageview_n.htm
org.tizen.ui.practices/html/native/dali/itemview_n.htm
org.tizen.ui.practices/html/native/dali/properties_n.htm
org.tizen.ui.practices/html/native/dali/textfield_n.htm
org.tizen.ui.practices/html/web/tau/circular_ui_ww.htm
org.tizen.ui.practices/html/web/tau/creating_animation_w.htm
org.tizen.ui.practices/html/web/tau/download_tau_w.htm [new file with mode: 0644]
org.tizen.ui.practices/html/web/tau/event_handling_w.htm
org.tizen.ui.practices/html/web/tau/footerbutton_ww.htm
org.tizen.ui.practices/html/web/tau/globalization_w.htm
org.tizen.ui.practices/html/web/tau/guides_tau_w.htm
org.tizen.ui.practices/html/web/tau/header_ww.htm
org.tizen.ui.practices/html/web/tau/helloworld_w.htm
org.tizen.ui.practices/html/web/tau/helper_ww.htm
org.tizen.ui.practices/html/web/tau/managing_page_w.htm
org.tizen.ui.practices/html/web/tau/notepad_w.htm
org.tizen.ui.practices/html/web/tau/tau_porting_w.htm
org.tizen.ui.practices/html/web/tau/thumbnail_ww.htm
org.tizen.ui.practices/index.xml

diff --git a/org.tizen.devtools/html/download/2_4_rev6_release_notes.htm b/org.tizen.devtools/html/download/2_4_rev6_release_notes.htm
new file mode 100644 (file)
index 0000000..a426226
--- /dev/null
@@ -0,0 +1,199 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+    <script type="text/javascript" src="../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+    <title>Tizen 2.4 Rev6 Release Notes</title>
+</head>
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile Web" src="../images/mobile_s_w.png"/> <img alt="Mobile native" src="../images/mobile_s_n.png"/></p>
+    </div>
+    <div id="toc_border"><div id="toc">
+        <p class="toc-title">Content</p>
+        <ul class="toc">
+            <li><a href="#ide_tools">IDE and Tools</a></li>
+                       <li><a href="#platform_240">Tizen 2.4.0 Platform</a></li>
+                       <li><a href="#platform_231">Tizen 2.3.1 Platform</a></li>
+        </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<h1>Tizen 2.4 Rev6 Release Notes</h1>
+
+<ul> 
+   <li>Release Date: May 19, 2016</li>
+  </ul>
+  
+  <h2 id="ide_tools">IDE and Tools</h2>
+
+<h3>Changed Features</h3>
+
+<ul>
+<li>Installer and Update Manager
+       <ul>
+       <li>The notification for the Update Manager, which appears at the bottom right corner of the screen, has been changed to inform you more clearly of the actions (install, update, cancel, or remove).</li>
+       </ul>
+</li>
+<li>CLI/SDB
+       <ul>
+       <li>When you copy a file or directory by using the SDB&#39;s push command, a <strong>WARNING: Your data is to be sent over an unencrypted connection and could be read by others.</strong> security warning message appears to inform you what risk exists in the push command.</li>
+       <li>If you use the SDB&#39;s forward command, the remote port &quot;0&quot; is disabled.</li>
+       </ul>
+</li>
+</ul>
+<h3>Fixed Bugs</h3>
+
+<ul>
+<li>Installer and Update Manager
+       <ul>
+       <li>Since the SDK does not support multi-byte characters, some bugs appeared when you configured an installation directory or folder location in the Installer. This issue has been fixed, and now a function checks the multi-byte characters on the directory and folder path for the Installer.</li>
+       <li>The bug, where the Update Manager sometimes removed meta packages not selected for removal, has been fixed.</li>
+       </ul>
+</li>
+<li>Native UI Builder
+       <ul>
+       <li>The bug that caused abnormal layout rendering on Mac OS&reg; has been fixed.</li>
+       <li>The bug, where you could not control the Toolbar UI component, has been fixed.</li>
+       <li>The bug, where you could not apply the <span style="font-family: Courier New,Courier,monospace">timepicker_layout</span> style of the Datetime UI component, has been fixed.</li>
+       <li>The bug, where you could not set the <span style="font-family: Courier New,Courier,monospace">min</span> and <span style="font-family: Courier New,Courier,monospace">max</span> property of the Spinner UI component, has been fixed.</li>
+       <li>The bug, where you could not use the Genlist UI component, has been fixed.</li>
+       <li>In the <span style="font-family: Courier New,Courier,monospace">layout.xml</span> editor, the bugs of the bidirectional editing at the source and user interface level have been fixed.</li>
+       </ul>
+</li>
+<li>Enventor
+       <ul>
+       <li>Proper calculation of the indent depth has been fixed after adding a multi-line comment.</li>
+       <li>Title icon is supported on Windows&reg;.</li>
+       <li>Compile issue for the empty template code has been fixed. Previously, empty template code was unavailable to build.</li>
+       <li>When adding image template code, the definition part for the defined images has been added to the group template code.</li>
+       <li>Unicode symbols have been fixed to work correctly in redo/undo.</li>
+       <li>Incorrect line increasing has been fixed in the editor when inserting the group template code.</li>
+       </ul>
+</li>
+<li>T-Trace
+       <ul>
+       <li>The issue where T-trace sometimes causes UI hangs-up on Windows&reg; 10 has been fixed. This issue is caused by the background thread which checks the SDB connection periodically, and the logic has been changed to check the SDB connection by on-demand, not periodically.</li>
+       </ul>
+</li>
+</ul>
+<h3>Known Issues</h3>
+
+<ul>
+<li>Web IDE
+       <ul>
+       <li>The <strong>Preview</strong> tab in the Web Page Editor sometimes does not appear properly. Use an alternative feature, named Web SDK HTML Editor, which has enhanced features compared to the Web Page Editor. Instead of the <strong>Preview</strong> tab in the Web Page Editor, use the preview (<strong>Ctrl+4</strong>) feature of the Web SDK HTML Editor.</li>
+       </ul>
+</li>
+<li>Installer and Update Manager
+       <ul>
+       <li>When you run the dynamic analyzer on Mac OS&reg; X, the SDK Update Notification does not appear though there are available SDK updates.</li>
+       <li>If the SDK Update Notification appears when you start the Tizen IDE or Emulator on Mac OS&reg; X, a terminal (<span style="font-family: Courier New,Courier,monospace">shell.exec</span>) icon can appear on the dock for a few seconds.</li>
+       </ul>
+</li>
+<li>Native IDE
+       <ul>
+       <li>When you import some projects generated from Tizen 2.3 Rev2, the importing can take some time.</li>
+       <li>The <strong>Restore Defaults</strong> feature in the native project&#39;s <strong>Properties > C/C++ Build</strong> does not work properly.</li>
+       </ul>
+</li>
+<li>Native UI Builder
+       <ul>
+       <li>When the WYSIWYG editor of the Native UI Builder for Windows&reg; is running, a project deletion does not work properly. To solve the problem, close the editor.</li>
+       <li>If the WYSIWYG editor of the Native UI Builder for Windows&reg; runs over 12 hours, your computer slows down because of the editor&#39;s high memory usage. To solve the problem, restart the Tizen IDE.</li>
+       </ul>
+</li>
+<li>Emulator
+       <ul>
+       <li>Ubuntu sometimes stops responding for a few seconds after closing the Emulator Manager. This issue is related to an IBus (Intelligent Input Bus) bug. When the issue occurs, restart the ibus-daemon by entering the <span style="font-family: Courier New,Courier,monospace">ibus-daemon â€“drx</span> command at the command prompt, and use another framework, such as uim and fcitx, for multilingual input.</li>
+       <li>To use the Tizen Emulator, install an Intel VTx supported by the CPU, and the latest version of the graphic card driver provided by the vendor. Check the prerequisites for the Tizen Emulator from <a href="sdk_prerequisites.htm">Prerequisites for the Tizen SDK</a>.
+               <ul>
+               <li>If the host machine is using Nvidia Optimus&trade; technology on either Ubuntu or Windows&reg;, you must set the Tizen Emulator to run with your Nvidia&reg; graphics card. In case of Ubuntu, check the bumblebee project (<a href="https://wiki.ubuntu.com/Bumblebee" target="_blank">https://wiki.ubuntu.com/Bumblebee</a>). In case of Windows&reg;, select &quot;High Speed NVIDIA Processor&quot; as &quot;Preferred Graphics processor&quot; in the Nvidia&reg; control panel.</li>
+               <li>On Ubuntu, if the graphics driver is out-of-date, your Ubuntu desktop session can be occasionally logged out when launching the Emulator Manager, or the Emulator skin can be drawn improperly. Check the prerequisites and upgrade to the latest graphics driver.</li>
+               </ul>
+       </li>
+       <li>On Ubuntu 14.04, a shortcut menu can  sometimes appear transparent.</li>
+       <li>On Windows&reg;, depending on your OS theme (such as Non-Aero themes and Windows XP themes), a display surface can be erased for a while if the Emulator window is covered with another window. If you click the Emulator window, the display surface runs correctly again.</li>
+       <li>On Windows&reg;, if a &#39;failed to allocate memory&#39; error occurs while executing the Emulator, try the following:
+               <ul>
+               <li>Close some other programs and try to launch the Emulator again.</li>
+               <li>If the RAM size is set to 768 or 1024 MB for the VM in the Emulator Manager, change it to 512 MB.</li>
+               <li>Increase the user area of the virtual memory in the system to 3 GB by entering the <span style="font-family: Courier New,Courier,monospace">bcdedit /set increaseuserva 3072</span> command on the console with administrator rights (Windows&reg; 7 only), and reboot.</li>
+               </ul>
+       </li>
+       <li>If you use a MacBook Pro which has both Intel HD and Nvidia GPUs, when you execute the Emulator with the <strong>OpenGL ES ver. v1.1 &amp; v2.0</strong> option, the Emulator can be unexpectedly terminated. Use the <strong>OpenGL ES ver. v2.0 &amp; v3.0</strong> option.</li>
+       </ul>
+</li>
+<li>SDB
+       <ul>
+       <li>To use the SDB bash completion feature, enter the <span style="font-family: Courier New,Courier,monospace">source .sdb-complete.bash</span> command on the bash shell. The feature runs manually from the official Tizen 2.4 release onwards due to the Installer and Update Manager issue.</li>
+       </ul>
+</li>
+</ul>
+
+<h2 id="platform_240">Tizen 2.4.0 Platform</h2>
+
+<h3>Changed Features</h3>
+
+<ul>
+<li>Security
+       <ul>
+       <li>Permission (privilege) check routine has been improved.</li>
+       <li>Enhanced security feature has been applied: prohibition of Openssl SSL v2 APIs</li>
+       </ul>
+</li>
+</ul>
+<h2 id="platform_231">Tizen 2.3.1 Platform</h2>
+
+<h3>Changed Features</h3>
+
+<ul>
+<li>Security
+       <ul>
+       <li>Permission (privilege) check routine has been improved.</li>
+       <li>Enhanced security feature has been applied: prohibition of Openssl SSL v2 APIs</li>
+       </ul>
+</li>
+</ul>
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+
+</html>
\ No newline at end of file
index 03f4243..09e90ec 100644 (file)
@@ -44,7 +44,7 @@
 </table>
 
 
-<h2 id="sdk_24" name="sdk_24">Tizen 2.4 Rev5 SDK Installer</h2>
+<h2 id="sdk_24" name="sdk_24">Tizen 2.4 Rev6 SDK Installer</h2>
 
 <h3 id="ide" name="ide">IDE: Integrated Development Environment</h3>
 
         </tr>
         <tr>
             <td>Ubuntu 32-bit</td>
-            <td><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev5/tizen-web-ide_TizenSDK_2.4.0_Rev5_ubuntu-32.bin">tizen-web-ide_TizenSDK_2.4.0_Rev5_ubuntu-32.bin</a>
+            <td><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev6/tizen-web-ide_TizenSDK_2.4.0_Rev6_ubuntu-32.bin">tizen-web-ide_TizenSDK_2.4.0_Rev6_ubuntu-32.bin</a>
                 <p>Alternative locations:</p>
-                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev5_usa_ubuntu-32.bin">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev5_brazil_ubuntu-32.bin">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev5_singapore_ubuntu-32.bin">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev5_singapore_ubuntu-32.bin">India</a></p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev6_usa_ubuntu-32.bin">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev6_brazil_ubuntu-32.bin">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev6_singapore_ubuntu-32.bin">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev6_singapore_ubuntu-32.bin">India</a></p>
             </td>
-            <td>423M</td>
-            <td>82225f501e62c894ecafa440d50aa189</td>
-                       <td>Apr 4, 2016</td>
+            <td>419M</td>
+            <td>fa4177c32ba7a4a2da74d608b330e501</td>
+                       <td>May 19, 2016</td>
         </tr>
         <tr>
             <td>Ubuntu 64-bit</td>
-            <td><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev5/tizen-web-ide_TizenSDK_2.4.0_Rev5_ubuntu-64.bin">tizen-web-ide_TizenSDK_2.4.0_Rev5_ubuntu-64.bin</a>
+            <td><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev6/tizen-web-ide_TizenSDK_2.4.0_Rev6_ubuntu-64.bin">tizen-web-ide_TizenSDK_2.4.0_Rev6_ubuntu-64.bin</a>
                 <p>Alternative locations:</p>
-                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev5_usa_ubuntu-64.bin">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev5_brazil_ubuntu-64.bin">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev5_singapore_ubuntu-64.bin">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev5_singapore_ubuntu-64.bin">India</a></p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev6_usa_ubuntu-64.bin">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev6_brazil_ubuntu-64.bin">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev6_singapore_ubuntu-64.bin">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev6_singapore_ubuntu-64.bin">India</a></p>
             </td>
-            <td>423M</td>
-            <td>c9fc0758945cc0ba2997462ca9e36e95</td>
-                       <td>Apr 4, 2016</td>
+            <td>419M</td>
+            <td>c7bcc4bd776db798cad59be17952526d</td>
+                       <td>May 19, 2016</td>
         </tr>
         <tr>
             <td>Windows&reg; 32-bit</td>
-            <td><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev5/tizen-web-ide_TizenSDK_2.4.0_Rev5_windows-32.exe">tizen-web-ide_TizenSDK_2.4.0_Rev5_windows-32.exe</a>
+            <td><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev6/tizen-web-ide_TizenSDK_2.4.0_Rev6_windows-32.exe">tizen-web-ide_TizenSDK_2.4.0_Rev6_windows-32.exe</a>
                 <p>Alternative locations:</p>
-                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev5_usa_windows-32.exe">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev5_brazil_windows-32.exe">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev5_singapore_windows-32.exe">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev5_singapore_windows-32.exe">India</a></p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev6_usa_windows-32.exe">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev6_brazil_windows-32.exe">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev6_singapore_windows-32.exe">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev6_singapore_windows-32.exe">India</a></p>
             </td>
-            <td>439M</td>
-            <td>9b677a6078c142b8ec5dbb5e3a204823</td>
-                       <td>Apr 4, 2016</td>
+            <td>434M</td>
+            <td>bc2a623503278fb235e354b29a9c345c</td>
+                       <td>May 19, 2016</td>
         </tr>
         <tr>
             <td>Windows&reg; 64-bit</td>
-            <td><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev5/tizen-web-ide_TizenSDK_2.4.0_Rev5_windows-64.exe">tizen-web-ide_TizenSDK_2.4.0_Rev5_windows-64.exe</a>
+            <td><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev6/tizen-web-ide_TizenSDK_2.4.0_Rev6_windows-64.exe">tizen-web-ide_TizenSDK_2.4.0_Rev6_windows-64.exe</a>
                 <p>Alternative locations:</p>
-                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev5_usa_windows-64.exe">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev5_brazil_windows-64.exe">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev5_singapore_windows-64.exe">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev5_singapore_windows-64.exe">India</a></p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev6_usa_windows-64.exe">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev6_brazil_windows-64.exe">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev6_singapore_windows-64.exe">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev6_singapore_windows-64.exe">India</a></p>
             </td>
-            <td>438M</td>
-            <td>7ac3e9afc00ce6c5998a96fde2ccfb3f</td>
-                       <td>Apr 4, 2016</td>
+            <td>433M</td>
+            <td>9149141cfd96b1591f227acb05a9109c</td>
+                       <td>May 19, 2016</td>
         </tr>
         <tr>
             <td>Mac OS X&reg; (Intel)</td>
-            <td><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev5/tizen-web-ide_TizenSDK_2.4.0_Rev5_macos-64.dmg">tizen-web-ide_TizenSDK_2.4.0_Rev5_macos-64.dmg</a>
+            <td><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev6/tizen-web-ide_TizenSDK_2.4.0_Rev6_macos-64.dmg">tizen-web-ide_TizenSDK_2.4.0_Rev6_macos-64.dmg</a>
                 <p>Alternative locations:</p>
-                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev5_usa_macos-64.dmg">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev5_brazil_macos-64.dmg">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev5_singapore_macos-64.dmg">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev5_singapore_macos-64.dmg">India</a></p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev6_usa_macos-64.dmg">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev6_brazil_macos-64.dmg">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev6_singapore_macos-64.dmg">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev6_singapore_macos-64.dmg">India</a></p>
             </td>
-            <td>431M</td>
-            <td>1abfe5ff220c22b8d483704cff6b60c5</td>
-                       <td>Apr 4, 2016</td>
+            <td>422M</td>
+            <td>4b1bd99b1094ac496cc7b9d24c18c3ac</td>
+                       <td>May 19, 2016</td>
         </tr>
     </tbody>
 </table>
         </tr>
         <tr>
             <td>Ubuntu 32-bit</td>
-            <td><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev5/tizen-web-cli_TizenSDK_2.4.0_Rev5_ubuntu-32.bin">tizen-web-cli_TizenSDK_2.4.0_Rev5_ubuntu-32.bin</a>
+            <td><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev6/tizen-web-cli_TizenSDK_2.4.0_Rev6_ubuntu-32.bin">tizen-web-cli_TizenSDK_2.4.0_Rev6_ubuntu-32.bin</a>
                 <p>Alternative locations:</p>
-                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev5_usa_ubuntu-32.bin">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev5_brazil_ubuntu-32.bin">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev5_singapore_ubuntu-32.bin">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev5_singapore_ubuntu-32.bin">India</a></p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev6_usa_ubuntu-32.bin">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev6_brazil_ubuntu-32.bin">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev6_singapore_ubuntu-32.bin">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev6_singapore_ubuntu-32.bin">India</a></p>
             </td>
-            <td>112M</td>
-            <td>c53f2a5f73748fa83676342a1560e350</td>
-                       <td>Apr 4, 2016</td>
+            <td>108M</td>
+            <td>cb1fdd6e0efa03e5c0d23550180d5060</td>
+                       <td>May 19, 2016</td>
         </tr>
         <tr>
             <td>Ubuntu 64-bit</td>
-            <td><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev5/tizen-web-cli_TizenSDK_2.4.0_Rev5_ubuntu-64.bin">tizen-web-cli_TizenSDK_2.4.0_Rev5_ubuntu-64.bin</a>
+            <td><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev6/tizen-web-cli_TizenSDK_2.4.0_Rev6_ubuntu-64.bin">tizen-web-cli_TizenSDK_2.4.0_Rev6_ubuntu-64.bin</a>
                 <p>Alternative locations:</p>
-                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev5_usa_ubuntu-64.bin">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev5_brazil_ubuntu-64.bin">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev5_singapore_ubuntu-64.bin">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev5_singapore_ubuntu-64.bin">India</a></p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev6_usa_ubuntu-64.bin">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev6_brazil_ubuntu-64.bin">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev6_singapore_ubuntu-64.bin">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev6_singapore_ubuntu-64.bin">India</a></p>
             </td>
-            <td>113M</td>
-            <td>978fe94ddfa09d1128aaa18ee9369a8f</td>
-                       <td>Apr 4, 2016</td>
+            <td>109M</td>
+            <td>64573e764f5d21e1e1d45fa9187b427b</td>
+                       <td>May 19, 2016</td>
         </tr>
         <tr>
             <td>Windows&reg; 32-bit</td>
-            <td><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev5/tizen-web-cli_TizenSDK_2.4.0_Rev5_windows-32.exe">tizen-web-cli_TizenSDK_2.4.0_Rev5_windows-32.exe</a>
+            <td><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev6/tizen-web-cli_TizenSDK_2.4.0_Rev6_windows-32.exe">tizen-web-cli_TizenSDK_2.4.0_Rev6_windows-32.exe</a>
                 <p>Alternative locations:</p>
-                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev5_usa_windows-32.exe">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev5_brazil_windows-32.exe">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev5_singapore_windows-32.exe">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev5_singapore_windows-32.exe">India</a></p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev6_usa_windows-32.exe">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev6_brazil_windows-32.exe">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev6_singapore_windows-32.exe">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev6_singapore_windows-32.exe">India</a></p>
             </td>
-            <td>116M</td>
-            <td>d8646300e87b85bfb02c91af6d128a7c</td>
-                       <td>Apr 4, 2016</td>
+            <td>112M</td>
+            <td>758a94e096ee625fef039f79b6db2ac4</td>
+                       <td>May 19, 2016</td>
         </tr>
         <tr>
             <td>Windows&reg; 64-bit</td>
-            <td><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev5/tizen-web-cli_TizenSDK_2.4.0_Rev5_windows-64.exe">tizen-web-cli_TizenSDK_2.4.0_Rev5_windows-64.exe</a>
+            <td><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev6/tizen-web-cli_TizenSDK_2.4.0_Rev6_windows-64.exe">tizen-web-cli_TizenSDK_2.4.0_Rev6_windows-64.exe</a>
                 <p>Alternative locations:</p>
-                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev5_usa_windows-64.exe">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev5_brazil_windows-64.exe">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev5_singapore_windows-64.exe">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev5_singapore_windows-64.exe">India</a></p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev6_usa_windows-64.exe">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev6_brazil_windows-64.exe">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev6_singapore_windows-64.exe">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev6_singapore_windows-64.exe">India</a></p>
             </td>
-            <td>117M</td>
-            <td>bcadc03ce3c920cc8d647f979d3326b4</td>
-                       <td>Apr 4, 2016</td>
+            <td>112M</td>
+            <td>342d59781cb5dc824d77742ecdb2988d</td>
+                       <td>May 19, 2016</td>
         </tr>
         <tr>
             <td>Mac OS X&reg; (Intel)</td>
-            <td><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev5/tizen-web-cli_TizenSDK_2.4.0_Rev5_macos-64.bin">tizen-web-cli_TizenSDK_2.4.0_Rev5_macos-64.bin</a>
+            <td><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev6/tizen-web-cli_TizenSDK_2.4.0_Rev6_macos-64.bin">tizen-web-cli_TizenSDK_2.4.0_Rev6_macos-64.bin</a>
                 <p>Alternative locations:</p>
-                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev5_usa_macos-64.bin">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev5_brazil_macos-64.bin">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev5_singapore_macos-64.bin">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev5_singapore_macos-64.bin">India</a></p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev6_usa_macos-64.bin">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev6_brazil_macos-64.bin">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev6_singapore_macos-64.bin">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev6_singapore_macos-64.bin">India</a></p>
             </td>
-            <td>112M</td>
-            <td>525abe0fc818dbdc71701548889eefb7</td>
-                       <td>Apr 4, 2016</td>
+            <td>109M</td>
+            <td>9c14386b97f07de19c266b2540088bc6</td>
+                       <td>May 19, 2016</td>
         </tr>
     </tbody>
 </table>
index 20330bc..9d548d4 100644 (file)
@@ -30,7 +30,7 @@
 <h2 id="notes">Tizen SDK Release Notes</h2>
 
 <ul> 
-   <li><a href="2_4_rev5_release_notes.htm">Tizen 2.4 Rev5 SDK Release Notes</a></li> 
+   <li><a href="2_4_rev6_release_notes.htm">Tizen 2.4 Rev6 SDK Release Notes</a></li> 
 </ul>
 
 <script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
index ffaba79..d17f5f1 100644 (file)
Binary files a/org.tizen.gettingstarted/html/images/build_ui_basic_textbox_mw.png and b/org.tizen.gettingstarted/html/images/build_ui_basic_textbox_mw.png differ
diff --git a/org.tizen.gettingstarted/html/images/camera_state_changes_n.png b/org.tizen.gettingstarted/html/images/camera_state_changes_n.png
new file mode 100644 (file)
index 0000000..d7a10bd
Binary files /dev/null and b/org.tizen.gettingstarted/html/images/camera_state_changes_n.png differ
diff --git a/org.tizen.gettingstarted/html/images/connectivity_download_state.png b/org.tizen.gettingstarted/html/images/connectivity_download_state.png
new file mode 100644 (file)
index 0000000..5c4c62b
Binary files /dev/null and b/org.tizen.gettingstarted/html/images/connectivity_download_state.png differ
diff --git a/org.tizen.gettingstarted/html/images/connectivity_tdls.png b/org.tizen.gettingstarted/html/images/connectivity_tdls.png
new file mode 100644 (file)
index 0000000..231e26f
Binary files /dev/null and b/org.tizen.gettingstarted/html/images/connectivity_tdls.png differ
diff --git a/org.tizen.gettingstarted/html/images/connectivity_wifidirect.png b/org.tizen.gettingstarted/html/images/connectivity_wifidirect.png
new file mode 100644 (file)
index 0000000..67ed59f
Binary files /dev/null and b/org.tizen.gettingstarted/html/images/connectivity_wifidirect.png differ
diff --git a/org.tizen.gettingstarted/html/images/graphics_animation.png b/org.tizen.gettingstarted/html/images/graphics_animation.png
new file mode 100644 (file)
index 0000000..e027647
Binary files /dev/null and b/org.tizen.gettingstarted/html/images/graphics_animation.png differ
diff --git a/org.tizen.gettingstarted/html/images/graphics_pentagon.png b/org.tizen.gettingstarted/html/images/graphics_pentagon.png
new file mode 100644 (file)
index 0000000..d4ac366
Binary files /dev/null and b/org.tizen.gettingstarted/html/images/graphics_pentagon.png differ
diff --git a/org.tizen.gettingstarted/html/images/graphics_project.png b/org.tizen.gettingstarted/html/images/graphics_project.png
new file mode 100644 (file)
index 0000000..22d6f48
Binary files /dev/null and b/org.tizen.gettingstarted/html/images/graphics_project.png differ
diff --git a/org.tizen.gettingstarted/html/images/graphics_project_create.png b/org.tizen.gettingstarted/html/images/graphics_project_create.png
new file mode 100644 (file)
index 0000000..3b7b5c5
Binary files /dev/null and b/org.tizen.gettingstarted/html/images/graphics_project_create.png differ
diff --git a/org.tizen.gettingstarted/html/images/graphics_squares.png b/org.tizen.gettingstarted/html/images/graphics_squares.png
new file mode 100644 (file)
index 0000000..76bdbdf
Binary files /dev/null and b/org.tizen.gettingstarted/html/images/graphics_squares.png differ
diff --git a/org.tizen.gettingstarted/html/images/graphics_triangle.png b/org.tizen.gettingstarted/html/images/graphics_triangle.png
new file mode 100644 (file)
index 0000000..e816cee
Binary files /dev/null and b/org.tizen.gettingstarted/html/images/graphics_triangle.png differ
diff --git a/org.tizen.gettingstarted/html/images/player_state_changes_n.png b/org.tizen.gettingstarted/html/images/player_state_changes_n.png
new file mode 100644 (file)
index 0000000..04e5159
Binary files /dev/null and b/org.tizen.gettingstarted/html/images/player_state_changes_n.png differ
diff --git a/org.tizen.gettingstarted/html/images/recorder_state_changes_n.png b/org.tizen.gettingstarted/html/images/recorder_state_changes_n.png
new file mode 100644 (file)
index 0000000..cf7bf50
Binary files /dev/null and b/org.tizen.gettingstarted/html/images/recorder_state_changes_n.png differ
index 0eace64..eb9abdd 100644 (file)
Binary files a/org.tizen.gettingstarted/html/images/simple_ui_tau_create_mw.png and b/org.tizen.gettingstarted/html/images/simple_ui_tau_create_mw.png differ
index e461cd4..04ea299 100644 (file)
Binary files a/org.tizen.gettingstarted/html/images/simple_ui_tau_create_ww.png and b/org.tizen.gettingstarted/html/images/simple_ui_tau_create_ww.png differ
index e5cbca3..41b6a4a 100644 (file)
Binary files a/org.tizen.gettingstarted/html/images/simple_ui_update_mgr_ww.png and b/org.tizen.gettingstarted/html/images/simple_ui_update_mgr_ww.png differ
index 4fe5628..e561a14 100644 (file)
@@ -69,8 +69,8 @@
                </ul>
                </li>
                <li><a href="native/app_model/application_model_n.htm">Tizen Application Model</a></li>
-               <li><a href="native/ui/ui_builder_overview_mn.htm">Overview of Tizen UI Development</a></li>
-               <li><a href="native/ui/ui_builder_app_design_mn.htm">Designing Your Native Application</a></li>         
+               <li><a href="native/feature/ui_builder_overview_mn.htm">Overview of Tizen UI Development</a></li>
+               <li><a href="native/feature/ui_builder_app_design_mn.htm">Designing Your Native Application</a></li>            
                <li><a href="native/details/details_n.htm">Understanding Tizen Programming</a>
                <ul>
                        <li><a href="native/details/app_filtering_n.htm">Application Filtering</a></li>
                        <li><a href="native/details/tizen_apis_n.htm">Tizen APIs</a></li>                       
                </ul>
                </li>
+               <li><a href="native/feature/app_connectivity_n.htm">Creating Applications with Connectivity and Network</a>
+                       <ul>
+                               <li><a href="native/feature/app_connectivity_operation_n.htm">Network Operations</a></li>
+                               <li><a href="native/feature/app_connectivity_usage_n.htm">Network Usage</a></li>
+                               <li><a href="native/feature/app_connectivity_p2p_n.htm">P2P Connections with Wi-Fi Direct&trade;</a></li>
+                       </ul>
+               </li>
+               <li><a href="native/feature/app_graphics_n.htm">Creating Applications with Graphics and Animation</a>
+                       <ul>
+                               <li><a href="native/feature/app_graphics_square_n.htm">Squares on the Canvas</a></li>
+                               <li><a href="native/feature/app_graphics_polygon_n.htm">Polygons on the Canvas</a></li>
+                               <li><a href="native/feature/app_graphics_animation_n.htm">Animations</a></li>
+                       </ul>
+               </li>
+               <li><a href="native/feature/app_multimedia_n.htm">Creating Applications with Multimedia</a>
+                       <ul>
+                               <li><a href="native/feature/app_multimedia_audio_n.htm">Audio Playback and Recording</a></li>
+                               <li><a href="native/feature/app_multimedia_video_n.htm">Video Playback and Recording</a></li>
+                               <li><a href="native/feature/app_multimedia_camera_n.htm">Image Capturing with the Camera</a></li>
+                       </ul>
+               </li>
        </ul>
        
        <h2><a href="web/cover_page_w.htm">Web Application</a></h2>
index 3b428cc..8e2da6e 100644 (file)
 <li><a href="app_model/application_model_n.htm">Tizen Application Model</a>
 <p>Provides an introduction to the Tizen application life-cycle and package contents.</p></li>
 
-<li><a href="ui/ui_builder_overview_mn.htm">Overview of Tizen UI Development</a>
+<li><a href="feature/ui_builder_overview_mn.htm">Overview of Tizen UI Development</a>
 <p>Describes the basic characteristics and components of UI development with EFL.</p></li>
 
-<li><a href="ui/ui_builder_app_design_mn.htm">Designing Your Native Application</a>
+<li><a href="feature/ui_builder_app_design_mn.htm">Designing Your Native Application</a>
 <p>Teaches you how to develop a native application using the native UI Builder tool.</p></li>  
 
 <li><a href="details/details_n.htm">Understanding Tizen Programming</a>
 <p>Introduces the Tizen platform, its architecture, and some useful programming concepts you need to take into account when designing Tizen applications.</p>
 </li>
 
+<li><a href="feature/app_connectivity_n.htm">Creating Applications with Connectivity and Network</a>
+<p>Demonstrates how you can create applications with connectivity to access various networks to use data services, or connect to other devices.</p>
+</li>
+
+<li><a href="feature/app_graphics_n.htm">Creating Applications with Graphics and Animation</a>
+<p>Demonstrates how you can create applications with graphics and animation to draw various shapes, such as squares and polygons, on the screen and animate screen elements to change their size, position, and color.</p>
+</li>
+
+<li><a href="feature/app_multimedia_n.htm">Creating Applications with Multimedia</a>
+<p>Demonstrates how you can create applications with multimedia to play and record audio and video, and use the device camera to take photos.</p>
+</li>
+
 </ul>
 
 <script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
index 61d28b0..f887cdc 100644 (file)
         </tr>
                
         <tr>
-         <td rowspan="10"><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__FRAMEWORK.html">Network</a></td>
-                <td rowspan="10">The Network API module contains submodule APIs, which can be used for  data communication. It is responsible for managing connections, maintaining IP addresses, and connecting to the system through Bluetooth, Hypertext Transfer Protocol (HTTP), Near Field Communication (NFC), Sockets, and Wi-Fi. It also provides functions for retrieving information about a specific host from the Internet Domain Name System (DNS).
+         <td rowspan="12"><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__FRAMEWORK.html">Network</a></td>
+                <td rowspan="12">The Network API module contains submodule APIs, which can be used for  data communication. It is responsible for managing connections, maintaining IP addresses, and connecting to the system through Bluetooth, Hypertext Transfer Protocol (HTTP), Near Field Communication (NFC), Sockets, and Wi-Fi. It also provides functions for retrieving information about a specific host from the Internet Domain Name System (DNS).
                 <p>Documentation:</p>
                        <ul>
                        <li>Guides: <a href="../../../../org.tizen.guides/html/native/network/network_guide_n.htm">Network</a></li>
          <td>Provides a client-side URL data transfer library supporting HTTP, HTTPS, FTP, and file URIs, among many other protocols. Allows applications to perform URL-related activities without a Web browser.</td>
         </tr> 
                <tr>
+         <td><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__DNSSD__MODULE.html">DNSSD</a><p><strong>(since 3.0)</strong></p></td>
+         <td>Provides functions for network service discovery using DNSSD.</td>
+        </tr>          
+               <tr>
                        <td><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__IOT__CONNECTIVITY__MODULE.html">Iotcon</a><p><strong>(since 3.0)</strong></p></td>
                        <td>Provides functions for IoT connectivity.</td>
                </tr>
          <td><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__NFC__MODULE.html">NFC</a></td>
          <td>Allows management, such as registering and deregistering event listeners, of short-range wireless near field communication (NFC). This submodule API must also be used to read, write, receive, and send NFC messages.</td>
         </tr>
+               <tr>
+               <td><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__SMARTCARD__MODULE.html">Smartcard</a>
+               <p><strong>(since 2.3.1)</strong></p></td>
+               <td>Provides application communication to the SE applet functions.</td>
+               </tr>           
+               <tr>
+         <td><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__SSDP__MODULE.html">SSDP</a><p><strong>(since 3.0)</strong></p></td>
+         <td>Provides functions for network service discovery using SSDP.</td>
+        </tr>          
                <tr>    
                        <td><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__VPN__SERVICE__MODULE.html">VPN Service</a><p><strong>(since 3.0)</strong></p></td>
                        <td>Manages Virtual Private Network (VPN) connections between 2 VPN devices.</td>
                <tr>
          <td><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__WIFI__DIRECT__MODULE.html">Wi-Fi Direct</a></td>
          <td>Manages the settings of Wi-Fi Direct&trade;. This submodule API also provides functions to connect and disconnect remote devices that use Wi-Fi Direct&trade;.</td>
-        </tr>  
-               <tr>
-               <td><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__SMARTCARD__MODULE.html">Smartcard</a>
-               <p><strong>(since 2.3.1)</strong></p></td>
-               <td>Provides application communication to the SE applet functions.</td>
-               </tr>         
+        </tr> 
         <tr>
          <td rowspan="3"><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SECURITY__FRAMEWORK.html">Security</a></td>
                 <td rowspan="3">The Security API module contains submodule APIs which provide basic cryptographic functions, various utility functions through the OpenSSL open source library, and a secure password-protected repository for keys, certificates, and sensitive data.
         </tr>
                
         <tr>
-         <td rowspan="8"><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__FRAMEWORK.html">Network</a></td>
-                <td rowspan="8">The Network API module contains submodule APIs, which can be used for  data communication. It is responsible for managing connections, maintaining IP addresses, and connecting to the system through Bluetooth, Hypertext Transfer Protocol (HTTP), Near Field Communication (NFC), Sockets, and Wi-Fi. It also provides functions for retrieving information about a specific host from the Internet Domain Name System (DNS).
+         <td rowspan="10"><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__FRAMEWORK.html">Network</a></td>
+                <td rowspan="10">The Network API module contains submodule APIs, which can be used for  data communication. It is responsible for managing connections, maintaining IP addresses, and connecting to the system through Bluetooth, Hypertext Transfer Protocol (HTTP), Near Field Communication (NFC), Sockets, and Wi-Fi. It also provides functions for retrieving information about a specific host from the Internet Domain Name System (DNS).
                 <p>Documentation:</p>
                        <ul>
                        <li>Guides: <a href="../../../../org.tizen.guides/html/native/network/network_guide_n.htm">Network</a></li>
          <td><a href="../../../../org.tizen.native.wearable.apireference/group__OPENSRC__CURL__FRAMEWORK.html">Curl</a></td>
          <td>Provides a client-side URL data transfer library supporting HTTP, HTTPS, FTP, and file URIs, among many other protocols. Allows applications to perform URL-related activities without a Web browser.</td>
         </tr> 
+                               <tr>
+         <td><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__DNSSD__MODULE.html">DNSSD</a><p><strong>(since 3.0)</strong></p></td>
+         <td>Provides functions for network service discovery using DNSSD.</td>
+        </tr>
                <tr>
                        <td><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__IOT__CONNECTIVITY__MODULE.html">Iotcon</a><p><strong>(since 3.0)</strong></p></td>
                        <td>Provides functions for IoT connectivity.</td>
                <tr>
          <td><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__NFC__MODULE.html">NFC</a></td>
          <td>Allows management, such as registering and deregistering event listeners, of short-range wireless near field communication (NFC). This submodule API must also be used to read, write, receive, and send NFC messages.</td>
-        </tr> 
-         <tr>
-         <td><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__WIFI__MODULE.html">Wi-Fi</a></td>
-         <td>Manages Wi-Fi connections and monitors the state of Wi-Fi connections.</td>
-        </tr> 
+        </tr>
                <tr>
-               <td><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__SMARTCARD__MODULE.html">Smartcard</a></td>
+               <td><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__SMARTCARD__MODULE.html">Smartcard</a>
+               <p><strong>(since 2.3.1)</strong></p></td>
                <td>Provides application communication to the SE applet functions.</td>
                </tr>           
+               <tr>
+         <td><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__SSDP__MODULE.html">SSDP</a><p><strong>(since 3.0)</strong></p></td>
+         <td>Provides functions for network service discovery using SSDP.</td>
+        </tr>          
+         <tr>
+         <td><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__WIFI__MODULE.html">Wi-Fi</a></td>
+         <td>Manages Wi-Fi connections and monitors the state of Wi-Fi connections.</td>
+        </tr>          
         <tr>
          <td rowspan="3"><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SECURITY__FRAMEWORK.html">Security</a></td>
                 <td rowspan="3">The Security API module contains submodule APIs which provide basic cryptographic functions, various utility functions through the OpenSSL open source library, and a secure password-protected repository for keys, certificates, and sensitive data.
diff --git a/org.tizen.gettingstarted/html/native/feature/app_connectivity_n.htm b/org.tizen.gettingstarted/html/native/feature/app_connectivity_n.htm
new file mode 100644 (file)
index 0000000..8a92041
--- /dev/null
@@ -0,0 +1,87 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+       <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+       <meta http-equiv="X-UA-Compatible" content="IE=9" />
+       <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
+       <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
+       <script type="text/javascript" src="../../scripts/snippet.js"></script> 
+       <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
+
+       <title>Creating Applications with Connectivity and Network</title>  
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+       <div id="profile">
+               <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/> <img alt="Wearable native" src="../../images/wearable_s_n.png"/></p>
+       </div>
+       <div id="toc_border"><div id="toc">
+        <p class="toc-title">Related Info</p>
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.guides/html/native/network/network_guide_n.htm">Network Guides</a></li>
+                       <li><a href="../../../../org.tizen.tutorials/html/native/network/network_tutorials_n.htm">Network Tutorials</a></li>
+                       <li><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__FRAMEWORK.html">Network API for Mobile Native</a></li>
+                       <li><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__FRAMEWORK.html">Network API for Wearable Native</a></li>
+        </ul>          
+       </div></div>
+</div>         
+<div id="container"><div id="contents"><div class="content">   
+<h1>Creating Applications with Connectivity and Network</h1>
+
+<p>If you want to create applications that offer connectivity and network features to the user, Tizen provides various options for you.</p>
+
+<p>Connectivity in the application allows the user to access various networks to use data services, or connect to other devices. Optimal use of the connectivity features allows your application to manage data connections and ensure cost-efficient control over the usage of network resources.</p>
+
+<p>When creating a connectivity application, you can implement the following features:</p>
+
+<ul>
+<li><a href="app_connectivity_operation_n.htm">Network operations</a>
+<ul><li>To handle network operations, you must know which networks are currently available and in use. You can access the network connection state through a connection handle.</li>
+<li>You can download HTTP content from the Internet through a network connection. You can use an open source <a href="http://curl.haxx.se/libcurl/" target="_blank">libcurl</a> library, or a Tizen <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__WEB__DOWNLOAD__MODULE.html">Download</a> API for the download tasks.</li>
+<li>When you use the data services of various networks, the responses are often composed in the XML or JSON format. To handle the data in the responses, you need to parse XML and JSON.</li>
+</ul>
+</li>
+<li><a href="app_connectivity_usage_n.htm">Network usage</a>
+<ul>
+<li>When the connection changes from one network to another or the mobile network service details change, the application must receive a notification and take actions to ensure that only tasks appropriate for a specific network or service state are processed. For example, you do not want to perform expensive download operations if the mobile home network changes to another network (roaming).</li>
+<li>You can access information about the state of the specific network connection, for example, whether the Wi-Fi connection is active or inactive.</li>
+<li>You can retrieve statistical information about the network usage, such as the amount of sent or received data.</li>
+</ul>
+</li>
+<li><a href="app_connectivity_p2p_n.htm">P2P connections with Wi-Fi Direct&trade;</a>
+<ul>
+<li>You can find nearby Wi-Fi Direct&trade; devices and form a Wi-Fi Direct&trade; group to communicate with them.</li>
+<li>Tizen also supports TDLS, which operates in the background of a Wi-Fi network to optimize performance.</li>
+</ul>
+</li>
+</ul>
+
+<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+</html>
+
diff --git a/org.tizen.gettingstarted/html/native/feature/app_connectivity_operation_n.htm b/org.tizen.gettingstarted/html/native/feature/app_connectivity_operation_n.htm
new file mode 100644 (file)
index 0000000..1e626db
--- /dev/null
@@ -0,0 +1,709 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+       <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+       <meta http-equiv="X-UA-Compatible" content="IE=9" />
+       <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
+       <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
+       <script type="text/javascript" src="../../scripts/snippet.js"></script> 
+       <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
+
+       <title>Network Operations</title>  
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+       <div id="profile">
+               <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/> <img alt="Wearable native" src="../../images/wearable_s_n.png"/></p>
+       </div>
+       <div id="toc_border"><div id="toc">
+               <p class="toc-title">Content</p>
+               <ul class="toc">
+                       <li><a href="#connection">Connecting to the Network</a></li>
+                       <li><a href="#download">Downloading HTTP Content</a></li>
+                       <li><a href="#parse">Parsing XML and JSON</a></li>
+               </ul>
+        <p class="toc-title">Related Info</p>
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.guides/html/native/network/network_guide_n.htm">Network Guides</a></li>
+                       <li><a href="../../../../org.tizen.tutorials/html/native/network/network_tutorials_n.htm">Network Tutorials</a></li>
+                       <li><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__FRAMEWORK.html">Network API for Mobile Native</a></li>
+                       <li><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__FRAMEWORK.html">Network API for Wearable Native</a></li>
+        </ul>          
+       </div></div>
+</div>         
+<div id="container"><div id="contents"><div class="content">   
+<h1>Network Operations</h1>
+
+<p>The basic tasks involved in network operations are connecting to the network, downloading HTTP content, and parsing data in the XML and JSON format. The following sections provide you with the fundamental building blocks for creating Tizen applications that download content and parse data efficiently.</p>
+
+<h2 id="connection">Connecting to the Network</h2>
+
+<p>You can write applications that create a network connection and check the connection status over that connection. The connected application can access connection details, such as the IP address, proxy information, gateway information, and connection statistics.</p>
+
+<h3>Required Privileges and Features</h3>
+
+<p>Applications that use the Network (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__FRAMEWORK.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__FRAMEWORK.html">wearable</a> applications) and Telephony (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__TELEPHONY__FRAMEWORK.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__TELEPHONY__FRAMEWORK.html">wearable</a> applications) APIs must declare the required privileges in the <span style="font-family: Courier New,Courier,monospace">tizen-manifest.xml</span> file. For more information on the Tizen privileges, see <a href="../details/sec_privileges_n.htm">Security and API Privileges</a>.</p>
+
+<p>To perform the network operations, the application manifest must include the following privileges:</p>
+
+<pre class="prettyprint">
+&lt;privileges&gt;
+&nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/network.get&lt;/privilege&gt;
+&lt;/privileges&gt;
+</pre>
+
+<p>To perform the network operations, the device must support the following <a href="../details/app_filtering_n.htm">features</a>:</p>
+<ul>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/network.wifi</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/network.telephony</span></li>
+</ul>
+
+<h3>Network Selection</h3>
+
+<p>The supported network connections differ based on the device. When Wi-Fi on your device is available, the device tries to first use the Wi-Fi network to connect to the Internet, and only selects the mobile (cellular) network if the Wi-Fi network is not available. If the device does not support Wi-Fi, you must check whether it supports the mobile network and whether mobile data is switched on.</p>
+
+<h3>Checking the Network Connection</h3>
+
+<p>The Connection Manager API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__CONNECTION__MANAGER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__CONNECTION__MANAGER__MODULE.html">wearable</a> applications) provides functions for managing data connections. It allows you to get a state of the connection interface, such as Bluetooth, mobile network, and Wi-Fi. It also contains functions for getting the IP address, proxy information, and gateway information.</p>
+
+<p>Before your application attempts to connect to a network, it must check whether a network connection is available, by using the <span style="font-family: Courier New,Courier,monospace">connection_get_type()</span> function. This is necessary, because the device can be out of range of a network, or the user may have disabled both Wi-Fi and mobile data access.</p>
+
+<p>The following example demonstrates how to create a connection handle and check the currently used connection type with the Connection API:</p>
+
+<pre class="prettyprint">
+#include &lt;tizen.h&gt;
+#include &lt;service_app.h&gt;
+#include &quot;service.h&quot; /* Auto-generated header file by the Tizen IDE */
+#include &lt;net_connection.h&gt;
+
+static connection_h connection;
+
+bool
+service_app_create(void *data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;int error_code;
+
+&nbsp;&nbsp;&nbsp;&nbsp;/* Create a connection handle */
+&nbsp;&nbsp;&nbsp;&nbsp;error_code = connection_create(&amp;connection);
+&nbsp;&nbsp;&nbsp;&nbsp;if (error_code != CONNECTION_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
+
+&nbsp;&nbsp;&nbsp;&nbsp;/*
+&nbsp;&nbsp;&nbsp;&nbsp;   Get the type of the current profile for data connection
+&nbsp;&nbsp;&nbsp;&nbsp;   net_state is the network type defined in the connection_type_e enumerator
+&nbsp;&nbsp;&nbsp;&nbsp;*/
+&nbsp;&nbsp;&nbsp;&nbsp;connection_type_e net_state;
+&nbsp;&nbsp;&nbsp;&nbsp;error_code = <span class="highlight">connection_get_type(connection, &amp;net_state);</span>
+&nbsp;&nbsp;&nbsp;&nbsp;if (error_code == CONNECTION_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;Network connection type : %d&quot;, net_state);
+&nbsp;&nbsp;&nbsp;&nbsp;}
+
+&nbsp;&nbsp;&nbsp;&nbsp;return true;
+}
+
+void
+service_app_terminate(void *data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;/* Destroy the created connection handle */
+&nbsp;&nbsp;&nbsp;&nbsp;error_code = connection_destroy(connection);
+
+&nbsp;&nbsp;&nbsp;&nbsp;return;
+}
+
+/* Assume that auto-generated functions from the Tizen IDE are here */
+
+int
+main(int argc, char* argv[])
+{
+&nbsp;&nbsp;&nbsp;&nbsp;char ad[50] = {0,};
+&nbsp;&nbsp;&nbsp;&nbsp;service_app_lifecycle_callback_s event_callback;
+&nbsp;&nbsp;&nbsp;&nbsp;app_event_handler_h handlers[5] = {NULL,};
+
+&nbsp;&nbsp;&nbsp;&nbsp;event_callback.create = service_app_create;
+&nbsp;&nbsp;&nbsp;&nbsp;event_callback.terminate = service_app_terminate;
+&nbsp;&nbsp;&nbsp;&nbsp;event_callback.app_control = service_app_control;
+
+&nbsp;&nbsp;&nbsp;&nbsp;service_app_add_event_handler(&amp;handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;service_app_low_battery, &amp;ad);
+&nbsp;&nbsp;&nbsp;&nbsp;service_app_add_event_handler(&amp;handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;service_app_low_memory, &amp;ad);
+&nbsp;&nbsp;&nbsp;&nbsp;service_app_add_event_handler(&amp;handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;service_app_lang_changed, &amp;ad);
+&nbsp;&nbsp;&nbsp;&nbsp;service_app_add_event_handler(&amp;handlers[APP_EVENT_REGION_FORMAT_CHANGED], APP_EVENT_REGION_FORMAT_CHANGED,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;service_app_region_changed, &amp;ad);
+
+&nbsp;&nbsp;&nbsp;&nbsp;return service_app_main(argc, argv, &amp;event_callback, ad);
+}
+</pre>
+
+<h2 id="download">Downloading HTTP Content</h2>
+
+<p>After a network connection is established, the application can download HTTP content from the Internet. There are 2 ways to download HTTP content:</p>
+
+<ul>
+<li>With <a href="http://curl.haxx.se/libcurl/" target="_blank">libcurl</a>, which is an open source library.</li>
+<li>With the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__WEB__DOWNLOAD__MODULE.html">Download</a> API, which is one of the Tizen Framework APIs.</li>
+</ul>
+
+<h3>Required Privileges</h3>
+
+<p>To download HTTP content, the application must declare the required privileges in the <span style="font-family: Courier New,Courier,monospace">tizen-manifest.xml</span> file. The files that the application downloads from the Internet are stored in the storage of a device. The privileges are required to access the resources for downloading content and to save them to the media storage. For more information on the Tizen privileges, see <a href="../details/sec_privileges_n.htm">Security and API Privileges</a>.</p>
+
+<p>To perform the HTTP download operations, the application manifest must include the following privileges:</p>
+
+<pre class="prettyprint">
+&lt;privileges&gt;
+&nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/download&lt;/privilege&gt;
+&nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/mediastorage&lt;/privilege&gt;
+&lt;/privileges&gt;
+</pre>
+
+<h3>Downloading HTTP Content with libcurl</h3>
+
+<p>The Curl API (in <a href="../../../../org.tizen.native.mobile.apireference/group__OPENSRC__CURL__FRAMEWORK.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__OPENSRC__CURL__FRAMEWORK.html">wearable</a> applications) is a client-side URL transfer library supporting various protocols, such as HTTP, HTTPS, FTP, and file URIs. It allows applications to perform URL-related activities without having to involve a Web browser.</p>
+
+<p>The following example demonstrates how to perform an HTTP download with libcurl:</p>
+
+<pre class="prettyprint">
+#include &lt;tizen.h&gt;
+#include &lt;service_app.h&gt;
+#include &quot;service.h&quot; /* Auto-generated header file by the Tizen IDE */
+#include &lt;curl/curl.h&gt;
+
+/*
+   start_downloading() function utilizes the ecore_thread_feedback_run() function
+   to allow the download_thread_run_cb() function to call the download_feedback_cb function
+*/
+static void
+start_downloading(void *data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;appdata_s *ad = data;
+&nbsp;&nbsp;&nbsp;&nbsp;Ecore_Thread *thread;
+
+&nbsp;&nbsp;&nbsp;&nbsp;/* Create a thread that communicates with the main thread */
+&nbsp;&nbsp;&nbsp;&nbsp;thread = <span class="highlight">ecore_thread_feedback_run(download_thread_run_cb</span>, download_feedback_cb,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;download_thread_end_cb, download_thread_cancel_cb,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ad, EINA_FALSE);
+}
+
+bool
+service_app_create(void *data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;start_downloading(data);
+
+&nbsp;&nbsp;&nbsp;&nbsp;return true;
+}
+
+/* Assume that auto-generated functions from the Tizen IDE are here */
+
+int
+main(int argc, char* argv[])
+{
+&nbsp;&nbsp;&nbsp;&nbsp;char ad[50] = {0,};
+&nbsp;&nbsp;&nbsp;&nbsp;service_app_lifecycle_callback_s event_callback;
+&nbsp;&nbsp;&nbsp;&nbsp;app_event_handler_h handlers[5] = {NULL,};
+
+&nbsp;&nbsp;&nbsp;&nbsp;event_callback.create = service_app_create;
+&nbsp;&nbsp;&nbsp;&nbsp;event_callback.terminate = service_app_terminate;
+&nbsp;&nbsp;&nbsp;&nbsp;event_callback.app_control = service_app_control;
+
+&nbsp;&nbsp;&nbsp;&nbsp;service_app_add_event_handler(&amp;handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;service_app_low_battery, &amp;ad);
+&nbsp;&nbsp;&nbsp;&nbsp;service_app_add_event_handler(&amp;handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;service_app_low_memory, &amp;ad);
+&nbsp;&nbsp;&nbsp;&nbsp;service_app_add_event_handler(&amp;handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;service_app_lang_changed, &amp;ad);
+&nbsp;&nbsp;&nbsp;&nbsp;service_app_add_event_handler(&amp;handlers[APP_EVENT_REGION_FORMAT_CHANGED], APP_EVENT_REGION_FORMAT_CHANGED,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;service_app_region_changed, &amp;ad);
+
+&nbsp;&nbsp;&nbsp;&nbsp;return service_app_main(argc, argv, &amp;event_callback, ad);
+}</pre>
+
+<p>The <span style="font-family: Courier New,Courier,monospace">ecore_thread_feedback()</span> function allows the <span style="font-family: Courier New,Courier,monospace">download_thread_run_cb()</span> callback to call the <span style="font-family: Courier New,Courier,monospace">download_feedback_cb()</span> callback:</p>
+
+<pre class="prettyprint">
+static void
+download_thread_run_cb(void *data, Ecore_Thread *thread)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;download_contents(data);
+
+&nbsp;&nbsp;&nbsp;&nbsp;/* ecore_thread_feedback() invokes download_feedback_cb() registered by ecore_thread_feedback_run () */
+&nbsp;&nbsp;&nbsp;&nbsp;<span class="highlight">ecore_thread_feedback(thread, data);</span>
+}
+
+static void
+download_contents(void *data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;if (data == NULL) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;data is NULL&quot;);
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
+&nbsp;&nbsp;&nbsp;&nbsp;}
+
+&nbsp;&nbsp;&nbsp;&nbsp;appdata_s *ad = data;
+&nbsp;&nbsp;&nbsp;&nbsp;CURL *curl;
+
+&nbsp;&nbsp;&nbsp;&nbsp;const char error_message[BUFFER_SIZE];
+
+&nbsp;&nbsp;&nbsp;&nbsp;/* Initialize the curl session */
+&nbsp;&nbsp;&nbsp;&nbsp;curl = curl_easy_init();
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;curl_easy_init()&quot;);
+
+&nbsp;&nbsp;&nbsp;&nbsp;/* Download the header */
+&nbsp;&nbsp;&nbsp;&nbsp;if (curl) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Set URL to get */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CURLcode error_code = curl_easy_setopt(curl, CURLOPT_URL, &quot;http://developer.tizen.org&quot;);
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Verify the SSL certificate */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYPEER, 0L);
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Verify the host name in the SSL certificate */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYHOST, 0L);
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Follow HTTP 3xx redirects */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_easy_setopt(curl_handle, CURLOPT_FOLLOWLOCATION, 1L);
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Callback for writing data */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCb);
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Data pointer to pass to the write callback */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)&amp;chunk);
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* User-Agent: header */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, &quot;TizenMaps/1.0&quot;);
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Provide a buffer for storing errors */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_easy_setopt(curl_handle, CURLOPT_ERRORBUFFER, errbuf);
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Timeout for the entire request */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_easy_setopt(curl_handle, CURLOPT_TIMEOUT, TIZEN_CFG_CURL_TIMEOUT);
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Callback to progress meter function */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_easy_setopt(curl_handle, CURLOPT_XFERINFOFUNCTION, XferInfoCb);
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Switch off the progress meter */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_easy_setopt(curl_handle, CURLOPT_NOPROGRESS, 0L);
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Perform a blocking file transfer */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error_code = curl_easy_perform(curl);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;curl_easy_perform(curl): %s (%d)&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_easy_strerror(error_code), error_code);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (error_code == CURLE_ABORTED_BY_CALLBACK)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Clean up and display cancel message */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (error_code != CURLE_OK)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Display failure message */
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_easy_cleanup(curl);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;curl_easy_cleanup(ad-&gt;curl)&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;} else {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Display failure message */
+&nbsp;&nbsp;&nbsp;&nbsp;}
+}
+
+/*
+   This function is called in the main thread whenever ecore_thread_feedback()
+   is called in the download thread
+*/
+static void
+download_feedback_cb(void *data, Ecore_Thread *thread, void *msg_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;/* TODO: Something that you want here */
+&nbsp;&nbsp;&nbsp;&nbsp;if (msg_data == NULL) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;msg_data is NULL&quot;);
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
+&nbsp;&nbsp;&nbsp;&nbsp;}
+}
+
+static void
+download_thread_end_cb(void *data, Ecore_Thread *thread)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;thread end!&quot;);
+}
+
+static void
+download_thread_cancel_cb(void *data, Ecore_Thread *thread)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;thread cancel!&quot;);
+}
+</pre>
+
+<h3>Downloading HTTP Content with the Download API</h3>
+
+<p>You can download content asynchronously from a given URL into the device storage. The <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__WEB__DOWNLOAD__MODULE.html">Download</a> API provides functions to create and manage one or more download requests.</p>
+
+<p>This feature is supported in mobile applications only.</p>
+
+<p>The following figure illustrates the download states:</p>
+
+<p class="figure">Figure: Download states</p> 
+<p align="center"><img alt="Download states" src="../../images/connectivity_download_state.png" /></p> 
+
+<p>The <strong>Start</strong> step begins to download content. If the queue is empty, the state is transited to downloading ( <span style="font-family: Courier New,Courier,monospace">DOWNLOAD_STATE_COMPLETED</span>). Otherwise, the request is queued. The application can pause, cancel, or resume the download based on user interaction. Whenever the user makes a request, the state of the download is transited accordingly to paused, canceled, or downloading.</p>
+
+<p>The following example demonstrates how to perform an HTTP download:</p>
+
+<pre class="prettyprint">
+#include &lt;tizen.h&gt;
+#include &lt;service_app.h&gt;
+#include &quot;service.h&quot; /* Auto-generated header file by the Tizen IDE */
+#include &lt;download.h&gt;
+
+download_error_e error;
+int download_id;
+/* Callback to be triggered by download_set_state_changed_cb() */
+void
+state_changed_cb(int download_id, download_state_e state, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;/* Download state is completed, failed, or canceled, destroy the handle */
+&nbsp;&nbsp;&nbsp;&nbsp;if (state &gt;= DOWNLOAD_STATE_COMPLETED) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;Download completed!&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (download_destroy(download_id) == DOWNLOAD_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;Successfully released the memory of a download request!&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;}
+}
+
+/* Callback to be triggered by download_set_progress_cb() */
+static void
+progress_cb(int download_id, unsigned long long received, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;received: %llu of %llu&quot;, received, *((unsigned long long*)user_data));
+}
+
+/* Download the file with notification to default file name and location */
+int
+start_downloading()
+{
+&nbsp;&nbsp;&nbsp;&nbsp;/* Create a download handle */
+&nbsp;&nbsp;&nbsp;&nbsp;error = download_create(&amp;download_id);
+
+&nbsp;&nbsp;&nbsp;&nbsp;/* Set a callback to get the state */
+&nbsp;&nbsp;&nbsp;&nbsp;error = download_set_state_changed_cb(download_id, state_changed_cb, NULL);
+&nbsp;&nbsp;&nbsp;&nbsp;error = download_set_progress_cb(download_id, progress_cb, &amp;content_size);
+
+&nbsp;&nbsp;&nbsp;&nbsp;/* Set the URL for downloading content */
+&nbsp;&nbsp;&nbsp;&nbsp;error = download_set_url(download_id, &quot;http://developer.tizen.org&quot;);
+
+&nbsp;&nbsp;&nbsp;&nbsp;/*
+&nbsp;&nbsp;&nbsp;&nbsp;   Set the destination path and file name
+&nbsp;&nbsp;&nbsp;&nbsp;   If the values are not given, the default storage and an auto-generated file name are used
+&nbsp;&nbsp;&nbsp;&nbsp;*/
+&nbsp;&nbsp;&nbsp;&nbsp;char *data_path = app_get_data_path();
+&nbsp;&nbsp;&nbsp;&nbsp;error = download_set_destination(download_id, data_path);
+&nbsp;&nbsp;&nbsp;&nbsp;free(data_path);
+&nbsp;&nbsp;&nbsp;&nbsp;error = download_set_file_name(download_id, &quot;downloaded_file.bin&quot;);
+
+&nbsp;&nbsp;&nbsp;&nbsp;/*
+&nbsp;&nbsp;&nbsp;&nbsp;   Set auto download
+&nbsp;&nbsp;&nbsp;&nbsp;   If you set the second parameter to true, the download manager continues downloading
+&nbsp;&nbsp;&nbsp;&nbsp;   even after the client process is terminated
+&nbsp;&nbsp;&nbsp;&nbsp;*/
+&nbsp;&nbsp;&nbsp;&nbsp;error = download_set_auto_download(download_id, true);
+
+&nbsp;&nbsp;&nbsp;&nbsp;/* Start content download */
+&nbsp;&nbsp;&nbsp;&nbsp;error = download_start(download_id);
+
+&nbsp;&nbsp;&nbsp;&nbsp;return error;
+}
+
+int
+end_downloading()
+{
+&nbsp;&nbsp;&nbsp;&nbsp;/* Release callbacks */
+&nbsp;&nbsp;&nbsp;&nbsp;download_unset_progress_cb(download_id);
+&nbsp;&nbsp;&nbsp;&nbsp;download_unset_state_changed_cb(download_id);
+
+&nbsp;&nbsp;&nbsp;&nbsp;/* Destroy the download handle */
+&nbsp;&nbsp;&nbsp;&nbsp;error = download_destroy(download_id);
+
+&nbsp;&nbsp;&nbsp;&nbsp;return error;
+}
+
+bool
+service_app_create(void *data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;start_downloading(data);
+
+&nbsp;&nbsp;&nbsp;&nbsp;return true;
+}
+
+void
+service_app_terminate(void *data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;end_downloading();
+
+&nbsp;&nbsp;&nbsp;&nbsp;return;
+}
+
+/* Assume that auto-generated functions from the Tizen IDE are here */
+
+int
+main(int argc, char* argv[])
+{
+&nbsp;&nbsp;&nbsp;&nbsp;char ad[50] = {0,};
+&nbsp;&nbsp;&nbsp;&nbsp;service_app_lifecycle_callback_s event_callback;
+&nbsp;&nbsp;&nbsp;&nbsp;app_event_handler_h handlers[5] = {NULL,};
+
+&nbsp;&nbsp;&nbsp;&nbsp;event_callback.create = service_app_create;
+&nbsp;&nbsp;&nbsp;&nbsp;event_callback.terminate = service_app_terminate;
+&nbsp;&nbsp;&nbsp;&nbsp;event_callback.app_control = service_app_control;
+
+&nbsp;&nbsp;&nbsp;&nbsp;service_app_add_event_handler(&amp;handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;service_app_low_battery, &amp;ad);
+&nbsp;&nbsp;&nbsp;&nbsp;service_app_add_event_handler(&amp;handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;service_app_low_memory, &amp;ad);
+&nbsp;&nbsp;&nbsp;&nbsp;service_app_add_event_handler(&amp;handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;service_app_lang_changed, &amp;ad);
+&nbsp;&nbsp;&nbsp;&nbsp;service_app_add_event_handler(&amp;handlers[APP_EVENT_REGION_FORMAT_CHANGED], APP_EVENT_REGION_FORMAT_CHANGED,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;service_app_region_changed, &amp;ad);
+
+&nbsp;&nbsp;&nbsp;&nbsp;return service_app_main(argc, argv, &amp;event_callback, ad);
+}
+</pre>
+
+<h2 id="parse">Parsing XML and JSON</h2>
+
+<p>The responses of many open APIs are composed of XML or JSON data. Tizen provides the <a href="https://developer.gnome.org/json-glib/" target="_blank">JSON-GLIB</a> library for parsing JSON and <a href="http://www.xmlsoft.org/" target="_blank">libxml2</a> for parsing XML.</p>
+
+<h3>Required Privileges</h3>
+
+<p>Applications that read and write to a device file system must declare the required privileges in the <span style="font-family: Courier New,Courier,monospace">tizen-manifest.xml</span> file. For more information on the Tizen privileges, see <a href="../details/sec_privileges_n.htm">Security and API Privileges</a>.</p>
+
+<p>To perform the download operations and read and write to a file system, the application manifest must include the following privileges:</p>
+
+<pre class="prettyprint">
+&lt;privileges&gt;
+&nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/filesystem.read&lt;/privilege&gt;
+&nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/filesystem.write&lt;/privilege&gt;
+&lt;/privileges&gt;
+</pre>
+
+
+<h3>Parsing JSON</h3>
+
+<p><a href="https://developer.gnome.org/json-glib/stable/" target="_blank">JSON-GLib</a> is a library aimed at providing an API for efficient parsing and writing of JSON (JavaScript Object Notation) streams, using GLib data types and API. As Tizen supports JSON-GLIB natively, you do not need to manually download this library and install it on your project. </p>
+
+<p>The following example demonstrates how to parse a JSON file:</p>
+
+<pre class="prettyprint">
+#include &lt;json-glib/json-glib.h&gt;
+
+/* Called a moment after downloading */
+static void
+parse_downloaded(void *data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;char *file_name = NULL;
+&nbsp;&nbsp;&nbsp;&nbsp;download_get_downloaded_file_path((int)data, &amp;file_name);
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;got file %s&quot;, file_name);
+
+&nbsp;&nbsp;&nbsp;&nbsp;/* Parse a file */
+&nbsp;&nbsp;&nbsp;&nbsp;call_parser(file_name);
+
+&nbsp;&nbsp;&nbsp;&nbsp;/* Remove the file when no longer used */
+&nbsp;&nbsp;&nbsp;&nbsp;remove(file_name);
+}
+
+static void
+call_parser(char *file_name)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;int parse_reply = json_parse(file_name, ad_);
+&nbsp;&nbsp;&nbsp;&nbsp;if (parse_reply == -1) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elm_object_text_set(ad_-&gt;popup_label, &quot;&lt;align=center&gt;This file is not in JSON format&lt;/align&gt;&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;} else if (parse_reply == 1) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elm_object_text_set(ad_-&gt;popup_label, &quot;&lt;align=center&gt;File parsed, however some nodes &quot;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;weren&#39;t imported due to the limit of nesting level&lt;/align&gt;&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;} else {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elm_object_text_set(ad_-&gt;popup_label, &quot;&lt;align=center&gt;File parsed&lt;/align&gt;&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;}
+}
+
+/* Parse a given JSON file */
+int
+json_parse(char *file_name, void *data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;appdata_s *ad = (appdata_s *)data;
+&nbsp;&nbsp;&nbsp;&nbsp;GError *error = NULL;
+&nbsp;&nbsp;&nbsp;&nbsp;JsonParser *parser = json_parser_new();
+
+&nbsp;&nbsp;&nbsp;&nbsp;/* Load a file to parse */
+&nbsp;&nbsp;&nbsp;&nbsp;json_parser_load_from_file(parser, file_name, &amp;error);
+
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;parsing  %s&quot;, file_name);
+
+&nbsp;&nbsp;&nbsp;&nbsp;if (error) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;parsing failed&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_object_unref(parser);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_error_free(error);
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return -1;
+&nbsp;&nbsp;&nbsp;&nbsp;}
+
+&nbsp;&nbsp;&nbsp;&nbsp;/* Iterate through root members */
+&nbsp;&nbsp;&nbsp;&nbsp;JsonNode *root = json_parser_get_root(parser);
+
+&nbsp;&nbsp;&nbsp;&nbsp;if (json_node_get_node_type(root) == JSON_NODE_NULL
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|| json_node_get_node_type(root) == JSON_NODE_VALUE) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;not supported root&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_object_unref(parser);
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return -1;
+&nbsp;&nbsp;&nbsp;&nbsp;}
+
+&nbsp;&nbsp;&nbsp;&nbsp;ad-&gt;parsing_in_progress = true;
+
+&nbsp;&nbsp;&nbsp;&nbsp;/* Show editor item */
+&nbsp;&nbsp;&nbsp;&nbsp;create_editor_view(data, NULL, NULL);
+
+&nbsp;&nbsp;&nbsp;&nbsp;switch (json_node_get_node_type(root)) {
+&nbsp;&nbsp;&nbsp;&nbsp;case JSON_NODE_OBJECT:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JsonObject *object;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;object = json_node_get_object(root);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;json_object_foreach_member(object, object_member_cb, (gpointer) root_associated);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
+&nbsp;&nbsp;&nbsp;&nbsp;case JSON_NODE_ARRAY:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JsonArray *array;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array = json_node_get_array(root);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;json_array_foreach_element(array, array_element_cb, (gpointer) root_associated);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
+&nbsp;&nbsp;&nbsp;&nbsp;default:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;
+&nbsp;&nbsp;&nbsp;&nbsp;}
+
+&nbsp;&nbsp;&nbsp;&nbsp;root_associated-&gt;type = json_node_get_node_type(root);
+
+&nbsp;&nbsp;&nbsp;&nbsp;ad-&gt;parsing_in_progress = false;
+
+&nbsp;&nbsp;&nbsp;&nbsp;g_object_unref(parser);
+
+&nbsp;&nbsp;&nbsp;&nbsp;if (nodes_omitted)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1;
+
+&nbsp;&nbsp;&nbsp;&nbsp;return 0;
+}
+</pre>
+
+<h3>Parsing XML</h3>
+
+<p>Libxml2 is the XML C parser and toolkit developed for the Gnome project (but usable outside the Gnome platform). It is free software available under the MIT License. XML itself is a metalanguage to design markup languages: it is a text language where semantics and structure are added to the content using extra <strong>markup</strong> information enclosed between angle brackets. HTML is the most well-known markup language. Though the library is written in C, a variety of language bindings make it available in other environments.</p>
+
+  <table class="note"> 
+   <tbody> 
+    <tr> 
+     <th class="note">Note</th> 
+    </tr> 
+    <tr> 
+     <td class="note">For more examples and tutorials, see <a href="http://www.xmlsoft.org/tutorial/index.html" target="_blank">libxml Tutorial</a>.</td> 
+    </tr> 
+   </tbody> 
+  </table>  
+
+<p>The following example comes from the libxml Tutorial. It demonstrates how to parse and validate an XML file to a tree and free the result:</p>
+
+<pre class="prettyprint">
+/*
+   section: Parsing
+   synopsis: Parse and validate an XML file to a tree and free the result
+   purpose: Create a parser context for an XML file, then parse and validate
+            the file, creating a tree, check the validation result
+            and xmlFreeDoc() to free the resulting tree
+   usage: parse2 test2.xml
+   test: parse2 test2.xml
+   author: Daniel Veillard
+   copy: see Copyright for the status of this software
+*/
+
+#include &lt;stdio.h&gt;
+#include &lt;libxml/parser.h&gt;
+#include &lt;libxml/tree.h&gt;
+
+/*
+   exampleFunc:
+   @filename: a filename or an URL
+
+   Parse and validate the resource and free the resulting tree
+*/
+static void
+exampleFunc(const char *filename)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;xmlParserCtxtPtr ctxt; /* Parser context */
+&nbsp;&nbsp;&nbsp;&nbsp;xmlDocPtr doc; /* Resulting document tree */
+
+&nbsp;&nbsp;&nbsp;&nbsp;/* Create a parser context */
+&nbsp;&nbsp;&nbsp;&nbsp;ctxt = xmlNewParserCtxt();
+&nbsp;&nbsp;&nbsp;&nbsp;if (ctxt == NULL) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr, &quot;Failed to allocate parser context\n&quot;);
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
+&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;/* Parse the file, activating the DTD validation option */
+&nbsp;&nbsp;&nbsp;&nbsp;doc = xmlCtxtReadFile(ctxt, filename, NULL, XML_PARSE_DTDVALID);
+&nbsp;&nbsp;&nbsp;&nbsp;/* Check whether parsing succeeds */
+&nbsp;&nbsp;&nbsp;&nbsp;if (doc == NULL) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr, &quot;Failed to parse %s\n&quot;, filename);
+&nbsp;&nbsp;&nbsp;&nbsp;} else {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Check whether validation succeeds */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (ctxt-&gt;valid == 0)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr, &quot;Failed to validate %s\n&quot;, filename);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Free up the resulting document */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlFreeDoc(doc);
+&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;/* Free up the parser context */
+&nbsp;&nbsp;&nbsp;&nbsp;xmlFreeParserCtxt(ctxt);
+}
+
+int
+main(int argc, char **argv)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;if (argc != 2)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(1);
+
+&nbsp;&nbsp;&nbsp;&nbsp;/*
+&nbsp;&nbsp;&nbsp;&nbsp;   Initialize the library and check potential ABI mismatches
+&nbsp;&nbsp;&nbsp;&nbsp;   between the version it was compiled for and the actual shared
+&nbsp;&nbsp;&nbsp;&nbsp;   library used
+&nbsp;&nbsp;&nbsp;&nbsp;*/
+&nbsp;&nbsp;&nbsp;&nbsp;LIBXML_TEST_VERSION
+
+&nbsp;&nbsp;&nbsp;&nbsp;exampleFunc(argv[1]);
+
+&nbsp;&nbsp;&nbsp;&nbsp;/* Cleanup function for the XML library */
+&nbsp;&nbsp;&nbsp;&nbsp;xmlCleanupParser();
+&nbsp;&nbsp;&nbsp;&nbsp;/* This is to debug memory for regression tests */
+&nbsp;&nbsp;&nbsp;&nbsp;xmlMemoryDump();
+
+&nbsp;&nbsp;&nbsp;&nbsp;return(0);
+}
+</pre>
+
+<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+</html>
+
diff --git a/org.tizen.gettingstarted/html/native/feature/app_connectivity_p2p_n.htm b/org.tizen.gettingstarted/html/native/feature/app_connectivity_p2p_n.htm
new file mode 100644 (file)
index 0000000..1975b6e
--- /dev/null
@@ -0,0 +1,360 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+       <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+       <meta http-equiv="X-UA-Compatible" content="IE=9" />
+       <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
+       <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
+       <script type="text/javascript" src="../../scripts/snippet.js"></script> 
+       <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
+
+       <title>P2P Connections with Wi-Fi Direct&trade;</title>  
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+       <div id="profile">
+               <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/> <img alt="Wearable native" src="../../images/wearable_s_n.png"/></p>
+       </div>
+       <div id="toc_border"><div id="toc">
+               <p class="toc-title">Content</p>
+               <ul class="toc">
+                       <li><a href="#privilege">Required Privileges and Features</a></li>
+                       <li><a href="#setting">Wi-Fi Direct&trade; Settings</a></li>
+                       <li><a href="#implement">Implementing Wi-Fi Direct&trade;</a></li>
+                       <li><a href="#TDLS">Difference Between Wi-Fi Direct&trade; and TDLS</a></li>
+               </ul>
+        <p class="toc-title">Related Info</p>
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.guides/html/native/network/network_guide_n.htm">Network Guides</a></li>
+                       <li><a href="../../../../org.tizen.tutorials/html/native/network/network_tutorials_n.htm">Network Tutorials</a></li>
+                       <li><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__FRAMEWORK.html">Network API for Mobile Native</a></li>
+                       <li><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__FRAMEWORK.html">Network API for Wearable Native</a></li>
+        </ul>          
+       </div></div>
+</div>         
+<div id="container"><div id="contents"><div class="content">   
+<h1>P2P Connections with Wi-Fi Direct&trade;</h1>
+
+<p>Wi-Fi Direct&trade; (synonym for Wi-Fi P2P (Peer-to-Peer)) is a technology that allows you to find nearby Wi-Fi Direct&trade; devices and form a Wi-Fi Direct&trade; group to communicate over a peer-to-peer link without wireless access points (base stations) in the infrastructure mode.</p>
+
+<p>This feature is supported in mobile applications only.</p>
+
+<p>In a Wi-Fi Direct&trade; group, the group owner works as an access point (AP) in the Wi-Fi infrastructure mode and the other devices join the group as clients. A group can be created by:</p>
+<ul>
+<li>Negotiation between 2 devices
+<p>In a negotiation-based group creation, 2 devices compete based on the group owner intent value and the higher intent device becomes a group owner, while the other device becomes a group client.</p>
+</li>
+<li>In an autonomous mode by a single group owner device
+<p>In an autonomous group creation, a device becomes a group owner by itself without any group client.</p>
+</li></ul>
+
+<p>The following sections demonstrate how to find and connect to nearby devices using Wi-Fi Direct&trade;.</p>
+
+<h2 id="privilege">Required Privileges and Features</h2>
+
+<p>Applications that use Wi-Fi Direct&trade; must declare the required privileges in the <span style="font-family: Courier New,Courier,monospace">tizen-manifest.xml</span> file. For more information on the Tizen privileges, see <a href="../details/sec_privileges_n.htm">Security and API Privileges</a>.</p>
+
+<p>To perform the Wi-Fi Direct&trade; operations, the application manifest must include the following privileges:</p>
+
+<pre class="prettyprint">
+&lt;privileges&gt;
+&nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/network.get&lt;/privilege&gt;
+&nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/internet&lt;/privilege&gt;
+&nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/wifidirect&lt;/privilege&gt;
+&lt;/privileges&gt;
+</pre>
+
+  <table class="note"> 
+   <tbody> 
+    <tr> 
+     <th class="note">Note</th> 
+    </tr> 
+    <tr> 
+     <td class="note">Wi-Fi Direct&trade; does not require an Internet connection, but it needs the <span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/internet</span> privilege because it uses standard sockets.</td> 
+    </tr> 
+   </tbody> 
+  </table> 
+
+<p>To perform the Wi-Fi Direct&trade; operations, the device must support the following <a href="../details/app_filtering_n.htm">features</a>:</p>
+<ul>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/network.wifi</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/network.wifi.direct</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/network.wifi.direct.display</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/network.wifi.direct.service_discovery</span></li>
+</ul>
+
+<h2 id="setting">Wi-Fi Direct&trade; Settings</h2>
+
+<p>To use Wi-Fi P2P, you must confirm that 2 devices are connected through Wi-Fi Direct&trade;. To see the settings of Wi-Fi Direct&trade;, go to <strong>Settings &gt; Wi-Fi &gt; Wi-Fi Direct</strong> in the device. To listen to the Wi-Fi Direct&trade; states, set a callback function.</p>
+
+<h2 id="implement">Implementing Wi-Fi Direct&trade;</h2>
+
+<p>To use Wi-Fi P2P, you must activate Wi-Fi Direct&trade; and start the service. If you want to listen to Wi-Fi Direct&trade; states, you must also set a callback function.</p>
+
+<p>To implement a Wi-Fi Direct&trade; connection:</p>
+
+<ol>
+<li>Initialize Wi-Fi Direct&trade; to use all Wi-Fi Direct&trade; functions:
+
+<pre class="prettyprint">
+#include &lt;wifi_direct.h&gt;
+int error_code;
+
+error_code = wifi_direct_initialize();
+</pre>
+
+<p>To monitor the state of several events, the application can set state changed callbacks using the <span style="font-family: Courier New,Courier,monospace">wifi_direct_set_device_state_changed_cb()</span>, <span style="font-family: Courier New,Courier,monospace">discovery_state_changed_cb()</span>, and <span style="font-family: Courier New,Courier,monospace">wifi_direct_set_connection_state_changed_cb()</span> functions after initializing Wi-Fi Direct&trade;.</p>
+</li>
+
+<li>Activate Wi-Fi Direct&trade;.
+
+<p>Define the <span style="font-family: Courier New,Courier,monospace">device_state_changed_cb()</span> callback function, which is invoked whenever a Wi-Fi Direct&trade; local device activates or deactivates:</p> 
+
+<pre class="prettyprint">
+/* Get the Wi-Fi Direct&trade; activation and deactivation events in device_state_changed_cb() callback */
+static void
+device_state_changed_cb(wifi_direct_error_e error_code,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wifi_direct_discovery_state_e discovery_state, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;if (device_state == WIFI_DIRECT_DEVICE_STATE_ACTIVATED)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Activate Wi-Fi Direct&trade; device!\n&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;else if (device_state == WIFI_DIRECT_DEVICE_STATE_DEACTIVATED)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Deactivate Wi-Fi Direct&trade; device!\n&quot;);
+}
+
+error_code = wifi_direct_set_device_state_changed_cb(device_state_changed_cb, NULL);
+
+/* Activate Wi-Fi Direct&trade; */
+error_code = wifi_direct_activate();
+if (error_code != WIFI_DIRECT_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;[wifi_direct_activate] Failed.&quot;);
+
+&nbsp;&nbsp;&nbsp;&nbsp;return;
+} else {
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;[wifi_direct_activate] Succeeded.&quot;);
+}
+</pre>
+
+<p>After the <span style="font-family: Courier New,Courier,monospace">wifi_direct_activate()</span> function is completed, the <span style="font-family: Courier New,Courier,monospace">device_state_changed_cb()</span> callback is invoked.</p>
+</li>
+<li>Start the discovery to find nearby peer devices:
+
+<pre class="prettyprint">
+void
+discovery_state_changed_cb(wifi_direct_error_e error_code,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wifi_direct_discovery_state_e discovery_state, void *user_data);
+
+error_code = wifi_direct_set_discovery_state_changed_cb(discovery_state_changed_cb, NULL);
+
+/* Discover nearby Wi-Fi Direct&trade; peer devices */
+wifi_direct_start_discovery(false, 0);
+</pre>
+
+<p>When the Wi-Fi Direct&trade; discovery state changes, the <span style="font-family: Courier New,Courier,monospace">discovery_state_changed_cb()</span> function is called.</p>
+</li>
+
+<li>Fetch the list of peers.
+
+<p>Get the list of peers with the <span style="font-family: Courier New,Courier,monospace">wifi_direct_foreach_discovered_peers()</span> function. It invokes the <span style="font-family: Courier New,Courier,monospace">wifi_direct_discovered_peer_cb()</span> callback, which provides information about the peers that Wi-Fi P2P has detected:</p>
+
+<pre class="prettyprint">
+char * mac_address = NULL;
+
+bool
+discovered_peer_cb(wifi_direct_discovered_peer_info_s *peer, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;if (NULL != peer) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;\nDevice Name: %s&quot;, peer-&gt;device_name);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;\nMac Address: %s&quot;, peer-&gt;mac_address);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mac_address = strdup(peer-&gt;mac_address);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error_code = wifi_direct_connect(mac_address);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (error_code != WIFI_DIRECT_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Fail to connect\n&quot;);
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return -1;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1;
+&nbsp;&nbsp;&nbsp;&nbsp;}
+}
+
+int
+fetch_wifi_direct()
+{
+&nbsp;&nbsp;&nbsp;&nbsp;int error_code;
+
+&nbsp;&nbsp;&nbsp;&nbsp;int ret = wifi_direct_foreach_discovered_peers(discovered_peer_cb, &amp;mac_address);
+&nbsp;&nbsp;&nbsp;&nbsp;if (ret != WIFI_DIRECT_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;[wifi_direct_foreach_discovered_peers] Failed.&quot;);
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
+&nbsp;&nbsp;&nbsp;&nbsp;}
+}
+</pre>
+</li>
+<li>Connect a specific Wi-Fi Direct&trade; peer device:
+
+<pre class="prettyprint">
+static void
+connection_state_changed_cb(wifi_direct_error_e error_code,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wifi_direct_connection_state_e connection_state,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const char *mac_address, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Connection state changed to: [%d] [%s]\n&quot;, connection_state,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test_wfd_convert_connection_state_to_string(connection_state));
+
+&nbsp;&nbsp;&nbsp;&nbsp;bool accept_connection = false;
+&nbsp;&nbsp;&nbsp;&nbsp;int rv = 0;
+
+&nbsp;&nbsp;&nbsp;&nbsp;switch (connection_state) {
+&nbsp;&nbsp;&nbsp;&nbsp;case WIFI_DIRECT_CONNECTION_WPS_REQ:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Outgoing requests */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wifi_direct_wps_type_e wps_mode;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wifi_direct_get_local_wps_type(&amp;wps_mode);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Handle the event */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
+&nbsp;&nbsp;&nbsp;&nbsp;case WIFI_DIRECT_CONNECTION_REQ:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Incoming requests */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wifi_direct_wps_type_e wps_mode;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wifi_direct_get_local_wps_type(&amp;wps_mode);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Handle the event */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
+&nbsp;&nbsp;&nbsp;&nbsp;case WIFI_DIRECT_INVITATION_REQ:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Invitation request from peer */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Handle the event */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
+&nbsp;&nbsp;&nbsp;&nbsp;case WIFI_DIRECT_DISASSOCIATION_IND:
+&nbsp;&nbsp;&nbsp;&nbsp;case WIFI_DIRECT_DISCONNECTION_IND:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Peer : [%s] disconnected.\n&quot;, mac_address);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Handle the event */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
+&nbsp;&nbsp;&nbsp;&nbsp;case WIFI_DIRECT_CONNECTION_IN_PROGRESS:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Connection in progress\n&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Handle the event */
+&nbsp;&nbsp;&nbsp;&nbsp;case WIFI_DIRECT_CONNECTION_RSP:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (error_code == WIFI_DIRECT_ERROR_CONNECTION_FAILED) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(MAKE_RED&quot;Time Out or connection failed&quot;RESET_COLOR&quot;\n&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Handle the event */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
+&nbsp;&nbsp;&nbsp;&nbsp;case WIFI_DIRECT_GROUP_CREATED:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Handle the event */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
+&nbsp;&nbsp;&nbsp;&nbsp;case WIFI_DIRECT_GROUP_DESTROYED:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Handle the event */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
+&nbsp;&nbsp;&nbsp;&nbsp;case WIFI_DIRECT_DISCONNECTION_RSP:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Handle the event */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
+&nbsp;&nbsp;&nbsp;&nbsp;default:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Unknown State Received\n&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;}
+}
+
+error_code = wifi_direct_set_connection_state_changed_cb(connection_state_changed_cb, NULL);
+</pre>
+</li>
+<li>When the connection is no longer needed, disconnect the Wi-Fi Direct&trade; device:
+
+<pre class="prettyprint">
+error_code = wifi_direct_disconnect(mac_address);
+if (error_code != WIFI_DIRECT_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Fail to disconnect\n&quot;);
+
+&nbsp;&nbsp;&nbsp;&nbsp;return -1;
+}
+</pre>
+</li>
+<li>To deactivate Wi-Fi Direct&trade; when it is no longer needed (or the application is exiting):
+
+<pre class="prettyprint">
+/* Power off the local device using the wifi_direct_deactivate() function */
+/* Deactivate Wi-Fi Direct&trade; */
+wifi_direct_deactivate(NULL);
+
+/* Unset the callbacks */
+/* Unset the activation or deactivation event callback */
+wifi_direct_unset_device_state_changed_cb(NULL);
+
+/* Unset the discovery event callback */
+wifi_direct_unset_discovery_state_changed_cb(NULL);
+
+/* Unset the connection event callback */
+wifi_direct_unset_connection_state_changed_cb(NULL);
+</pre>
+</li>
+<li>Release the Wi-Fi Direct&trade;.
+
+<p>Power off the local device using the <span style="font-family: Courier New,Courier,monospace">wifi_direct_deactivate()</span> function:</p>
+
+<pre class="prettyprint">
+/* Release Wi-Fi Direct&trade; */
+wifi_direct_deinitialize();
+</pre>
+</li>
+</ol>
+
+<h2 id="TDLS">Difference Between Wi-Fi Direct&trade; and TDLS</h2>
+
+<p>There are 2 protocol technologies to connect directly with each other for Wi-Fi devices:</p>
+
+<ul>
+<li>Wi-Fi Direct&trade;</li>
+<li>TDLS (Tunneled Direct Link Setup)</li>
+</ul>
+
+<p>Wi-Fi Direct&trade;-certified devices can quickly connect to one another while on the go, even when a Wi-Fi network is unavailable, while TDLS operates in the background of a Wi-Fi network to optimize performance. Many devices are certified for both solutions and use them in different situations.</p>
+
+<p>For more information, see <a href="http://www.wi-fi.org/knowledge-center/faq/what-is-the-difference-between-tdls-and-wi-fi-direct" target="_blank">What is the difference between TDLS and Wi-Fi Direct?</a>, <a href="http://www.telecomabc.com/numbers/80211z.html" target="_blank">IEEE 802.11z - TDLS</a> and <a href="https://www.excentis.com/blog/content-sharing-syncing-streaming-protocols-wi-fi" target="_blank">Content sharing, syncing, streaming protocols for Wi-Fi</a>.</p>
+
+<h3>Wi-Fi Direct&trade;</h3>
+
+<p>Wi-Fi Direct&trade; is a new technology defined by the Wi-Fi Alliance aimed at enhancing direct device to device communications in Wi-Fi. Wi-Fi Direct&trade; can be used to directly connect mobile phones, tablets, and PCs to peripherals, such as cameras, printers, gaming devices, or a wireless mouse, without the need for an access point. Devices can make a one-to-one connection, or a group of several devices can connect.</p>
+
+<p class="figure">Figure: Wi-Fi Direct&trade;</p> 
+<p align="center"><img alt="Wi-Fi Direct" src="../../images/connectivity_wifidirect.png" /></p>
+
+<p>Direct device to device connectivity was already possible in the original IEEE 802.11 standard by means of the ad-hoc mode of operation. However, this never became widely deployed. Wi-Fi Direct&trade; takes a different approach: in it, one of the devices acts as an access point. This means that legacy Wi-Fi devices can seamlessly connect to Wi-Fi Direct&trade; devices.</p>
+
+<h3>TDLS (Tunneled Direct Link Setup)</h3>
+
+<p>The IEEE 802.11z amendment is a mechanism that makes it possible to directly transfer data between 2 Wi-Fi clients that are part of the same Wi-Fi network.</p>
+  
+<p class="figure">Figure: TDLS</p> 
+<p align="center"><img alt="TDLS" src="../../images/connectivity_tdls.png" /></p> 
+
+<p>Usually, in a Wi-Fi network, data is transferred from one client to another through an access point (AP). The IEEE 802.11z amendment defines mechanisms that allow IEEE 802.11 to set up a direct link between client devices while also remaining associated with the AP. These mechanisms are referred to as Tunneled Direct Link Setup (TDLS). This reduces the amount of traffic that is transferred in the network and prevents congestion at the AP.</p>
+
+<p>A TDLS direct link is set up automatically between the devices, without intervention from the AP or the user. The connection with the AP is maintained.</p>
+
+<p>TDLS is not the same as, nor does it replace Wi-Fi Direct&trade;. TDLS is used to optimize the traffic flow in a network, while Wi-Fi Direct&trade; is used to quickly connect devices to one another while on the go, even when a Wi-Fi network is unavailable.</p>
+<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+</html>
+
diff --git a/org.tizen.gettingstarted/html/native/feature/app_connectivity_usage_n.htm b/org.tizen.gettingstarted/html/native/feature/app_connectivity_usage_n.htm
new file mode 100644 (file)
index 0000000..6bc4670
--- /dev/null
@@ -0,0 +1,471 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+       <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+       <meta http-equiv="X-UA-Compatible" content="IE=9" />
+       <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
+       <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
+       <script type="text/javascript" src="../../scripts/snippet.js"></script> 
+       <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
+
+       <title>Network Usage</title>  
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+       <div id="profile">
+               <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/> <img alt="Wearable native" src="../../images/wearable_s_n.png"/></p>
+       </div>
+       <div id="toc_border"><div id="toc">
+               <p class="toc-title">Content</p>
+               <ul class="toc">
+                       <li><a href="#privilege">Required Privileges and Features</a></li>
+                       <li><a href="#type">Monitoring Connection Type Changes</a></li>
+                       <li><a href="#mobile_change">Monitoring Mobile (Cellular) Network Service Changes</a></li>                      
+                       <li><a href="#info">Getting Connection Information</a></li>
+                       <li><a href="#statistics">Collecting Connection Statistics</a></li>
+               </ul>
+        <p class="toc-title">Related Info</p>
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.guides/html/native/network/network_guide_n.htm">Network Guides</a></li>
+                       <li><a href="../../../../org.tizen.tutorials/html/native/network/network_tutorials_n.htm">Network Tutorials</a></li>
+                       <li><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__FRAMEWORK.html">Network API for Mobile Native</a></li>
+                       <li><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__FRAMEWORK.html">Network API for Wearable Native</a></li>
+        </ul>
+       </div></div>
+</div>         
+<div id="container"><div id="contents"><div class="content">   
+<h1>Network Usage</h1>
+
+<p>The following sections describe how to create applications that have cost-efficient control over their usage of network resources. If your application performs a lot of network operations, you must provide user settings that allow the user to control your application&#39;s data behavior, such as how often the application syncs data, whether to perform uploads or downloads only when Wi-Fi is switched on, and whether to use data while roaming. With these controls available to them, users are much less likely to disable your application&#39;s access to background data when they approach their limits, because they can instead precisely control how much data your application uses.</p>
+
+<h2 id="privilege">Required Privileges and Features</h2>
+
+<p>Applications that access network information and statistics must declare the required privileges in the <span style="font-family: Courier New,Courier,monospace">tizen-manifest.xml</span> file. For more information on the Tizen privileges, see <a href="../details/sec_privileges_n.htm">Security and API Privileges</a>.</p>
+
+<p>To perform the network operations, the application manifest must include the following privileges:</p>
+
+<pre class="prettyprint">
+&lt;privileges&gt;
+&nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/network.get&lt;/privilege&gt;
+&lt;/privileges&gt;
+</pre>
+
+<p>To perform the network operations, the device must support the following <a href="../details/app_filtering_n.htm">features</a>:</p>
+<ul>
+<li>To use Wi-Fi:
+       <ul>
+       <li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/network.wifi</span></li>
+       <li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/network.wifi.direct</span></li>
+       <li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/network.wifi.direct.display</span></li>
+       <li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/network.wifi.direct.service_discovery</span></li>
+       </ul>
+</li>
+<li>To use the mobile network:
+       <ul>
+       <li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/network.telephony</span></li>
+       </ul>
+</li>
+</ul>
+
+<h2 id="type">Monitoring Connection Type Changes</h2>
+
+<p>When the network connection is changed, the application must receive a notification. For instance, if the Wi-FI network is changed to a visited mobile network (roaming), the user can pay for the mobile data without user recognition.</p>
+
+<p>The Connection API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__CONNECTION__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__CONNECTION__MODULE.html">wearable</a> applications) provides a function that provides a notification about the connection status. The application can download or upload files only when Wi-Fi is connected by checking the network type in the triggered callback.</p>
+
+<p>The Connection API supports the following network types:</p>
+
+<ul>
+<li><span style="font-family: Courier New,Courier,monospace">CONNECTION_TYPE_DISCONNECTED</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">CONNECTION_TYPE_WIFI</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">CONNECTION_TYPE_CELLULAR</span> (indicates the mobile network)</li>
+<li><span style="font-family: Courier New,Courier,monospace">CONNECTION_TYPE_ETHERNET</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">CONNECTION_TYPE_BT</span></li>
+</ul>
+
+<p>The following example demonstrates how to monitor network connection changes:</p>
+
+<pre class="prettyprint">
+#include &lt;net_connection.h&gt;
+
+static void
+connection_changed_cb(connection_type_e type, void* user_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;Type changed callback, connection type : %d&quot;, type);
+}
+
+int
+get_network_connection()
+{
+&nbsp;&nbsp;&nbsp;&nbsp;int error_code;
+&nbsp;&nbsp;&nbsp;&nbsp;static connection_h connection;
+&nbsp;&nbsp;&nbsp;&nbsp;void *user_data;
+
+&nbsp;&nbsp;&nbsp;&nbsp;error_code = connection_create(&amp;connection);
+&nbsp;&nbsp;&nbsp;&nbsp;if (error_code != CONNECTION_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
+
+&nbsp;&nbsp;&nbsp;&nbsp;error_code = connection_set_type_changed_cb(connection, connection_changed_cb, user_data);
+&nbsp;&nbsp;&nbsp;&nbsp;if (error_code != CONNECTION_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
+
+&nbsp;&nbsp;&nbsp;&nbsp;error_code = connection_destroy(connection);
+&nbsp;&nbsp;&nbsp;&nbsp;if (error_code != CONNECTION_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
+}
+</pre>
+
+
+<h2 id="mobile_change">Monitoring Mobile (Cellular) Network Service Changes</h2>
+
+<p>Sometimes, the application must check the state of the mobile network service to make the user experience better by protecting against running tasks in the background when the device is, for example, roaming. Downloading or uploading content without user awareness in that situation can incur charges, and result in unreasonable use of the mobile network resources. The application must use the data transport network efficiently, providing a better user experience for the mobile data network.</p>
+
+<h3>Getting the State of Mobile Network Service</h3>
+
+<p>The Telephony Information API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__TELEPHONY__INFORMATION.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__TELEPHONY__INFORMATION.html">wearable</a> applications) is composed of Call (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__TELEPHONY__INFORMATION__CALL.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__TELEPHONY__INFORMATION__CALL.html">wearable</a> applications), SIM (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__TELEPHONY__INFORMATION__SIM.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__TELEPHONY__INFORMATION__SIM.html">wearable</a> applications), Network (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__TELEPHONY__INFORMATION__NETWORK.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__TELEPHONY__INFORMATION__NETWORK.html">wearable</a> applications), and Modem (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__TELEPHONY__INFORMATION__MODEM.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__TELEPHONY__INFORMATION__MODEM.html">wearable</a> applications) APIs for the mobile network service.</p>
+
+<p>The Telephony Network API provides the detailed mobile network information: LAC, Cell ID, RSSI, roaming state, MCC, MNC, network provider name, PS type, and network type. The <span style="font-family: Courier New,Courier,monospace">telephony_network_get_service_state()</span> function gets the current network state of the telephony service. It returns one of the <span style="font-family: Courier New,Courier,monospace">telephony_network_service_state_e</span> enumerator values (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__TELEPHONY__INFORMATION__NETWORK.html#gae9f3b6e54a1086b8734f4acc71fd001b">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__TELEPHONY__INFORMATION__NETWORK.html#gae9f3b6e54a1086b8734f4acc71fd001b">wearable</a> applications).</p>
+
+<p>The following table indicates the <span style="font-family: Courier New,Courier,monospace">telephony_network_service_state_e</span> enumeration that has the mobile network service state.</p>
+
+<table>
+<caption>Table: Mobile network service states</caption>
+<tbody>
+<tr>
+ <th>Enumeration</th>
+ <th>Description</th>
+</tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">TELEPHONY_NETWORK_SERVICE_STATE_IN_SERVICE</span></td>
+ <td>In service</td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">TELEPHONY_NETWORK_SERVICE_STATE_OUT_OF_SERVICE</span></td>
+ <td>Out of service</td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">TELEPHONY_NETWORK_SERVICE_STATE_EMERGENCY_ONLY</span></td>
+ <td>Only emergency call is allowed</td>
+ </tr>
+ </tbody></table>
+
+<p>The following example demonstrates how to get the mobile network service state:</p>
+
+<pre class="prettyprint">
+/* Convert network telephony_network_service_state_e to string */
+char*
+_telephony_network_state_to_string(telephony_network_service_state_e network_state)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;switch (network_state) {
+&nbsp;&nbsp;&nbsp;&nbsp;case TELEPHONY_NETWORK_SERVICE_STATE_IN_SERVICE:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &quot;TELEPHONY_NETWORK_SERVICE_STATE_IN_SERVICE&quot;;
+&nbsp;&nbsp;&nbsp;&nbsp;case TELEPHONY_NETWORK_SERVICE_STATE_OUT_OF_SERVICE:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &quot;TELEPHONY_NETWORK_SERVICE_STATE_OUT_OF_SERVICE&quot;;
+&nbsp;&nbsp;&nbsp;&nbsp;case TELEPHONY_NETWORK_SERVICE_STATE_EMERGENCY_ONLY:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &quot;TELEPHONY_NETWORK_SERVICE_STATE_EMERGENCY_ONLY&quot;;
+&nbsp;&nbsp;&nbsp;&nbsp;default:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &quot;Unknown&quot;;
+&nbsp;&nbsp;&nbsp;&nbsp;}
+}
+
+void
+get_telephony_information(appdata_s *ad, Evas_Object *obj, void *event_info)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;/* Create a telephony handle */
+&nbsp;&nbsp;&nbsp;&nbsp;telephony_handle_list_s handle_list;
+&nbsp;&nbsp;&nbsp;&nbsp;ret = telephony_init(&amp;handle_list); /* In case of a single SIM, you get only one handle */
+
+&nbsp;&nbsp;&nbsp;&nbsp;/* Print */
+&nbsp;&nbsp;&nbsp;&nbsp;for (i = 0; i &lt; app_data-&gt;handle_list.count; i++) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, &quot;TEST&quot;, &quot;telephony handle[%p] for subscription[%d]&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app_data-&gt;handle_list.handle[i], i);
+&nbsp;&nbsp;&nbsp;&nbsp;}
+
+&nbsp;&nbsp;&nbsp;&nbsp;/* Get the network service state */
+&nbsp;&nbsp;&nbsp;&nbsp;telephony_network_service_state_e network_service_state;
+&nbsp;&nbsp;&nbsp;&nbsp;char *state = NULL;
+&nbsp;&nbsp;&nbsp;&nbsp;ret = <span class="highlight">telephony_network_get_service_state(handle_list.handle[0], &amp;network_service_state);</span>
+&nbsp;&nbsp;&nbsp;&nbsp;state = _telephony_network_state_to_string(network_service_state);
+&nbsp;&nbsp;&nbsp;&nbsp;if (ret != TELEPHONY_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;[telephony_network_get_service_state] failed&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;else
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;Network Service State [%s]&quot;, state);
+}
+
+static void
+app_terminate(void *data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;/* Release and free the created telephony handle */
+&nbsp;&nbsp;&nbsp;&nbsp;telephony_deinit(&amp;handle_list);
+}
+
+/* Auto-generated functions (from the Tizen IDE) are not included */
+
+int
+main(int argc, char* argv[])
+{
+&nbsp;&nbsp;&nbsp;&nbsp;AppData app_data;  /* Store telephony handle here */
+&nbsp;&nbsp;&nbsp;&nbsp;service_app_lifecycle_callback_s event_callback;
+&nbsp;&nbsp;&nbsp;&nbsp;app_event_handler_h handlers[5] = {NULL,};
+
+&nbsp;&nbsp;&nbsp;&nbsp;event_callback.create = service_app_create;
+&nbsp;&nbsp;&nbsp;&nbsp;event_callback.terminate = service_app_terminate;
+&nbsp;&nbsp;&nbsp;&nbsp;event_callback.app_control = service_app_control;
+
+&nbsp;&nbsp;&nbsp;&nbsp;service_app_add_event_handler(&amp;handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;service_app_low_battery, &amp;app_data);
+&nbsp;&nbsp;&nbsp;&nbsp;service_app_add_event_handler(&amp;handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;service_app_low_memory, &amp;app_data);
+&nbsp;&nbsp;&nbsp;&nbsp;service_app_add_event_handler(&amp;handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;service_app_lang_changed, &amp;app_data);
+&nbsp;&nbsp;&nbsp;&nbsp;service_app_add_event_handler(&amp;handlers[APP_EVENT_REGION_FORMAT_CHANGED], APP_EVENT_REGION_FORMAT_CHANGED,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;service_app_region_changed, &amp;app_data);
+
+&nbsp;&nbsp;&nbsp;&nbsp;/* Set AppData as a user_data */
+&nbsp;&nbsp;&nbsp;&nbsp;return service_app_main(argc, argv, &amp;event_callback, &amp;app_data);
+}
+</pre>
+
+<h3>Monitoring Mobile Network Changes</h3>
+
+<p>Another way to get the mobile network state and protect the user against unreasonable use of the mobile network resources is to register a notification callback.</p>
+
+<p>The <span style="font-family: Courier New,Courier,monospace">telephony_set_noti_cb()</span> function allows the application to listen for the changes in the mobile network state, and also provides mobile network information by specifying the notification ID when the mobile network state changes.</p>
+
+<p>The following table indicates the available notification IDs.</p>
+
+<table>
+<caption>Table: Notification IDs</caption>
+<tbody>
+<tr>
+ <th>Changed state</th>
+ <th>Notification ID</th>
+</tr>
+ <tr>
+ <td>Network service state</td>
+ <td><span style="font-family: Courier New,Courier,monospace">TELEPHONY_NOTI_NETWORK_SERVICE_STATE</span></td>
+ </tr>
+ <tr>
+ <td>Cell ID</td>
+ <td><span style="font-family: Courier New,Courier,monospace">TELEPHONY_NOTI_NETWORK_CELLID</span></td>
+ </tr>
+  <tr>
+ <td>Roaming status</td>
+ <td><span style="font-family: Courier New,Courier,monospace">TELEPHONY_NOTI_NETWORK_ROAMING_STATUS</span></td>
+ </tr>
+  <tr>
+ <td>Signal strength</td>
+ <td><span style="font-family: Courier New,Courier,monospace">TELEPHONY_NOTI_NETWORK_SIGNALSTRENGTH_LEVEL</span></td>
+ </tr>
+  <tr>
+ <td>Network name</td>
+ <td><span style="font-family: Courier New,Courier,monospace">TELEPHONY_NOTI_NETWORK_NETWORK_NAME</span></td>
+ </tr>
+  <tr>
+ <td>Packet-switched type</td>
+ <td><span style="font-family: Courier New,Courier,monospace">TELEPHONY_NOTI_NETWORK_PS_TYPE</span></td>
+ </tr>
+  <tr>
+ <td>Default data subscription</td>
+ <td><span style="font-family: Courier New,Courier,monospace">TELEPHONY_NOTI_NETWORK_DEFAULT_DATA_SUBSCRIPTION</span></td>
+ </tr>
+  <tr>
+ <td>Default subscription</td>
+ <td><span style="font-family: Courier New,Courier,monospace">TELEPHONY_NOTI_NETWORK_DEFAULT_SUBSCRIPTION</span></td>
+ </tr> 
+ </tbody></table>
+       
+<p>The <span style="font-family: Courier New,Courier,monospace">telephony_noti_e</span> enumerator (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__TELEPHONY__INFORMATION.html#ga3f9d407deee8c7c7f1f7ed946bc60b4d">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__TELEPHONY__INFORMATION.html#ga3f9d407deee8c7c7f1f7ed946bc60b4d">wearable</a> applications) defines the available notification IDs. The callback function registered by the <span style="font-family: Courier New,Courier,monospace">telephony_set_noti_cb()</span> function (<span style="font-family: Courier New,Courier,monospace">network_service_state_noti_cb()</span> in the following example) delivers change notifications for a network asynchronously.</p>
+<p>The following example demonstrates how to register a notification for the mobile network state change:</p>
+
+<pre class="prettyprint">
+/* Convert network telephony_network_service_state_e to string */
+char*
+_telephony_network_state_to_string(telephony_network_service_state_e network_state)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;switch (network_state) {
+&nbsp;&nbsp;&nbsp;&nbsp;case TELEPHONY_NETWORK_SERVICE_STATE_IN_SERVICE:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &quot;TELEPHONY_NETWORK_SERVICE_STATE_IN_SERVICE&quot;;
+&nbsp;&nbsp;&nbsp;&nbsp;case TELEPHONY_NETWORK_SERVICE_STATE_OUT_OF_SERVICE:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &quot;TELEPHONY_NETWORK_SERVICE_STATE_OUT_OF_SERVICE&quot;;
+&nbsp;&nbsp;&nbsp;&nbsp;case TELEPHONY_NETWORK_SERVICE_STATE_EMERGENCY_ONLY:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &quot;TELEPHONY_NETWORK_SERVICE_STATE_EMERGENCY_ONLY&quot;;
+&nbsp;&nbsp;&nbsp;&nbsp;default:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &quot;Unknown&quot;;
+&nbsp;&nbsp;&nbsp;&nbsp;}
+}
+
+/* This function is triggered, if the mobile network status is changed */
+void
+network_service_state_noti_cb(telephony_h handle, telephony_noti_e noti_id, void *data, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;telephony_network_service_state_e network_state = *(int *)data;
+&nbsp;&nbsp;&nbsp;&nbsp;char *network_state_string = _telephony_network_state_to_string(network_state);
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;Network service state: [%s]&quot;, network_state_string);
+}
+
+void
+monitor_telephony_information(appdata_s *ad, Evas_Object *obj, void *event_info)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;/*  Create a telephony handle */
+&nbsp;&nbsp;&nbsp;&nbsp;telephony_handle_list_s handle_list;
+&nbsp;&nbsp;&nbsp;&nbsp;ret = telephony_init(&amp;handle_list); /* In case of a single SIM, you get only one handle */
+
+&nbsp;&nbsp;&nbsp;&nbsp;/*
+&nbsp;&nbsp;&nbsp;&nbsp;   Register the network_service_state_noti_cb() callback function
+&nbsp;&nbsp;&nbsp;&nbsp;   to be notified if the Network Service state is changed
+&nbsp;&nbsp;&nbsp;&nbsp;*/
+&nbsp;&nbsp;&nbsp;&nbsp;ret = telephony_set_noti_cb(handle_list.handle[0], <span class="highlight">TELEPHONY_NOTI_NETWORK_SERVICE_STATE</span>, network_service_state_noti_cb, NULL);
+&nbsp;&nbsp;&nbsp;&nbsp;if (ret != TELEPHONY_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;[telephony_set_noti_cb] failed&quot;);
+}
+
+static void
+app_terminate(void *data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;/* Release and free the created telephony handle */
+&nbsp;&nbsp;&nbsp;&nbsp;telephony_deinit(&amp;handle_list);
+}
+</pre>
+
+<h2 id="info">Getting Connection Information</h2>
+
+<p>The connection state can be changed depending on various mobile environments, such as the settings of the mobile phone or the signal strength received by the mobile phone from the cellular network or Wi-Fi AP (access point). The Connection API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__CONNECTION__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__CONNECTION__MODULE.html">wearable</a> applications) provides a function that gets the current state of the mobile network service and Wi-Fi network.</p>
+
+<h3>Getting the Mobile (Cellular) Network Connection State</h3>
+
+<p>The application can use the <span style="font-family: Courier New,Courier,monospace">connection_get_cellular_state()</span> function to get the mobile connection state.</p>
+
+<p>The network connection can be in one of the following states:</p>
+
+<ul>
+<li><span style="font-family: Courier New,Courier,monospace">CONNECTION_CELLULAR_STATE_OUT_OF_SERVICE</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">CONNECTION_CELLULAR_STATE_FLIGHT_MODE</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">CONNECTION_CELLULAR_STATE_ROAMING_OFF</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">CONNECTION_CELLULAR_STATE_CALL_ONLY_AVAILABLE</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">CONNECTION_CELLULAR_STATE_AVAILABLE</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">CONNECTION_CELLULAR_STATE_CONNECTED</span></li>
+</ul>
+
+<p>The following example demonstrates how to get the mobile network state:</p>
+
+<pre class="prettyprint">
+connection_cellular_state_e cellular_state;
+connection_get_cellular_state(connection, &amp;cellular_state);
+switch (cellular_state) {
+case CONNECTION_CELLULAR_STATE_OUT_OF_SERVICE:
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;Out of service&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;break;
+case CONNECTION_CELLULAR_STATE_FLIGHT_MODE:
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;Flight mode&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;break;
+case CONNECTION_CELLULAR_STATE_ROAMING_OFF:
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;Roaming is switched off&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;break;
+case CONNECTION_CELLULAR_STATE_CALL_ONLY_AVAILABLE:
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;Call only&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;break;
+case CONNECTION_CELLULAR_STATE_AVAILABLE:
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;Available&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;break;
+case CONNECTION_CELLULAR_STATE_CONNECTED:
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;Connected&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;break;
+default:
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;error&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;break;
+}
+</pre>
+
+<h3>Getting Wi-Fi Connection State</h3>
+
+<p>The application can use the <span style="font-family: Courier New,Courier,monospace">connection_get_wifi_state()</span> function to get the Wi-Fi connection state.</p>
+
+<p>The Wi-Fi connection can be in one of the following states:</p>
+
+<ul>
+<li><span style="font-family: Courier New,Courier,monospace">CONNECTION_WIFI_STATE_DEACTIVATED</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">CONNECTION_WIFI_STATE_DISCONNECTED</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">CONNECTION_WIFI_STATE_CONNECTED</span></li>
+</ul>
+
+<p>The following example demonstrates how to get the Wi-Fi network state:</p>
+
+<pre class="prettyprint">
+connection_wifi_state_e wifi_state;
+connection_get_wifi_state(connection, &amp;wifi_state);
+switch (wifi_state) {
+case CONNECTION_WIFI_STATE_DEACTIVATED:
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;Deactivated state&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;break;
+case CONNECTION_WIFI_STATE_DISCONNECTED:
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;Disconnected state&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;break;
+case CONNECTION_WIFI_STATE_CONNECTED:
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;Connected state&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;break;
+default:
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;error&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;break;
+}
+</pre>
+
+<h2 id="statistics">Collecting Connection Statistics</h2>
+
+<p>The Connection Statistics API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__CONNECTION__STATISTICS__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__CONNECTION__STATISTICS__MODULE.html">wearable</a> applications) provides functions for getting statistical information, such as the amount of sent or received data. The API also provides functions for getting the cumulative size of packets sent or received since the last reset based on the operation mode, such as packet switching (PS).</p>
+
+<p>Connection statistics include the amount of total sent and received data and the last sent and received data. The parameters of the <span style="font-family: Courier New,Courier,monospace">connection_get_statistics()</span> function determine which connection type and which statistics are gathered:</p>
+
+<ul>
+<li>The <span style="font-family: Courier New,Courier,monospace">connection_type_e</span> enumerator (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__CONNECTION__MANAGER__MODULE.html#ga85c33901b8ac24f2e5f66440ec4519ee">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__CONNECTION__MANAGER__MODULE.html#ga85c33901b8ac24f2e5f66440ec4519ee">wearable</a> applications) defines the connection types: <span style="font-family: Courier New,Courier,monospace">CONNECTION_TYPE_WIFI</span> is Wi-Fi and <span style="font-family: Courier New,Courier,monospace">CONNECTION_TYPE_CELLULAR</span> is the mobile network. Only Wi-Fi and mobile network connections are supported in the statistics.</li>
+<li>The <span style="font-family: Courier New,Courier,monospace">connection_statistics_type_e</span> enumerator (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__CONNECTION__STATISTICS__MODULE.html#ga24b29d70490e8cd9ee34f45615ea1c63">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__CONNECTION__STATISTICS__MODULE.html#ga24b29d70490e8cd9ee34f45615ea1c63">wearable</a> applications) defines the statistics type.</li>
+</ul>
+
+<p>The following example demonstrates how to get received data and sent data for mobile connections:</p>
+
+<pre class="prettyprint">
+long long total_received_size;
+
+/* Gets statistics of total received data through the mobile network connection */
+error_code = connection_get_statistics(connection, CONNECTION_TYPE_CELLULAR,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CONNECTION_STATISTICS_TYPE_TOTAL_RECEIVED_DATA,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;total_received_size);
+
+long long total_sent_size;
+
+/* Gets statistics of total sent data through the mobile network connection */
+error_code = connection_get_statistics(connection, CONNECTION_TYPE_CELLULAR,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CONNECTION_STATISTICS_TYPE_TOTAL_SENT_DATA,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;total_sent_size);
+</pre>
+
+<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+</html>
+
diff --git a/org.tizen.gettingstarted/html/native/feature/app_graphics_animation_n.htm b/org.tizen.gettingstarted/html/native/feature/app_graphics_animation_n.htm
new file mode 100644 (file)
index 0000000..d515e74
--- /dev/null
@@ -0,0 +1,224 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+       <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+       <meta http-equiv="X-UA-Compatible" content="IE=9" />
+       <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
+       <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
+       <script type="text/javascript" src="../../scripts/snippet.js"></script> 
+       <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
+
+       <title>Animations</title>  
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+       <div id="profile">
+               <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/> <img alt="Wearable native" src="../../images/wearable_s_n.png"/></p>
+       </div>
+       <div id="toc_border"><div id="toc">
+        <p class="toc-title">Related Info</p>          
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.ui.practices/html/native/efl/graphical_objects_n.htm">Graphical Objects</a></li>
+                       <li><a href="../../../../org.tizen.ui.practices/html/native/efl/ecore_animation_n.htm">Ecore Animations</a></li>
+                       <li><a href="../../../../org.tizen.native.mobile.apireference/group__EFL.html">EFL API for Mobile Native</a></li>
+                       <li><a href="../../../../org.tizen.native.wearable.apireference/group__EFL__Group.html">EFL API for Wearable Native</a></li>
+        </ul>          
+       </div></div>
+</div>         
+<div id="container"><div id="contents"><div class="content">   
+<h1>Animations</h1>
+       
+<p>You can change an object on the screen at certain intervals using an animation. To create an animation, you must first determine the duration of the animation, and then define a callback function that performs the actual animation with that duration.</p>
+
+<p>In the following example, 2 square rectangles are animated. One of them simply moves on the screen, while the other also changes its color and size while moving.</p>
+
+<p>The following example uses the same <strong>Basic UI</strong> template as the square drawing example. For more information on how to create the project with the template, see <a href="app_graphics_square_n.htm">Squares on the Canvas</a>.</p>
+
+<p>To implement animations in an application:</p>
+<ol>
+<li>Create a new project and specify the project name as <strong>AnimatorEx</strong>.</li>
+<li>After the project is created, open the <span style="font-family: Courier New,Courier,monospace;">.c</span> source file in the <span style="font-family: Courier New,Courier,monospace;">src</span> folder and add the new code to the <span style="font-family: Courier New,Courier,monospace;">create_base_gui()</span> function to create 2 rectangles and 2 animations.
+
+<p>The following functions are used to create the animations:</p>
+<ul>
+<li><span style="font-family: Courier New,Courier,monospace;">ecore_animator_frametime_set()</span> specifies a frame time interval for an animation. For example, if you specify the interval as 1/50, 50 frame events occur in 1 second. The unit is seconds.</li>
+<li><span style="font-family: Courier New,Courier,monospace;">ecore_animator_timeline_add()</span> creates an <span style="font-family: Courier New,Courier,monospace;">Animator</span> object with a limited time specified in seconds by the first parameter. Once the runtime  of the animator has elapsed, it is deleted automatically.
+<p>The second parameter indicates the frame event callback function that actually defines the animation details, and the third parameter indicates the user data, which generally passes an object or application data to which you apply the animation.</p>
+<p>The callback function can return <span style="font-family: Courier New,Courier,monospace;">ECORE_CALLBACK_RENEW</span> to keep the animator running or <span style="font-family: Courier New,Courier,monospace;">ECORE_CALLBACK_CANCEL</span> to stop it and automatically delete it at any time.</p></li>
+<li><span style="font-family: Courier New,Courier,monospace;">ecore_animator_add()</span> creates an <span style="font-family: Courier New,Courier,monospace;">Animator</span> object. The first parameter indicates the frame event callback function that actually defines the animation details, and the second parameter indicates the user data.
+<p>The <span style="font-family: Courier New,Courier,monospace;">ecore_animator_timeline_add()</span> function is just like the <span style="font-family: Courier New,Courier,monospace;">ecore_animator_add()</span> function, except that the animator only runs for a limited time.</p></li>
+<li><span style="font-family: Courier New,Courier,monospace;">ecore_timer_add()</span> creates a timer to call the given function in the given period of time. The first parameter is the interval in seconds, and the second parameter is the given function. 
+<p>If this function returns <span style="font-family: Courier New,Courier,monospace;">ECORE_CALLBACK_RENEW</span>, the timer is rescheduled for the next interval given in the first parameter. If it returns <span style="font-family: Courier New,Courier,monospace;">ECORE_CALLBACK_CANCEL</span>, the timer is deleted automatically. The third parameter indicates the user data to pass to the function when it is called.</p></li>
+</ul>
+
+<p>The label is not used in this example, so annotate it.</p>
+
+<pre class="prettyprint">
+/* 
+   Conformant
+   Create and initialize elm_conformant
+   elm_conformant is mandatory for the base GUI to have a proper size
+   when the indicator or virtual keypad is visible
+*/
+ad-&gt;conform = elm_conformant_add(ad-&gt;win);
+elm_win_indicator_mode_set(ad-&gt;win, ELM_WIN_INDICATOR_SHOW);
+elm_win_indicator_opacity_set(ad-&gt;win, ELM_WIN_INDICATOR_OPAQUE);
+evas_object_size_hint_weight_set(ad-&gt;conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+elm_win_resize_object_add(ad-&gt;win, ad-&gt;conform);
+evas_object_show(ad-&gt;conform);
+<span class="highlight">/*
+   Label
+   Create an actual view of the base GUI
+   Modify this part to change the view
+*/
+#if 0 /* _NOT_USED */
+&nbsp;&nbsp;&nbsp;&nbsp;ad-&gt;label = elm_label_add(ad-&gt;conform);
+&nbsp;&nbsp;&nbsp;&nbsp;elm_object_text_set(ad-&gt;label, &quot;&lt;align=center&gt;Hello Tizen&lt;/align&gt;&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;evas_object_size_hint_weight_set(ad-&gt;label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+&nbsp;&nbsp;&nbsp;&nbsp;elm_object_content_set(ad-&gt;conform, ad-&gt;label);
+&nbsp;&nbsp;&nbsp;&nbsp;evas_object_show(ad-&gt;label);
+#endif
+
+/* Evas */
+Evas *evas = evas_object_evas_get(ad-&gt;conform);
+
+/* Rect */
+Evas_Object * rect = evas_object_rectangle_add(evas);
+
+evas_object_color_set(rect, 0, 0, 255, 255);
+evas_object_resize(rect, 50, 50);
+evas_object_show(rect);
+
+Evas_Object *rect2 = evas_object_rectangle_add(evas);
+evas_object_color_set(rect2, 0, 55, 0, 255);
+evas_object_resize(rect2, 50, 50);
+evas_object_show(rect2);
+
+/* Animation */
+ecore_animator_frametime_set(1. / 50);
+Ecore_Animator *anim = ecore_animator_timeline_add(5,_advance_frame, rect);
+Ecore_Animator *anim2 = ecore_animator_add(_advance_frame3, rect2);
+Ecore_Timer *timer1 = ecore_timer_add(10, _start_second_anim, rect);
+Ecore_Timer *timer2 = ecore_timer_add(5, _freeze_third_anim, rect2);
+Ecore_Timer *timer3 = ecore_timer_add(10, _thaw_third_anim, rect2);</span>
+
+/* Show the window after the base GUI is set up */
+evas_object_show(ad-&gt;win);
+</pre>
+</li>
+<li>Create the frame event callback functions by adding them to the top of the <span style="font-family: Courier New,Courier,monospace;">create_base_gui()</span> function:
+
+<ul>
+<li>The code of the <span style="font-family: Courier New,Courier,monospace;">_advance_frame()</span> timeline animation frame event callback function specifies the new size, position, and color of the square. It changes the blue square to red and grows it larger as it moves to the bottom right. The style applied to the animation is <span style="font-family: Courier New,Courier,monospace;">ECORE_POS_MAP_LINEAR</span>, which keeps the animation moving at a certain speed.</li>
+
+<li>The code of the <span style="font-family: Courier New,Courier,monospace;">_advance_frame2()</span> timeline animation frame event callback function also specifies the size, position, and color of a square. The style applied to the animation is <span style="font-family: Courier New,Courier,monospace;">ECORE_POS_MAP_BOUNCE</span>, which creates a vibration like a bouncing ball. It slows to a stop after bouncing off the ending point.</li>
+
+<li>The code of the <span style="font-family: Courier New,Courier,monospace;">_advance_frame3()</span> timeline animation frame event callback function increases the X coordinate of an object by 2 at every frame. The static variable <span style="font-family: Courier New,Courier,monospace;">x</span> is used in order to increase the X coordinate whenever this function is called. When the X coordinate becomes greater than 250, it starts back from 0. The <span style="font-family: Courier New,Courier,monospace;">evas_object_move()</span> function changes the position of an object.</li>
+</ul>
+
+<p>The <span style="font-family: Courier New,Courier,monospace;">ecore_animator_pos_map()</span> function returns the resulting value that is mapped onto the position of the current animation. The returned values range between 0 and 1. The resulting value when the animation starts is 0, and it gradually increases and eventually reaches 1 when the animation stops.</p>
+<p>The second parameter of the timeline animation event function must be passed to the first parameter of the <span style="font-family: Courier New,Courier,monospace;">ecore_animator_pos_map()</span> function. For the second parameter, enter the style of the animation. The style types are described in the <span style="font-family: Courier New,Courier,monospace;">_Ecore_Pos_Map</span> enumeration (in <a href="../../../../org.tizen.native.mobile.apireference/group__Ecore__Animator__Group.html#ga2db0d0f0f3973829c7f700e5af3e041c">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__Ecore__Animator__Group.html#ga2db0d0f0f3973829c7f700e5af3e041c">wearable</a> applications) that defines the position mappings for the animation. For the third and fourth parameter, enter the intensity and tempo of the speed change.</p>
+
+<p>The <span style="font-family: Courier New,Courier,monospace;">_advance_frame()</span> function is only valid for 5 seconds, since its runtime (specified by the first parameter of the <span style="font-family: Courier New,Courier,monospace;">ecore_animator_timeline_add()</span> function) is 5 seconds. Therefore, the <span style="font-family: Courier New,Courier,monospace;">_advance_frame()</span> function is automatically deleted after 5 seconds. The <span style="font-family: Courier New,Courier,monospace;">freeze_third_anim()</span> function is called 5 seconds after the application starts, and the <span style="font-family: Courier New,Courier,monospace;">ecore_animator_freeze()</span> function pauses the animation. The <span style="font-family: Courier New,Courier,monospace;">thaw_third_anim()</span> and <span style="font-family: Courier New,Courier,monospace;">_start_second_anim()</span> functions are called 10 seconds after the application starts, and the <span style="font-family: Courier New,Courier,monospace;">ecore_animator_thaw()</span> function restarts the animation.</p>
+
+<pre class="prettyprint">
+static Eina_Bool
+_advance_frame(void *data, double pos)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;double frame = ecore_animator_pos_map(pos, ECORE_POS_MAP_LINEAR, 12, 15);
+&nbsp;&nbsp;&nbsp;&nbsp;evas_object_resize(data, 50 * (1 + frame), 50 * (1 + frame));
+&nbsp;&nbsp;&nbsp;&nbsp;evas_object_move(data, 100 * frame, 100 * frame);
+&nbsp;&nbsp;&nbsp;&nbsp;evas_object_color_set(data, 255 * frame, 0, 255 * (1 - frame), 255);
+
+&nbsp;&nbsp;&nbsp;&nbsp;return ECORE_CALLBACK_RENEW;
+}
+
+static Eina_Bool
+_advance_frame2(void *data, double pos)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;double frame = ecore_animator_pos_map(pos, ECORE_POS_MAP_BOUNCE, 1.2, 50);
+&nbsp;&nbsp;&nbsp;&nbsp;evas_object_resize(data, 100 - (50 * frame), 100 - (50 * frame));
+&nbsp;&nbsp;&nbsp;&nbsp;evas_object_move(data, 100 * (1 - frame), 100 * (1 - frame));
+&nbsp;&nbsp;&nbsp;&nbsp;evas_object_color_set(data, 255 * (1 - frame), 0, 255 * frame, 255);
+
+&nbsp;&nbsp;&nbsp;&nbsp;return ECORE_CALLBACK_RENEW;
+}
+
+static Eina_Bool
+_advance_frame3(void * data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;static int x = 0;
+&nbsp;&nbsp;&nbsp;&nbsp;if (x &gt;= 250)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x = 0;
+&nbsp;&nbsp;&nbsp;&nbsp;evas_object_move(data, x += 2, 350);
+
+&nbsp;&nbsp;&nbsp;&nbsp;return ECORE_CALLBACK_RENEW;
+}
+
+static Eina_Bool
+_start_second_anim(void *data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;ecore_animator_frametime_set(1./10);
+&nbsp;&nbsp;&nbsp;&nbsp;ecore_animator_timeline_add (20, _advance_frame2, data);
+
+&nbsp;&nbsp;&nbsp;&nbsp;return ECORE_CALLBACK_CANCEL;
+}
+
+static Eina_Bool
+_freeze_third_anim(void *data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;ANIMATOR = %p&quot;, data);
+&nbsp;&nbsp;&nbsp;&nbsp;ecore_animator_freeze(data);
+
+&nbsp;&nbsp;&nbsp;&nbsp;return ECORE_CALLBACK_CANCEL;
+}
+
+static Eina_Bool
+_thaw_third_anim(void *data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;ecore_animator_thaw(data);
+
+&nbsp;&nbsp;&nbsp;&nbsp;return ECORE_CALLBACK_CANCEL;
+}
+</pre>
+</li>
+<li>Build and run the application.
+<p>2 squares are shown on the screen:</p>
+<ul>
+<li>The green square moves from left to right. When the green square has moved a certain distance, it restarts its movement from the left end of the screen.</li>
+<li>The blue square turns red and becomes larger as it moves to the bottom right for 5 seconds. From 5 to 10 seconds, 2 squares are paused. After 10 seconds, they are resumed, and the red square turns blue and becomes smaller as it moves to the top left for 20 seconds.
+<p align="center"><img alt="Create the project" src="../../images/graphics_animation.png" /></p>
+</li>
+</ul>
+</li>
+</ol>
+
+<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+</html>
+
diff --git a/org.tizen.gettingstarted/html/native/feature/app_graphics_n.htm b/org.tizen.gettingstarted/html/native/feature/app_graphics_n.htm
new file mode 100644 (file)
index 0000000..f54d064
--- /dev/null
@@ -0,0 +1,85 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+       <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+       <meta http-equiv="X-UA-Compatible" content="IE=9" />
+       <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
+       <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
+       <script type="text/javascript" src="../../scripts/snippet.js"></script> 
+       <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
+
+       <title>Creating Applications with Graphics and Animation</title>  
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+       <div id="profile">
+               <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/> <img alt="Wearable native" src="../../images/wearable_s_n.png"/></p>
+       </div>
+       <div id="toc_border"><div id="toc">
+        <p class="toc-title">Related Info</p>  
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.ui.practices/html/native/efl/graphical_objects_n.htm">Graphical Objects</a></li>
+                       <li><a href="../../../../org.tizen.ui.practices/html/native/efl/ecore_animation_n.htm">Ecore Animations</a></li>
+                       <li><a href="../../../../org.tizen.native.mobile.apireference/group__EFL.html">EFL API for Mobile Native</a></li>
+                       <li><a href="../../../../org.tizen.native.wearable.apireference/group__EFL__Group.html">EFL API for Wearable Native</a></li>
+        </ul>          
+       </div></div>
+</div>         
+<div id="container"><div id="contents"><div class="content">   
+<h1>Creating Applications with Graphics and Animation</h1>
+       
+<p>If you want to create applications that offer graphics features to the user, Tizen provides various options for you.</p>
+
+<p>You can draw various shapes, such as squares and polygons, on the screen, and you can animate screen elements to change their size, position, and color.</p>
+
+<p>When creating a graphics application, you can implement the following features:</p>
+
+<ul>
+<li><a href="app_graphics_square_n.htm">Squares on the canvas</a>
+<ul><li>You can draw a square on the screen.</li>
+<li>When overlaying multiple squares, you can see how their colors change due to the overlays.</li>
+</ul>
+</li>
+<li><a href="app_graphics_polygon_n.htm">Polygons on the canvas</a>
+<ul>
+<li>You can draw a triangle on the canvas.</li>
+<li>You can add and display a pentagon on the same canvas.</li>
+</ul>
+</li>
+<li><a href="app_graphics_animation_n.htm">Animations</a>
+<ul>
+<li>You can create rectangles on the screen, and use animations to change their position, size, and color.</li>
+<li>You can manage the animations to make them start at specific moments and run for a predefined duration.</li>
+</ul>
+</li>
+</ul>
+
+<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+</html>
+
diff --git a/org.tizen.gettingstarted/html/native/feature/app_graphics_polygon_n.htm b/org.tizen.gettingstarted/html/native/feature/app_graphics_polygon_n.htm
new file mode 100644 (file)
index 0000000..ccf4179
--- /dev/null
@@ -0,0 +1,150 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+       <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+       <meta http-equiv="X-UA-Compatible" content="IE=9" />
+       <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
+       <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
+       <script type="text/javascript" src="../../scripts/snippet.js"></script> 
+       <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
+
+       <title>Polygons on the Canvas</title>  
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+       <div id="profile">
+               <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/> <img alt="Wearable native" src="../../images/wearable_s_n.png"/></p>
+       </div>
+       <div id="toc_border"><div id="toc">
+        <p class="toc-title">Related Info</p>          
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.ui.practices/html/native/efl/graphical_objects_n.htm">Graphical Objects</a></li>
+                       <li><a href="../../../../org.tizen.ui.practices/html/native/efl/ecore_animation_n.htm">Ecore Animations</a></li>
+                       <li><a href="../../../../org.tizen.native.mobile.apireference/group__EFL.html">EFL API for Mobile Native</a></li>
+                       <li><a href="../../../../org.tizen.native.wearable.apireference/group__EFL__Group.html">EFL API for Wearable Native</a></li>
+        </ul>          
+       </div></div>
+</div>         
+<div id="container"><div id="contents"><div class="content">   
+<h1>Polygons on the Canvas</h1>
+       
+<p>You can draw various polygons, such as triangles and pentagons, on a canvas. </p>
+
+<p>The following example uses the same <strong>Basic UI</strong> template as the square drawing example. For more information on how to create the project with the template, see <a href="app_graphics_square_n.htm">Squares on the Canvas</a>.</p>
+
+<p>To implement polygons in an application:</p>
+<ol>
+<li>Create a new project and specify the project name as <strong>DrawPolygon</strong>.</li>
+<li>After the project is created, open the <span style="font-family: Courier New,Courier,monospace;">.c</span> source file in the <span style="font-family: Courier New,Courier,monospace;">src</span> folder and add the new code to the <span style="font-family: Courier New,Courier,monospace;">create_base_gui()</span> function to create a canvas and a triangle.
+
+<p>The following functions are used to create the triangle:</p>
+<ul>
+<li><span style="font-family: Courier New,Courier,monospace;">evas_object_polygon_add()</span> creates a polygon object on a canvas.</li>
+<li><span style="font-family: Courier New,Courier,monospace;">evas_object_polygon_point_add()</span> adds point coordinates to a polygon object. A polygon must have at least 3 points. The first parameter indicates the polygon object, and the second and third parameters indicate the X and Y coordinates.</li>
+<li><span style="font-family: Courier New,Courier,monospace;">evas_object_color_set()</span> specifies a color for a shape. The parameters are Red, Green, Blue, and semi-transparency.</li>
+</ul>
+
+<p>The label is not used in this example, so annotate it.</p>
+
+<pre class="prettyprint">
+/*
+   Conformant
+   Create and initialize elm_conformant
+   elm_conformant is mandatory for the base GUI to have a proper size
+   when the indicator or virtual keypad is visible
+*/
+ad-&gt;conform = elm_conformant_add(ad-&gt;win);
+elm_win_indicator_mode_set(ad-&gt;win, ELM_WIN_INDICATOR_SHOW);
+elm_win_indicator_opacity_set(ad-&gt;win, ELM_WIN_INDICATOR_OPAQUE);
+evas_object_size_hint_weight_set(ad-&gt;conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+elm_win_resize_object_add(ad-&gt;win, ad-&gt;conform);
+evas_object_show(ad-&gt;conform);
+<span class="highlight">/*
+   Label
+   Create an actual view of the base GUI
+   Modify this part to change the view
+*/
+#if 0 /* _NOT_USED */
+&nbsp;&nbsp;&nbsp;&nbsp;ad-&gt;label = elm_label_add(ad-&gt;conform);
+&nbsp;&nbsp;&nbsp;&nbsp;elm_object_text_set(ad-&gt;label, &quot;&lt;align=center&gt;Hello Tizen&lt;/align&gt;&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;evas_object_size_hint_weight_set(ad-&gt;label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+&nbsp;&nbsp;&nbsp;&nbsp;elm_object_content_set(ad-&gt;conform, ad-&gt;label);
+#endif
+
+/* Canvas */
+Evas* canvas = evas_object_evas_get(ad-&gt;win);
+
+/* Polygon triangle */
+Evas_Object *polygon = evas_object_polygon_add(canvas);
+evas_object_polygon_point_add(polygon, 20, 50);
+evas_object_polygon_point_add(polygon, 170, 150);
+evas_object_polygon_point_add(polygon, 20, 250);
+evas_object_color_set(polygon, 255, 200, 0, 255);
+evas_object_show(polygon);</span>
+
+/* Show the window after the base GUI is set up */
+evas_object_show(ad-&gt;win);
+</pre>
+</li>
+<li>Build and run the application.
+<p>A yellow triangle is displayed on the screen.</p>
+<p align="center"><img alt="Create the project" src="../../images/graphics_triangle.png" /></p>
+</li>
+<li>Adding 4 points to a polygon object creates a square, while adding 5 points creates a pentagon.
+<p>Create a pentagon by adding new code to the <span style="font-family: Courier New,Courier,monospace;">create_base_gui()</span> function.</p>
+
+<pre class="prettyprint">
+/* Polygon triangle */
+Evas_Object *polygon = evas_object_polygon_add(canvas);
+evas_object_polygon_point_add(polygon, 20, 50);
+evas_object_polygon_point_add(polygon, 170, 150);
+evas_object_polygon_point_add(polygon, 20, 250);
+evas_object_color_set(polygon, 255, 200, 0, 255);
+evas_object_show(polygon);
+
+<span class="highlight">/* Polygon -Pentagon */
+polygon = evas_object_polygon_add(canvas);
+evas_object_polygon_point_add(polygon, 360, 50);
+evas_object_polygon_point_add(polygon, 460, 130);
+evas_object_polygon_point_add(polygon, 410, 230);
+evas_object_polygon_point_add(polygon, 310, 230);
+evas_object_polygon_point_add(polygon, 260, 130);
+evas_object_color_set(polygon, 255, 128, 128, 255);
+evas_object_show(polygon);</span>
+</pre>
+</li>
+<li>Build and run the application again.
+<p>A pink pentagon is displayed next to the yellow triangle.</p>
+<p align="center"><img alt="Create the project" src="../../images/graphics_pentagon.png" /></p>
+</li>
+</ol>
+
+<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+</html>
+
diff --git a/org.tizen.gettingstarted/html/native/feature/app_graphics_square_n.htm b/org.tizen.gettingstarted/html/native/feature/app_graphics_square_n.htm
new file mode 100644 (file)
index 0000000..96987cb
--- /dev/null
@@ -0,0 +1,152 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+       <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+       <meta http-equiv="X-UA-Compatible" content="IE=9" />
+       <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
+       <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
+       <script type="text/javascript" src="../../scripts/snippet.js"></script> 
+       <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
+
+       <title>Squares on the Canvas</title>  
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+       <div id="profile">
+               <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/> <img alt="Wearable native" src="../../images/wearable_s_n.png"/></p>
+       </div>
+       <div id="toc_border"><div id="toc">
+        <p class="toc-title">Related Info</p>          
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.ui.practices/html/native/efl/graphical_objects_n.htm">Graphical Objects</a></li>
+                       <li><a href="../../../../org.tizen.ui.practices/html/native/efl/ecore_animation_n.htm">Ecore Animations</a></li>
+                       <li><a href="../../../../org.tizen.native.mobile.apireference/group__EFL.html">EFL API for Mobile Native</a></li>
+                       <li><a href="../../../../org.tizen.native.wearable.apireference/group__EFL__Group.html">EFL API for Wearable Native</a></li>
+        </ul>          
+       </div></div>
+</div>         
+<div id="container"><div id="contents"><div class="content">   
+<h1>Squares on the Canvas</h1>
+       
+<p>To handle simple graphics elements in your application, start by learning how to draw a square on the screen. When you add multiple squares that overlap each other, you can see how their colors change due to the semi-transparent colors and overlays.</p>
+
+<p>To draw squares on the screen, you need to use a canvas. In EFL, the Evas library provides the canvas. All shapes drawn on Evas are created as Evas objects.</p>
+
+<p>The following example is created using the <strong>Basic UI</strong> template as a source code. To create a new project:</p>
+<ol>
+<li>In the Tizen IDE menu, select <strong>File &gt; New &gt; Tizen Native Project</strong>.
+<p align="center"><img alt="Open the Project Wizard" src="../../images/graphics_project.png" /></p></li>
+<li>In the Project Wizard, select <strong>Template &gt; MOBILE-[version] &gt; Basic UI</strong>. </li>
+<li>Enter <strong>DrawRect</strong> in the <strong>Project name</strong> field.
+<p align="center"><img alt="Create the project" src="../../images/graphics_project_create.png" /></p></li>
+<li>Click <strong>Finish</strong>.</li>
+</ol>
+
+<p>After the project is created, modify the template to create the application with 3 squares:</p>
+
+<ol>
+<li>Open the <span style="font-family: Courier New,Courier,monospace;">.c</span> source file in the <span style="font-family: Courier New,Courier,monospace;">src</span> folder and add the new code to the <span style="font-family: Courier New,Courier,monospace;">create_base_gui()</span> function.
+
+<p>The following functions are used to create the squares:</p>
+<ul>
+<li><span style="font-family: Courier New,Courier,monospace;">evas_object_evas_get()</span> retrieves the Evas handler from the window object, which is embedded into the Evas object parameter.</li>
+<li><span style="font-family: Courier New,Courier,monospace;">evas_object_rectangle_add()</span> creates a rectangle object on a canvas.</li>
+<li><span style="font-family: Courier New,Courier,monospace;">evas_object_color_set()</span> specifies a color for a shape. The parameters are Red, Green, Blue, and semi-transparency. For example, entering <span style="font-family: Courier New,Courier,monospace;">255, 0, 0, 192</span> creates a semi-transparent red.</li>
+<li><span style="font-family: Courier New,Courier,monospace;">evas_object_move()</span> moves objects to a given location. The first parameter indicates the object, and the second and third parameters indicate the horizontal and vertical position.</li>
+<li><span style="font-family: Courier New,Courier,monospace;">evas_object_resize()</span> changes the size of the object. The first parameter indicates the object, and the second and third parameters indicates the width and height.</li>
+</ul>
+
+<p>The label is not used in this example, so annotate it.</p>
+
+<pre class="prettyprint">
+/* 
+   Conformant
+   Create and initialize elm_conformant
+   elm_conformant is mandatory for the base GUI to have a proper size
+   when the indicator or virtual keypad is visible
+*/
+ad-&gt;conform = elm_conformant_add(ad-&gt;win);
+elm_win_indicator_mode_set(ad-&gt;win, ELM_WIN_INDICATOR_SHOW);
+elm_win_indicator_opacity_set(ad-&gt;win, ELM_WIN_INDICATOR_OPAQUE);
+evas_object_size_hint_weight_set(ad-&gt;conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+elm_win_resize_object_add(ad-&gt;win, ad-&gt;conform);
+evas_object_show(ad-&gt;conform);
+<span class="highlight">/*
+   Label
+   Create an actual view of the base GUI
+   Modify this part to change the view
+*/
+#if 0 /* _NOT_USED */
+&nbsp;&nbsp;&nbsp;&nbsp;ad-&gt;label = elm_label_add(ad-&gt;conform);
+&nbsp;&nbsp;&nbsp;&nbsp;elm_object_text_set(ad-&gt;label, &quot;&lt;align=center&gt;Hello Tizen&lt;/align&gt;&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;evas_object_size_hint_weight_set(ad-&gt;label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+&nbsp;&nbsp;&nbsp;&nbsp;elm_object_content_set(ad-&gt;conform, ad-&gt;label);
+#endif
+
+/* Evas */
+Evas  *evas = evas_object_evas_get(ad-&gt;conform);
+
+/* Add a rectangle to the given Evas */
+Evas_Object *rect = evas_object_rectangle_add(evas);
+/* Set the general/main color of the Evas object to the given one */
+evas_object_color_set(rect, 255, 0, 0,192);
+/* Move the Evas object to the given location inside its canvas viewpoint */
+evas_object_move(rect, 50, 50);
+/* Change the size of the Evas object */
+evas_object_resize(rect, 200, 200);
+/* Make the Evas object visible */
+evas_object_show(rect);
+
+Evas  *evas2 = evas_object_evas_get(ad-&gt;conform);
+Evas_Object *rect2 = evas_object_rectangle_add(evas2);
+evas_object_color_set(rect2, 0, 255, 0, 192);
+evas_object_move(rect2, 200, 50);
+evas_object_resize(rect2, 200, 200);
+evas_object_show(rect2);
+
+Evas *evas3 = evas_object_evas_get(ad-&gt;conform);
+Evas_Object *rect3 = evas_object_rectangle_add(evas3);
+evas_object_color_set(rect3, 0, 0, 255, 192);
+evas_object_move(rect3, 125, 200);
+evas_object_resize(rect3, 200, 200);
+evas_object_show(rect3);</span>
+
+/* Show the window after the base GUI is set up */
+evas_object_show(ad-&gt;win);
+</pre>
+</li>
+<li>Build and run the application.
+<p>The 3 squares are displayed on the screen. The colors of the overlaid areas change to their intermediate colors because semi-transparency has been applied.</p>
+<p align="center"><img alt="Create the project" src="../../images/graphics_squares.png" /></p>
+</li>
+</ol>
+
+<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+</html>
+
diff --git a/org.tizen.gettingstarted/html/native/feature/app_multimedia_audio_n.htm b/org.tizen.gettingstarted/html/native/feature/app_multimedia_audio_n.htm
new file mode 100644 (file)
index 0000000..ec1c677
--- /dev/null
@@ -0,0 +1,506 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+       <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+       <meta http-equiv="X-UA-Compatible" content="IE=9" />
+       <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
+       <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
+       <script type="text/javascript" src="../../scripts/snippet.js"></script> 
+       <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
+
+       <title>Audio Playback and Recording</title>  
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+       <div id="profile">
+               <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/> <img alt="Wearable native" src="../../images/wearable_s_n.png"/></p>
+       </div>
+       <div id="toc_border"><div id="toc">
+               <p class="toc-title">Content</p>
+               <ul class="toc">
+                       <li><a href="#audio_play">Playing Audio</a></li>
+                       <li><a href="#audio_record">Recording Audio</a></li>
+               </ul>
+        <p class="toc-title">Related Info</p>          
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.guides/html/native/multimedia/multimedia_guide_n.htm">Multimedia Guides</a></li>
+                       <li><a href="../../../../org.tizen.tutorials/html/native/multimedia/multimedia_tutorials_n.htm">Multimedia Tutorials</a></li>
+                       <li><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__FRAMEWORK.html">Multimedia API for Mobile Native</a></li>
+                       <li><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__FRAMEWORK.html">Multimedia API for Wearable Native</a></li>
+        </ul>          
+       </div></div>
+</div>         
+<div id="container"><div id="contents"><div class="content">   
+<h1>Audio Playback and Recording</h1>
+       
+<p>Tizen enables your application to manage audio content. It also provides control functions for using audio resources. The resources can be media files stored on the device or streamed from a server through the network.</p>
+
+<p>Tizen supports various audio formats, including MP3, AAC, WMA, M4A, 3GA, WAV, and AMR. The available formats depend on the target device.</p>
+
+<h2 id="audio_play">Playing Audio</h2>
+
+<p>To play audio files stored on the device, use the Player API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__PLAYER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__PLAYER__MODULE.html">wearable</a> applications). The Player API also provides interfaces for getting content information and controlling operations, such as playback, pause, resume, and stop.</p>
+
+<p>The following figure illustrates the player state changes.</p>
+
+<p class="figure">Figure: Player state changes</p>
+<p align="center"><img src="../../images/player_state_changes_n.png" alt="Player state changes" /></p>
+
+<h3 id="player_init">Initializing the Audio Player</h3>
+
+<p>You can create a player by calling the <span style="font-family: Courier New,Courier,monospace;">player_create()</span> function, which returns a player handle on success. You need the player handle in setting which files to play and with which configuration. You also have to register appropriate callback functions to handle notifications about interruptions, ends, and errors during playback.</p>
+
+<p>To prepare the player for playback, and to define the necessary callbacks to handle playback events:</p>
+
+<ol>
+<li><p>To use the data types and functions of the Player API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__PLAYER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__PLAYER__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;player.h&gt;</span> header file in your application:</p>
+<pre class="prettyprint">
+#include &lt;player.h&gt;
+</pre>
+</li>
+<li>Define a variable for the player handle, and create the handle:
+<pre class="prettyprint">
+struct appdata {
+&nbsp;&nbsp;&nbsp;&nbsp;player_h player;
+};
+typedef struct appdata appdata_s;
+
+static void
+init_base_player(appdata_s *ad)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;int error_code = 0;
+&nbsp;&nbsp;&nbsp;&nbsp;error_code = player_create(&amp;ad-&gt;player);
+&nbsp;&nbsp;&nbsp;&nbsp;if (error_code != PLAYER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;failed to create&quot;);
+
+&nbsp;&nbsp;&nbsp;&nbsp;/*
+&nbsp;&nbsp;&nbsp;&nbsp;   Perform more playback configuration, such as setting callbacks,
+&nbsp;&nbsp;&nbsp;&nbsp;   setting the source file URI, and preparing the player
+&nbsp;&nbsp;&nbsp;&nbsp;*/
+}
+</pre>
+</li>
+<li>Set configurations, such as the source file URI.
+<p>To set a specific path for audio files to play, retrieve the default internal storage paths. To access and use internal storage, include the <span style="font-family: Courier New,Courier,monospace;">&lt;storage.h&gt;</span> header file in your application.</p>
+<pre class="prettyprint">
+#include &lt;storage.h&gt;
+
+#define MP3_SAMPLE &quot;SampleAudio.mp3&quot;;
+
+int internal_storage_id;
+char *audio_storage_path = NULL;
+char *audio_path = NULL;
+
+static bool
+storage_cb(int storage_id, storage_type_e type, storage_state_e state, const char *path, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;if (type == STORAGE_TYPE_INTERNAL) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;internal_storage_id = storage_id;
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;
+&nbsp;&nbsp;&nbsp;&nbsp;}
+
+&nbsp;&nbsp;&nbsp;&nbsp;return true;
+}
+
+void
+_get_storage_path()
+{
+&nbsp;&nbsp;&nbsp;&nbsp;int error_code = 0;
+&nbsp;&nbsp;&nbsp;&nbsp;char *path = NULL;
+
+&nbsp;&nbsp;&nbsp;&nbsp;error_code = storage_foreach_device_supported(storage_cb, NULL);
+&nbsp;&nbsp;&nbsp;&nbsp;error_code = storage_get_directory(internal_storage_id, STORAGE_DIRECTORY_MUSIC, &amp;path);
+&nbsp;&nbsp;&nbsp;&nbsp;if (error_code != STORAGE_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;audio_storage_path = strdup(path);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;free(path);
+&nbsp;&nbsp;&nbsp;&nbsp;}
+
+&nbsp;&nbsp;&nbsp;&nbsp;error_code = storage_get_directory(internal_storage_id, STORAGE_DIRECTORY_VIDEOS, &amp;path);
+&nbsp;&nbsp;&nbsp;&nbsp;if (error_code != STORAGE_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;video_storage_path = strdup(path);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;free(path);
+&nbsp;&nbsp;&nbsp;&nbsp;}
+}
+
+void
+_set_test_path()
+{
+&nbsp;&nbsp;&nbsp;&nbsp;int path_len = 0;
+
+&nbsp;&nbsp;&nbsp;&nbsp;path_len = strlen(audio_storage_path) + strlen(MP3_SAMPLE) + 1;
+&nbsp;&nbsp;&nbsp;&nbsp;audio_path = malloc(path_len);
+&nbsp;&nbsp;&nbsp;&nbsp;memset(audio_path, 0x0, path_len);
+
+&nbsp;&nbsp;&nbsp;&nbsp;strncat(audio_path, audio_storage_path, strlen(audio_storage_path));
+&nbsp;&nbsp;&nbsp;&nbsp;strncat(audio_path, MP3_SAMPLE, strlen(MP3_SAMPLE));
+}
+</pre>
+<p>Once the storage path is set, you can specify the audio file to play using the <span style="font-family: Courier New,Courier,monospace;">player_set_uri()</span> function with the player handle:</p>
+<pre class="prettyprint">
+error_code = player_set_uri(ad-&gt;player, audio_path);
+if (error_code != PLAYER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;failed to set URI: error code = %d&quot;, error_code);
+</pre>
+</li>
+<li>Create UI buttons and add callback functions for your application to control the playback:
+<pre class="prettyprint">
+static void
+create_base_gui(appdata_s *ad)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;/* Create a window */
+&nbsp;&nbsp;&nbsp;&nbsp;/* Create a button */
+&nbsp;&nbsp;&nbsp;&nbsp;/* Add a callback to the button */
+&nbsp;&nbsp;&nbsp;&nbsp;evas_object_smart_callback_add(button_init, &quot;clicked&quot;, init_base_player, ad);
+&nbsp;&nbsp;&nbsp;&nbsp;evas_object_smart_callback_add(button_end, &quot;clicked&quot;, release_base_player, ad);
+&nbsp;&nbsp;&nbsp;&nbsp;/* Create an Evas image object for the video surface */
+}
+
+static void
+app_create(void *data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;appdata_s *ad = data;
+&nbsp;&nbsp;&nbsp;&nbsp;create_base_gui(ad);
+
+&nbsp;&nbsp;&nbsp;&nbsp;return true;
+}
+</pre>
+</li>
+<li>Register callback functions.
+<p>To receive notifications, register and define appropriate callback functions for interruption, playback ending, and error events:</p>
+<ul>
+<li>Interruption notifications:
+<pre class="prettyprint">
+static void
+_player_interrupted_cb(player_interrupted_code_e code, void *data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;appdata_s *ad = data;
+&nbsp;&nbsp;&nbsp;&nbsp;player_state_e state;
+
+&nbsp;&nbsp;&nbsp;&nbsp;/* All the interrupted_code_e is deprecated from Tizen 3.0 except PLAYER_INTERRUPTED_BY_RESOURCE_CONFLICT */
+&nbsp;&nbsp;&nbsp;&nbsp;player_get_state(ad-&gt;player, &amp;state);
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;current player state = %d&quot;, state);
+&nbsp;&nbsp;&nbsp;&nbsp;/* If the state is PLAYER_STATE_PAUSED, update the UI (for example, button) */
+}
+
+static void
+init_base_player(appdata_s *ad)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;/* Set an interruption callback if the application wants to know the reason */
+&nbsp;&nbsp;&nbsp;&nbsp;error_code = player_set_interrupted_cb(ad-&gt;player, _player_interrupted_cb, ad);
+&nbsp;&nbsp;&nbsp;&nbsp;if (error_code != PLAYER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;failed to set interrupt cb&quot;);
+}
+</pre>
+</li>
+<li>End notifications:
+<pre class="prettyprint">
+static void
+_player_completed_cb(void *data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;Playback End&quot;);
+}
+
+static void
+init_base_player(appdata_s *ad)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;/* Set a completed callback if the application wants to know when the playback ends */
+&nbsp;&nbsp;&nbsp;&nbsp;error_code = player_set_completed_cb(ad-&gt;player, _player_completed_cb, ad);
+
+&nbsp;&nbsp;&nbsp;&nbsp;if (error_code != PLAYER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;failed to set completed cb&quot;);
+}
+</pre>
+</li>
+<li>Error notifications:
+<pre class="prettyprint">
+static void
+_player_error_cb(int error_code, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;playback failed, error = %x&quot;, error_code);
+}
+
+static void
+init_base_player(appdata_s *ad)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;error_code = player_set_error_cb(ad-&gt;player, _player_error_cb, NULL);
+&nbsp;&nbsp;&nbsp;&nbsp;if (error_code != PLAYER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;failed to set error cb&quot;);
+}
+</pre>
+</li>
+</ul>
+</li>
+</ol>
+
+<h3 id="playback">Managing Audio Playback</h3> 
+
+<p>When the player is created, it is in the <span style="font-family: Courier New,Courier,monospace;">PLAYER_STATE_IDLE</span> state. To start playback, it must be in the <span style="font-family: Courier New,Courier,monospace;">PLAYER_STATE_READY</span> state.</p>
+
+<p>To manage playback:</p>
+
+<ol>
+<li>
+<p>Get the player ready for playback by calling the <span style="font-family: Courier New,Courier,monospace;">player_prepare()</span> function, which changes the player state from <span style="font-family: Courier New,Courier,monospace;">PLAYER_STATE_IDLE</span> to <span style="font-family: Courier New,Courier,monospace;">PLAYER_STATE_READY</span>:</p>
+<pre class="prettyprint">
+error_code = player_prepare(ad-&gt;player);
+if (error_code != PLAYER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;failed to prepare player: error code = %d&quot;, error_code);
+</pre>
+</li>
+<li>
+<p>Once the player is ready, start playing the audio file using the <span style="font-family: Courier New,Courier,monospace;">player_start()</span> function. The player state changes to <span style="font-family: Courier New,Courier,monospace;">PLAYER_STATE_PLAYING</span>.</p>
+<pre class="prettyprint">
+error_code = player_start(ad-&gt;player);
+if (error_code != PLAYER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;failed to start player: error code = %d&quot;, error_code);
+</pre>
+</li>
+<li>
+<p>Stop playback by calling the <span style="font-family: Courier New,Courier,monospace;">player_stop()</span> function. The player state changes back to <span style="font-family: Courier New,Courier,monospace;">PLAYER_STATE_READY</span>.</p>
+<p>By calling the <span style="font-family: Courier New,Courier,monospace;">player_pause()</span> function, you can pause playback and change the player state to <span style="font-family: Courier New,Courier,monospace;">PLAYER_STATE_PAUSED</span>.</p>
+</li>
+</ol>
+
+<h3 id="player_terminate">Terminating the Audio Player</h3>
+
+<p>When you are finished using the player, release all the resources allocated to it:</p>
+<ol>
+<li>Reset the player by calling the <span style="font-family: Courier New,Courier,monospace;">player_unprepare()</span> function, which changes the player state to <span style="font-family: Courier New,Courier,monospace;">PLAYER_STATE_IDLE</span>.</li>
+<li>Destroy the player handle using the <span style="font-family: Courier New,Courier,monospace;">player_destroy()</span> function.</li>
+</ol>
+
+<pre class="prettyprint">
+error_code = player_stop(ad-&gt;player);
+error_code = player_unprepare(ad-&gt;player);
+error_code = player_destroy(ad-&gt;player);
+
+if (error_code != PLAYER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;fail to destroy player: error code = %d&quot;, error_code);
+</pre>
+
+<h2 id="audio_record">Recording Audio</h2>
+
+<p>To record audio, use the Recorder API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__RECORDER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__RECORDER__MODULE.html">wearable</a> applications). The main features of the Recorder API include:</p>
+<ul>
+<li>Basic recording functionalities: record, stop, pause, cancel, and mute</li>
+<li>Setting the maximum recording time and size</li>
+<li>Controlling the system volume level</li>
+</ul>
+<p>The supported formats in audio recording are M4A and AMR.</p>
+<p>The following figure illustrates the general recorder state changes.</p>
+
+<p class="figure">Figure: Recorder state changes</p>
+<p align="center"><img src="../../images/recorder_state_changes_n.png" alt="Recorder state changes" /></p>
+
+<h3 id="recorder_init">Initializing the Audio Recorder</h3>
+
+<p>To prepare the recorder for the recording session, and to define the necessary callbacks to handle recording events:</p>
+
+<ol>
+<li>
+<p>To use the data types and functions of the Recorder API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__RECORDER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__RECORDER__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;recorder.h&gt;</span> header file in your application:</p>
+<pre class="prettyprint">
+#include &lt;recorder.h&gt;
+</pre>
+</li>
+<li>
+<p>Create an audio recorder by calling the <span style="font-family: Courier New,Courier,monospace;">recorder_create_audiorecorder()</span> function. On success, the function returns a handle for the audio recorder and the state of the audio recorder is set as <span style="font-family: Courier New,Courier,monospace;">RECORDER_STATE_CREATED</span>.</p>
+<pre class="prettyprint">
+static recorder_h g_recorder;
+
+/* Create the audio recorder handle */
+int error_code = recorder_create_audiorecorder(&amp;g_recorder);
+if (error_code != RECORDER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;fail to create an Audio Recorder: error code = %d&quot;, error_code);
+</pre>
+</li>
+<li>
+<p>Register appropriate callback functions to receive notifications about recorder state changes or reaching the recording limit:
+</p>
+
+<ul>
+<li><p>The following example code implements a simple callback that prints the previous and current audio recorder states:</p>
+<pre class="prettyprint">
+error_code = recorder_set_state_changed_cb(g_recorder, _state_changed_cb, NULL);
+
+static void
+_state_changed_cb(recorder_state_e previous, recorder_state_e current, bool by_policy, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;_recorder_state_changed_cb (prev: %d, curr: %d)\n&quot;, previous, current);
+}
+</pre>
+</li>
+<li>
+<p>The following example code implements a simple callback that prints a notification about reaching the recording limit:</p>
+<pre class="prettyprint">
+error_code = recorder_set_recording_limit_reached_cb(g_recorder, _recorder_recording_limit_reached_cb, NULL);
+
+static void
+_recorder_recording_limit_reached_cb(recorder_recording_limit_type_e type, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;Recording limit reached: %d\n&quot;, type);
+}
+</pre>
+</li></ul>
+</li>
+<li>
+<p>You can set various attributes of audio recording, such as audio codec, file format, file name, file size limit, encoder bitrate, audio device, and sample rate:</p>
+<ul>
+<li>Set the audio codec for encoding the audio stream using the <span style="font-family: Courier New,Courier,monospace;">recorder_set_audio_encoder()</span> function. The possible audio codec values are defined in the <span style="font-family: Courier New,Courier,monospace;">recorder_audio_codec_e</span> enumeration (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__RECORDER__MODULE.html#ga431bd585d929f13a71ecefd58ed17d46">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__RECORDER__MODULE.html#ga431bd585d929f13a71ecefd58ed17d46">wearable</a> applications).
+<pre class="prettyprint">
+#define FILENAME_PREFIX &quot;AUDIO&quot;
+struct tm localtime = {0};
+time_t rawtime = time(NULL);
+char filename[256] = {&#39;\0&#39;};
+size_t size;
+
+/* Set the audio encoder */
+error_code = recorder_set_audio_encoder(g_recorder, RECORDER_AUDIO_CODEC_AAC);
+</pre>
+</li>
+<li>Use the <span style="font-family: Courier New,Courier,monospace;">recorder_set_file_format()</span> function to set the correct file format based on the audio codec. For example, if you set the codec to AAC, set the file format to 3GP. The possible file format values are defined in the <span style="font-family: Courier New,Courier,monospace;">recorder_file_format_e</span> enumeration (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__RECORDER__MODULE.html#ga7d3dbf7b0b3ef68101562b89e81ecf1e">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__RECORDER__MODULE.html#ga7d3dbf7b0b3ef68101562b89e81ecf1e">wearable</a> applications).
+<pre class="prettyprint">
+/* Set the file format according to the audio encoder */
+error_code = recorder_set_file_format(g_recorder, RECORDER_FILE_FORMAT_3GP);
+</pre>
+</li>
+<li>Based on the file format, define the correct file name, and set it using the <span style="font-family: Courier New,Courier,monospace;">recorder_set_filename()</span> function. The parameters are the full path and the name of the file for the recorded audio data to be saved.
+<pre class="prettyprint">
+/* Create the file name */
+if (localtime_r(&amp;rawtime, &amp;localtime) != NULL) {
+&nbsp;&nbsp;&nbsp;&nbsp;size = snprintf(filename, sizeof(filename), &quot;%s/%s-%04i-%02i-%02i_%02i:%02i:%02i.3gp&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app_get_data_path(), FILENAME_PREFIX,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;localtime.tm_year + 1900, localtime.tm_mon + 1, localtime.tm_mday,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;localtime.tm_hour, localtime.tm_min, localtime.tm_sec);
+} else {
+&nbsp;&nbsp;&nbsp;&nbsp;/* Error handling */
+}
+
+/* Set the full path and file name */
+/* Set the file name according to the file format */
+error_code = recorder_set_filename(g_recorder, filename);
+</pre>
+</li>
+<li>Set the file size limit, encoder bitrate, audio device, and sample rate. The possible audio device values are defined in the <span style="font-family: Courier New,Courier,monospace;">recorder_audio_device_e</span> enumeration (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__RECORDER__MODULE.html#ga0e73accfbca1b992c29a2128acebbbf3">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__RECORDER__MODULE.html#ga0e73accfbca1b992c29a2128acebbbf3">wearable</a> applications).
+<pre class="prettyprint">
+/* Set the maximum file size to 1024 (kB) */
+error_code = recorder_attr_set_size_limit(g_recorder, 1024);
+
+/* Set the audio encoder bitrate */
+error_code = recorder_attr_set_audio_encoder_bitrate(g_recorder, 28800);
+
+/* Set the audio device to microphone */
+error_code = recorder_attr_set_audio_device(g_recorder, RECORDER_AUDIO_DEVICE_MIC);
+
+/* Set the audio sample rate */
+error_code = recorder_attr_set_audio_samplerate(g_recorder, 44100);
+</pre>
+</li>
+</ul>
+</li>
+</ol>
+
+<h3 id="audio_rec">Managing Audio Recording</h3>
+
+<p>When the recorder handle is created, the audio recorder is in the <span style="font-family: Courier New,Courier,monospace;">RECORDER_STATE_CREATED</span> state. To start recording, the audio recorder must be in the <span style="font-family: Courier New,Courier,monospace;">RECORDER_STATE_READY</span> state.</p>
+
+<p>To manage playback:</p>
+
+<ol>
+<li>
+<p>Change the player state from <span style="font-family: Courier New,Courier,monospace;">RECORDER_STATE_CREATED</span> to <span style="font-family: Courier New,Courier,monospace;">RECORDER_STATE_READY</span> by calling the <span style="font-family: Courier New,Courier,monospace;">recorder_prepare()</span> function:</p>
+<pre class="prettyprint">
+error_code = recorder_prepare(g_recorder);
+</pre>
+</li>
+<li>
+<p>Once the recorder is ready, start audio recording using the <span style="font-family: Courier New,Courier,monospace;">recorder_start()</span> function. The recorder state changes to <span style="font-family: Courier New,Courier,monospace;">RECORDER_STATE_RECORDING</span>.</p>
+<pre class="prettyprint">
+error_code = recorder_start(g_recorder);
+</pre>
+</li>
+<li>
+<p>In the <span style="font-family: Courier New,Courier,monospace;">RECORDER_STATE_RECORDING</span> state, you can pause or stop recording:</p>
+<ul>
+<li>To pause recording, call the <span style="font-family: Courier New,Courier,monospace;">recorder_pause()</span> function that changes the recorder state to <span style="font-family: Courier New,Courier,monospace;">RECORDER_STATE_PAUSED</span>. In this state, you can resume or stop recording. To resume, call the <span style="font-family: Courier New,Courier,monospace;">recorder_start()</span> function.
+<pre class="prettyprint">
+error_code = recorder_pause(g_recorder);
+</pre>
+</li>
+<li>
+<p>You can stop recording either in the <span style="font-family: Courier New,Courier,monospace;">RECORDER_STATE_RECORDING</span> or <span style="font-family: Courier New,Courier,monospace;">RECORDER_STATE_PAUSED</span> state. In stopping recording, you can save or discard the recorded data. To save the recorded data, use the <span style="font-family: Courier New,Courier,monospace;">recorder_commit()</span> function, and to discard, use the <span style="font-family: Courier New,Courier,monospace;">recorder_cancel()</span> function. Both functions set the audio recorder state to <span style="font-family: Courier New,Courier,monospace;">RECORDER_STATE_READY</span>.</p>
+<p>The following example code first checks the audio recorder state, and then stops the recorder and saves the data to a file:</p>
+<pre class="prettyprint">
+/* Check the audio recorder state */
+static bool
+_recorder_expect_state(recorder_h recorder, recorder_state_e expected_state)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;recorder_state_e state;
+&nbsp;&nbsp;&nbsp;&nbsp;int error_code = recorder_get_state(recorder, &amp;state);
+
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;recorder state = %d, expected recorder state = %d&quot;, state, expected_state);
+&nbsp;&nbsp;&nbsp;&nbsp;if (state == expected_state)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return TRUE;
+
+&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;
+}
+
+/* Stop the recorder and save the recorded data to a file */
+if (_recorder_expect_state(g_recorder, RECORDER_STATE_RECORDING) || _recorder_expect_state(g_recorder, RECORDER_STATE_PAUSED)) {
+&nbsp;&nbsp;&nbsp;&nbsp;error_code = recorder_commit(g_recorder);
+&nbsp;&nbsp;&nbsp;&nbsp;if (error_code != RECORDER_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;error code = %d&quot;, error_code);
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;
+&nbsp;&nbsp;&nbsp;&nbsp;}
+}
+</pre></li>
+</ul>
+</li>
+</ol>
+
+<h3 id="recorder_terminate">Terminating the Audio Recorder</h3> 
+
+<p>After you finish audio recording, release all the resources allocated to the audio recorder:</p>
+<ol>
+<li>Reset the audio recorder by calling the <span style="font-family: Courier New,Courier,monospace;">recorder_unprepare()</span> function, which changes the recorder state from <span style="font-family: Courier New,Courier,monospace;">RECORDER_STATE_READY</span> to <span style="font-family: Courier New,Courier,monospace;">RECORDER_STATE_CREATED</span>.</li>
+<li>Release the audio recorder resources by calling the <span style="font-family: Courier New,Courier,monospace;">recorder_destroy()</span> function. The recorder state changes to <span style="font-family: Courier New,Courier,monospace;">RECORDER_STATE_NONE</span>.</li>
+</ol>
+<pre class="prettyprint">
+error_code = recorder_unprepare(g_recorder);
+error_code = recorder_destroy(g_recorder);
+
+if (error_code != RECORDER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;fail to destroy recorder: error code = %d&quot;, error_code);
+</pre>
+
+<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+</html>
+
diff --git a/org.tizen.gettingstarted/html/native/feature/app_multimedia_camera_n.htm b/org.tizen.gettingstarted/html/native/feature/app_multimedia_camera_n.htm
new file mode 100644 (file)
index 0000000..426270c
--- /dev/null
@@ -0,0 +1,346 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+       <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+       <meta http-equiv="X-UA-Compatible" content="IE=9" />
+       <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
+       <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
+       <script type="text/javascript" src="../../scripts/snippet.js"></script> 
+       <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
+
+       <title>Image Capturing with the Camera</title>  
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+       <div id="profile">
+               <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/> <img alt="Wearable native" src="../../images/wearable_s_n.png"/></p>
+       </div>
+       <div id="toc_border"><div id="toc">
+               <p class="toc-title">Content</p>
+               <ul class="toc">
+                       <li><a href="#camera_init">Initializing the Camera</a></li>
+                       <li><a href="#preview_capture">Previewing and Capturing Images</a></li>
+                       <li><a href="#camera_stop">Stopping the Camera</a></li>
+               </ul>
+        <p class="toc-title">Related Info</p>          
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.guides/html/native/multimedia/multimedia_guide_n.htm">Multimedia Guides</a></li>
+                       <li><a href="../../../../org.tizen.tutorials/html/native/multimedia/multimedia_tutorials_n.htm">Multimedia Tutorials</a></li>
+                       <li><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__FRAMEWORK.html">Multimedia API for Mobile Native</a></li>
+                       <li><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__FRAMEWORK.html">Multimedia API for Wearable Native</a></li>
+        </ul>          
+       </div></div>
+</div>         
+<div id="container"><div id="contents"><div class="content">   
+<h1>Image Capturing with the Camera</h1>
+
+<p>You can capture still images with the device&#39;s internal camera and keep images on your target device using the Camera API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__CAMERA__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__CAMERA__MODULE.html">wearable</a> applications). The main features of the Camera API include:</p>
+<ul>
+<li>Previewing images in real time</li>
+<li>Capturing and saving images</li>
+<li>Controlling the camera settings, such as contrast, exposure, brightness, ISO, flash, white balance, and HDR</li>
+</ul>
+<p>You can take photos using the Camera API through the following steps:</p>
+<ol>
+<li>Initialize the camera.</li>
+<li>Configure the camera.</li>
+<li>Preview and capture images.</li>
+<li>Terminate the camera.</li>
+</ol>
+<p>The following figure illustrates the camera state changes in the normal mode.</p>
+
+<p class="figure">Figure: Camera state changes</p>
+<p align="center"><img src="../../images/camera_state_changes_n.png" alt="Camera state changes" /></p>
+
+<h2 id="camera_init">Initializing the Camera</h2>
+
+<p>To initialize the camera, create a handle for the camera, configure the camera settings, and register callback functions for the events of preview and auto-focus:</p>
+
+<ol>
+<li>
+<p>To use the functions and data types of the Camera API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__CAMERA__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__CAMERA__MODULE.html">wearable</a> applications), include the &lt;camera.h&gt; header file in your application:</p>
+<pre class="prettyprint">
+#include &lt;camera.h&gt;
+</pre>
+</li>
+<li>Create the camera handle using the <span style="font-family: Courier New,Courier,monospace;">camera_create()</span> function.
+<p>In the following example, create a <span style="font-family: Courier New,Courier,monospace;">g_camera</span> camera handle, and define a <span style="font-family: Courier New,Courier,monospace;">camdata</span> structure type, to store global data related to the camera handle:</p>
+<pre class="prettyprint">
+struct _camdata {
+&nbsp;&nbsp;&nbsp;&nbsp;Evas_Object *win;
+&nbsp;&nbsp;&nbsp;&nbsp;Evas_Object *rect;
+&nbsp;&nbsp;&nbsp;&nbsp;Evas *evas;
+&nbsp;&nbsp;&nbsp;&nbsp;camera_h g_camera; /* Camera handle */
+};
+typedef struct _camdata camdata;
+
+static camdata cam_data;
+
+int error_code = 0;
+
+/* Create the camera handle */
+error_code = camera_create(CAMERA_DEVICE_CAMERA0, &amp;cam_data.g_camera);
+if (error_code != CAMERA_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;fail to create camera: error code = %d&quot;, error_code);
+</pre>
+
+<p>The <span style="font-family: Courier New,Courier,monospace;">CAMERA_DEVICE_CAMERA0</span> parameter means that the currently activated device camera is 0, which is the primary camera. You can select between the primary (0) and the secondary (1) camera, which are defined in the <span style="font-family: Courier New,Courier,monospace;">camera_device_e</span> enumeration (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__CAMERA__MODULE.html#gab030be4ec6b05144c3f2a732541e4104">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__CAMERA__MODULE.html#gab030be4ec6b05144c3f2a732541e4104">wearable</a> applications). Since devices can have multiple camera sensors with different capabilities, you must create a camera handle with a proper <span style="font-family: Courier New,Courier,monospace;">camera_device_e</span> value, determining which camera sensor is used. Usually, the primary sensor is located on the back side and the secondary sensor is on the front side of the device.</p>
+</li>
+<li>Configure the camera settings.
+<p>Before configuring the camera settings, find out which configurations are supported by the camera. Depending on the camera type, the device can support different orientations, resolutions, or preview and capture formats. You can obtain this information using the relevant functions, such as <span style="font-family: Courier New,Courier,monospace;">camera_foreach_supported_preview_resolution()</span>, <span style="font-family: Courier New,Courier,monospace;">camera_foreach_supported_preview_format()</span>, or other <span style="font-family: Courier New,Courier,monospace;">camera_foreach_supported_XXX()</span> functions. For example, using the <span style="font-family: Courier New,Courier,monospace;">camera_foreach_supported_preview_resolution()</span> function, you can find out which resolutions are supported for the camera preview on a specific device. As usual, the foreach function invokes a callback for each supported resolution and stops when the callback returns <span style="font-family: Courier New,Courier,monospace;">false</span>.</p>
+
+<p>Set the camera configurations (such as image quality, display type, preview resolution, and capture format) by using the relevant functions:</p>
+
+<ul>
+<li>Image quality
+<p>Set the image quality using the <span style="font-family: Courier New,Courier,monospace;">camera_attr_set_image_quality()</span> function. The quality value ranges from 1 (lowest quality) to 100 (highest quality).</p>
+
+<pre class="prettyprint">
+error_code = camera_attr_set_image_quality(cam_data.g_camera, 100);
+</pre>
+</li>
+<li>Display type
+<p>Using the <span style="font-family: Courier New,Courier,monospace;">camera_set_display()</span> function, you can set the display type for showing preview images. The display type is either <span style="font-family: Courier New,Courier,monospace;">CAMERA_DISPLAY_TYPE_EVAS</span> or <span style="font-family: Courier New,Courier,monospace;">CAMERA_DISPLAY_TYPE_OVERLAY</span>.</p>
+<p>The following example shows how to set the display according to the display_type parameter:</p>
+
+  <table class="note"> 
+   <tbody> 
+    <tr> 
+     <th class="note">Note</th> 
+    </tr> 
+    <tr> 
+     <td class="note">The camera state must be <span style="font-family: Courier New,Courier,monospace;">CAMERA_STATE_CREATED</span> and the <span style="font-family: Courier New,Courier,monospace;">create_base_gui()</span> function must be called before previewing.</td> 
+    </tr> 
+   </tbody> 
+  </table>
+  
+<pre class="prettyprint">
+int error_code = CAMERA_ERROR_NONE;
+Evas_Object *g_eo = NULL;
+
+static void
+create_base_gui(camdata *cam_data, camera_display_type_e display_type)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;/* Window */
+&nbsp;&nbsp;&nbsp;&nbsp;elm_config_accel_preference_set(&quot;opengl&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;/* PACKAGE contains the package name character info */
+&nbsp;&nbsp;&nbsp;&nbsp;cam_data-&gt;win = elm_win_add(NULL, PACKAGE, ELM_WIN_BASIC);
+
+&nbsp;&nbsp;&nbsp;&nbsp;evas_object_resize(cam_data-&gt;win, 240, 320);
+
+&nbsp;&nbsp;&nbsp;&nbsp;evas_object_move(cam_data-&gt;win, 0, 0);
+&nbsp;&nbsp;&nbsp;&nbsp;elm_win_autodel_set(cam_data-&gt;win, EINA_TRUE);
+
+&nbsp;&nbsp;&nbsp;&nbsp;cam_data-&gt;evas = evas_object_evas_get(cam_data-&gt;win);
+
+&nbsp;&nbsp;&nbsp;&nbsp;switch (display_type) {
+&nbsp;&nbsp;&nbsp;&nbsp;case CAMERA_DISPLAY_TYPE_EVAS:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Set the Evas image object for drawing */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_eo = evas_object_image_add(cam_data-&gt;evas);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evas_object_image_size_set(g_eo, 240, 320);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evas_object_image_fill_set(g_eo, 0, 0, 240, 320);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evas_object_resize(g_eo, 240, 320);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evas_object_show(g_eo);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evas_object_show(cam_data.win);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
+&nbsp;&nbsp;&nbsp;&nbsp;case CAMERA_DISPLAY_TYPE_OVERLAY:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cam_data-&gt;rect = evas_object_rectangle_add(cam_data-&gt;evas);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evas_object_resize(cam_data-&gt;rect, 240, 320);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evas_object_move(cam_data-&gt;rect, 0, 0);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evas_object_color_set(cam_data-&gt;rect, 0, 0, 0, 0);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evas_object_render_op_set(cam_data-&gt;rect, EVAS_RENDER_COPY);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evas_object_size_hint_weight_set(cam_data-&gt;rect, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Show the window after the base GUI is set up */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evas_object_show(cam_data-&gt;win);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
+&nbsp;&nbsp;&nbsp;&nbsp;case default:
+&nbsp;&nbsp;&nbsp;&nbsp;break;
+&nbsp;&nbsp;&nbsp;&nbsp;}
+}
+
+error_code = camera_set_display(cam_data.g_camera, CAMERA_DISPLAY_TYPE_OVERLAY, GET_DISPLAY(cam_data.win));
+if (error_code != CAMERA_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, &quot;camera_set_display failed [0x%x]&quot;, ret);
+&nbsp;&nbsp;&nbsp;&nbsp;camera_destroy(cam_data.g_camera);
+&nbsp;&nbsp;&nbsp;&nbsp;cam_data.g_camera = 0;
+
+&nbsp;&nbsp;&nbsp;&nbsp;return;
+}
+</pre>
+</li>
+<li>Preview resolution
+<p>Set the preview resolution by calling the <span style="font-family: Courier New,Courier,monospace;">camera_set_preview_resolution()</span> function before previewing.</p>
+<p>The following example code sets the camera preview resolution to the first found supported resolution, which is returned from the <span style="font-family: Courier New,Courier,monospace;">camera_foreach_supported_preview_resolution()</span> function:</p>
+
+<pre class="prettyprint">
+int resolution[2];
+
+static bool
+_preview_resolution_cb(int width, int height, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;int *resolution = (int*)user_data;
+&nbsp;&nbsp;&nbsp;&nbsp;resolution[0] = width;
+&nbsp;&nbsp;&nbsp;&nbsp;resolution[1] = height;
+
+&nbsp;&nbsp;&nbsp;&nbsp;return false;
+}
+
+/* Find a resolution that is supported by the device */
+error_code = camera_foreach_supported_preview_resolution(cam_data.g_camera, _preview_resolution_cb, resolution);
+
+/* Set the supported resolution for camera preview */
+error_code = camera_set_preview_resolution(cam_data.g_camera, resolution[0], resolution[1]);
+</pre>
+</li>
+<li>Capture format
+<p>Using the <span style="font-family: Courier New,Courier,monospace;">camera_set_capture_format()</span> function, set the capture format. The available formats are defined in the <span style="font-family: Courier New,Courier,monospace;">camera_pixel_format_e</span> enumeration (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__CAMERA__MODULE.html#ga18b291f5f688ef92692b0cc273fd6ece">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__CAMERA__MODULE.html#ga18b291f5f688ef92692b0cc273fd6ece">wearable</a> applications), such as <span style="font-family: Courier New,Courier,monospace;">NV12</span>, <span style="font-family: Courier New,Courier,monospace;">NV16</span>, and <span style="font-family: Courier New,Courier,monospace;">JPEG</span>.</p>
+<pre class="prettyprint">
+error_code = camera_set_capture_format(cam_data.g_camera, CAMERA_PIXEL_FORMAT_JPEG);
+</pre>
+</li></ul>
+</li>
+<li>Register callback functions.
+<p>To retrieve notifications, you must register appropriate callback functions for handling newly previewed frames and auto-focus state changes:</p>
+<ul>
+<li>Camera preview
+<p>To receive notifications about newly previewed frames, register a callback function using the <span style="font-family: Courier New,Courier,monospace;">camera_set_preview_cb()</span> function. The callback is invoked once per frame during a preview.</p>
+<p>The following example implements the <span style="font-family: Courier New,Courier,monospace;">_camera_preview_cb()</span> callback, which starts auto-focusing using the <span style="font-family: Courier New,Courier,monospace;">camera_start_focusing()</span> function:</p>
+
+<pre class="prettyprint">
+error_code = camera_set_preview_cb(cam_data.g_camera, _camera_preview_cb, NULL);
+
+static void
+_camera_preview_cb(camera_preview_data_s *frame, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;int error_code = 0;
+
+&nbsp;&nbsp;&nbsp;&nbsp;if (g_enable_focus == true) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error_code = camera_start_focusing(cam_data.g_camera, true);
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (error_code == CAMERA_ERROR_NOT_SUPPORTED)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error_code = camera_start_focusing(cam_data.g_camera, false);
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_enable_focus = false;
+&nbsp;&nbsp;&nbsp;&nbsp;}
+}
+</pre>
+<p>The second parameter of the <span style="font-family: Courier New,Courier,monospace;">camera_start_focusing()</span> function is a Boolean flag defining whether the camera must continuously maintain focus. The <span style="font-family: Courier New,Courier,monospace;">g_enable_focus</span> flag is set to <span style="font-family: Courier New,Courier,monospace;">true</span> at the application startup. For the first frame of the preview, the camera starts auto-focusing. Subsequent calls to the callback do not provoke any action, which prevents the auto-focusing process from starting after the first previewed frame.</p>
+</li>
+<li>Auto-focus state change
+<p>Before auto-focusing starts, the auto-focus state is <span style="font-family: Courier New,Courier,monospace;">CAMERA_FOCUS_STATE_RELEASED</span>. After the <span style="font-family: Courier New,Courier,monospace;">camera_start_focusing()</span> function is called, the camera starts auto-focusing and the state changes to <span style="font-family: Courier New,Courier,monospace;">CAMERA_FOCUS_STATE_ONGOING</span>. If the auto-focusing finishes successfully, the state changes to <span style="font-family: Courier New,Courier,monospace;">CAMERA_FOCUS_STATE_FOCUSED</span>. If the auto-focusing fails, the state changes to <span style="font-family: Courier New,Courier,monospace;">CAMERA_FOCUS_STATE_FAILED</span>.</p>
+<p>To receive notifications about auto-focusing state changes, register a callback using the <span style="font-family: Courier New,Courier,monospace;">camera_set_focus_changed_cb()</span> function. The callback is invoked every time the auto-focus state changes.</p>
+<p>The following example implements the <span style="font-family: Courier New,Courier,monospace;">_camera_focus_cb()</span> callback, which starts capturing focused frames using the <span style="font-family: Courier New,Courier,monospace;">camera_start_capture()</span> function:</p>
+
+<pre class="prettyprint">
+static void
+_camera_focus_cb(camera_focus_state_e state, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;int error_code;
+
+&nbsp;&nbsp;&nbsp;&nbsp;if (state == CAMERA_FOCUS_STATE_FOCUSED &amp;&amp; g_enable_shot == true) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*  Start capturing */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error_code = camera_start_capture(cam_data.g_camera, _camera_capturing_cb, _camera_completed_cb, NULL);
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_enable_shot = false;
+&nbsp;&nbsp;&nbsp;&nbsp;}
+}
+</pre>
+</li></ul>
+</li>
+</ol>
+
+<h2 id="preview_capture">Previewing and Capturing Images</h2>
+                       
+<p>After initializing the camera, you can start the preview, auto-focus, and capturing processes to take a photo. The camera preview starts with the <span style="font-family: Courier New,Courier,monospace;">camera_start_preview()</span> function call, and it draws frames on the screen and allows you to capture frames as still images:</p>
+<pre class="prettyprint">
+error_code = camera_start_preview(cam_data.g_camera);
+</pre>
+
+<p>After starting the camera preview, the image capturing flows as follows:</p>
+<ol>
+<li>To handle the camera preview, the application calls the camera preview callback, which calls the <span style="font-family: Courier New,Courier,monospace;">camera_start_focusing()</span> function starting the auto-focusing process.</li>
+<li>To handle the auto-focusing process, the application calls the camera auto-focus callback, which calls the <span style="font-family: Courier New,Courier,monospace;">camera_start_capture()</span> function starting the capturing process.</li>
+<li>To handle the capturing process, the application calls the camera capturing callback, which is invoked once for each captured frame.</li>
+</ol>
+<p>The following example code implements the <span style="font-family: Courier New,Courier,monospace;">_camera_capturing_cb()</span> callback, which saves the captured frame as a JPEG image, whose format is set by the <span style="font-family: Courier New,Courier,monospace;">camera_set_capture_format()</span> function:</p>
+
+<pre class="prettyprint">
+static void
+_camera_capturing_cb(camera_image_data_s* image, camera_image_data_s* postview, camera_image_data_s* thumbnail, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;Writing image to file&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;FILE *file = fopen(g_fname, &quot;w+&quot;);
+
+&nbsp;&nbsp;&nbsp;&nbsp;if (image-&gt;data != NULL)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fwrite(image-&gt;data, 1, image-&gt;size, file);
+
+&nbsp;&nbsp;&nbsp;&nbsp;fclose(file);
+}
+</pre>
+
+<p>You can get a notification when the image has been captured. After the <span style="font-family: Courier New,Courier,monospace;">camera_capturing_cb()</span> function completes, the callback function, <span style="font-family: Courier New,Courier,monospace;">camera_capture_completed_cb()</span>, is invoked. It is used for notification and for restarting the camera preview.</p>
+<p>The following example code implements the <span style="font-family: Courier New,Courier,monospace;">_camera_completed_cb()</span> callback, which waits 0.025 seconds before restarting the camera preview with auto-focusing. By waiting 0.025 seconds, the callback keeps the captured image on the screen for 0.025 seconds.</p>
+
+<pre class="prettyprint">
+static void
+_camera_completed_cb(void *user_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;int error_code = 0;
+
+&nbsp;&nbsp;&nbsp;&nbsp;usleep(25000);  /* Display the captured image for 0.025 seconds */
+
+&nbsp;&nbsp;&nbsp;&nbsp;/* Restart the camera preview */
+&nbsp;&nbsp;&nbsp;&nbsp;error_code = camera_start_preview(cam_data.g_camera);
+
+&nbsp;&nbsp;&nbsp;&nbsp;g_enable_focus = true;
+}
+</pre>
+
+<h2 id="camera_stop">Stopping the Camera</h2>
+
+<p>After you have finished working with the camera, you need to stop the camera and clean up the application environment:</p>
+
+<ol>
+<li>If auto-focus is switched on, switch it off using the <span style="font-family: Courier New,Courier,monospace;">camera_cancel_focusing()</span> function.</li>
+<li>Stop the camera preview using the <span style="font-family: Courier New,Courier,monospace;">camera_stop_preview()</span> function.</li>
+<li>Unregister the camera preview and auto-focus callback functions using the <span style="font-family: Courier New,Courier,monospace;">camera_unset_preview_cb()</span> and <span style="font-family: Courier New,Courier,monospace;">camera_unset_focus_changed_cb()</span> functions.</li>
+<li>Destroy the camera handle and release all the allocated resources using the <span style="font-family: Courier New,Courier,monospace;">camera_destroy()</span> function.</li>
+</ol>
+
+<pre class="prettyprint">
+error_code = camera_stop_preview(cam_data.g_camera); 
+error_code = camera_destroy(cam_data.g_camera);
+
+if (error_code != CAMERA_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;fail to destroy camera: error code = %d&quot;, error_code);
+</pre>
+
+<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+</html>
+
diff --git a/org.tizen.gettingstarted/html/native/feature/app_multimedia_n.htm b/org.tizen.gettingstarted/html/native/feature/app_multimedia_n.htm
new file mode 100644 (file)
index 0000000..32f38e2
--- /dev/null
@@ -0,0 +1,88 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+       <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+       <meta http-equiv="X-UA-Compatible" content="IE=9" />
+       <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
+       <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
+       <script type="text/javascript" src="../../scripts/snippet.js"></script> 
+       <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
+
+       <title>Creating Applications with Multimedia</title>  
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+       <div id="profile">
+               <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/> <img alt="Wearable native" src="../../images/wearable_s_n.png"/></p>
+       </div>
+       <div id="toc_border"><div id="toc">
+        <p class="toc-title">Related Info</p>  
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.guides/html/native/multimedia/multimedia_guide_n.htm">Multimedia Guides</a></li>
+                       <li><a href="../../../../org.tizen.tutorials/html/native/multimedia/multimedia_tutorials_n.htm">Multimedia Tutorials</a></li>
+                       <li><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__FRAMEWORK.html">Multimedia API for Mobile Native</a></li>
+                       <li><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__FRAMEWORK.html">Multimedia API for Wearable Native</a></li>
+        </ul>          
+       </div></div>
+</div>         
+<div id="container"><div id="contents"><div class="content">   
+<h1>Creating Applications with Multimedia</h1>
+       
+<p>If you want to create applications that offer multimedia features to the user, Tizen provides various options for you.</p>
+
+<p>Multimedia in the application allows the user to play and record audio and video, and use the device camera to take photos.</p>
+
+<p>When creating a multimedia application, you can implement the following features:</p>
+
+<ul>
+<li><a href="app_multimedia_audio_n.htm">Audio playback and recording</a>
+<ul><li>You can play audio content in a device player using various audio formats.</li>
+<li>You can record and store audio content for later playback.</li>
+<li>When handling audio resources, you can implement various control functions to manage both the playback and recording tasks.</li>
+</ul>
+</li>
+<li><a href="app_multimedia_video_n.htm">Video playback and recording</a>
+<ul>
+<li>You can play video files in a device player using various video file formats.</li>
+<li>You can record and store video files for later playback.</li>
+<li>When handling video resources, you can implement various control functions to manage both the playback and recording tasks.</li>
+</ul>
+</li>
+<li><a href="app_multimedia_camera_n.htm">Image capturing with the camera</a>
+<ul>
+<li>You can use the device camera to preview images in real time.</li>
+<li>You can capture and save images for later use.</li>
+<li>When handling the device camera, you can control which device camera to use and how to configure the camera settings.</li>
+</ul>
+</li>
+</ul>
+
+<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+</html>
+
diff --git a/org.tizen.gettingstarted/html/native/feature/app_multimedia_video_n.htm b/org.tizen.gettingstarted/html/native/feature/app_multimedia_video_n.htm
new file mode 100644 (file)
index 0000000..120456b
--- /dev/null
@@ -0,0 +1,560 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+       <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+       <meta http-equiv="X-UA-Compatible" content="IE=9" />
+       <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
+       <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
+       <script type="text/javascript" src="../../scripts/snippet.js"></script> 
+       <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
+
+       <title>Video Playback and Recording</title>  
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+       <div id="profile">
+               <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/> <img alt="Wearable native" src="../../images/wearable_s_n.png"/></p>
+       </div>
+       <div id="toc_border"><div id="toc">
+               <p class="toc-title">Content</p>
+               <ul class="toc">
+                       <li><a href="#video_play">Playing Video</a></li>
+                       <li><a href="#video_record">Recording Video</a></li>
+               </ul>
+        <p class="toc-title">Related Info</p>          
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.guides/html/native/multimedia/multimedia_guide_n.htm">Multimedia Guides</a></li>
+                       <li><a href="../../../../org.tizen.tutorials/html/native/multimedia/multimedia_tutorials_n.htm">Multimedia Tutorials</a></li>
+                       <li><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__FRAMEWORK.html">Multimedia API for Mobile Native</a></li>
+                       <li><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__FRAMEWORK.html">Multimedia API for Wearable Native</a></li>
+        </ul>          
+       </div></div>
+</div>         
+<div id="container"><div id="contents"><div class="content">   
+<h1>Video Playback and Recording</h1>
+
+<p>Tizen enables your application to manage video content and provides control functions for using video resources. To play and record video files, use the Player (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__PLAYER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__PLAYER__MODULE.html">wearable</a> applications) and Recorder (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__RECORDER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__RECORDER__MODULE.html">wearable</a> applications) APIs. Managing video files is very similar to managing audio content, but it requires more consideration to display the visual content.</p>
+
+<p>Tizen supports various video formats, including WMV, ASF, MP4, 3GP, AVI, MKV, and OGG. The available formats depend on the target device.</p>
+                       
+<h2 id="video_play">Playing Video</h2>
+
+<p>To play video files stored on the device, use the Player API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__PLAYER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__PLAYER__MODULE.html">wearable</a> applications). The Player API also provides interfaces for getting media content information and controlling media operations, such as play, pause, resume, and stop.</p>
+<p>Video content requires a drawing area for visual display, so you have to get an overlay region and set it to the player instance to display the drawing area:</p>
+<ol>
+<li>Get the overlay region or Evas from the Graphics module. You can display video on a UI layer with the Evas object as well as on an overlay layer.</li>
+<li>Create the player instance.</li>
+<li>Set the surface type and display a handle to the player using the <span style="font-family: Courier New,Courier,monospace;">player_set_display()</span> function.</li>
+</ol>
+<p>The following figure illustrates the player state changes.</p>
+
+<p class="figure">Figure: Player state changes</p>
+<p align="center"><img src="../../images/player_state_changes_n.png" alt="Player state changes" /></p>
+
+<h3 id="video_init">Initializing the Video Player</h3>
+
+<p>You can create a player by calling the <span style="font-family: Courier New,Courier,monospace;">player_create()</span> function, which returns a player handle on success. You need the player handle in setting which files to play and with which configuration. You also have to register appropriate callback functions to handle notifications about interruptions, ends, and errors during playback.</p>
+
+<p>To prepare the player for playback, and to define the necessary callbacks to handle playback events:</p>
+
+<ol>
+<li>
+<p>To use the data types and functions of the Player API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__PLAYER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__PLAYER__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;player.h&gt;</span> header file in your application:</p>
+<pre class="prettyprint">
+#include &lt;player.h&gt;
+</pre>
+</li>
+<li>Define a variable for the player handle, and create the handle:
+<pre class="prettyprint">
+struct appdata {
+&nbsp;&nbsp;&nbsp;&nbsp;player_h player;
+};
+typedef struct appdata appdata_s;
+
+static void
+init_base_player(appdata_s *ad)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;int error_code = 0;
+&nbsp;&nbsp;&nbsp;&nbsp;error_code = player_create(&amp;ad-&gt;player);
+&nbsp;&nbsp;&nbsp;&nbsp;if (error_code != PLAYER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;failed to create&quot;);
+
+&nbsp;&nbsp;&nbsp;&nbsp;/*
+&nbsp;&nbsp;&nbsp;&nbsp;   Perform more playback configuration, such as setting callbacks,
+&nbsp;&nbsp;&nbsp;&nbsp;   setting the source file URI, and preparing the player
+&nbsp;&nbsp;&nbsp;&nbsp;*/
+}
+</pre>
+</li>
+<li>Set configurations, such as the source file URI.
+<p>To set a specific path for video files to play, retrieve the default internal storage paths. To access and use internal storage, include the <span style="font-family: Courier New,Courier,monospace;">&lt;storage.h&gt;</span> header file in your application.</p>
+<pre class="prettyprint">
+#include &lt;storage.h&gt;
+
+#define MP4_SAMPLE &quot;SampleVideo.mp4&quot;;
+
+int internal_storage_id;
+char *video_storage_path = NULL;
+char *video_path = NULL;
+
+static bool
+storage_cb(int storage_id, storage_type_e type, storage_state_e state, const char *path, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;if (type == STORAGE_TYPE_INTERNAL) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;internal_storage_id = storage_id;
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;
+&nbsp;&nbsp;&nbsp;&nbsp;}
+
+&nbsp;&nbsp;&nbsp;&nbsp;return true;
+}
+
+void
+_get_storage_path()
+{
+&nbsp;&nbsp;&nbsp;&nbsp;int error_code = 0;
+&nbsp;&nbsp;&nbsp;&nbsp;char *path = NULL;
+
+&nbsp;&nbsp;&nbsp;&nbsp;error_code = storage_foreach_device_supported(storage_cb, NULL);
+
+&nbsp;&nbsp;&nbsp;&nbsp;error_code = storage_get_directory(internal_storage_id, STORAGE_DIRECTORY_VIDEOS, &amp;path);
+&nbsp;&nbsp;&nbsp;&nbsp;if (error_code != STORAGE_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;video_storage_path = strdup(path);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;free(path);
+&nbsp;&nbsp;&nbsp;&nbsp;}
+}
+
+void
+_set_test_path()
+{
+&nbsp;&nbsp;&nbsp;&nbsp;int path_len = 0;
+
+&nbsp;&nbsp;&nbsp;&nbsp;path_len = strlen(video_storage_path) + strlen(MP4_SAMPLE) + 1;
+&nbsp;&nbsp;&nbsp;&nbsp;video_path = malloc(path_len);
+&nbsp;&nbsp;&nbsp;&nbsp;memset(video_path, 0x0, path_len);
+
+&nbsp;&nbsp;&nbsp;&nbsp;strncat(video_path, video_storage_path, strlen(video_storage_path));
+&nbsp;&nbsp;&nbsp;&nbsp;strncat(video_path, MP4_SAMPLE, strlen(MP4_SAMPLE));
+}
+</pre>
+<p>Once the storage path is set, you can specify the video file to play using the <span style="font-family: Courier New,Courier,monospace;">player_set_uri()</span> function with the player handle:</p>
+<pre class="prettyprint">
+error_code = player_set_uri(ad-&gt;player, video_path);
+if (error_code != PLAYER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;failed to set URI: error code = %d&quot;, error_code);
+</pre>
+</li>
+<li>Create UI buttons and add callback functions for your application to control the playback:
+<pre class="prettyprint">
+static void
+create_base_gui(appdata_s *ad)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;/* Create a window */
+&nbsp;&nbsp;&nbsp;&nbsp;/* Create a button */
+&nbsp;&nbsp;&nbsp;&nbsp;/* Add a callback to the button */
+&nbsp;&nbsp;&nbsp;&nbsp;evas_object_smart_callback_add(button_init, &quot;clicked&quot;, init_base_player, ad);
+&nbsp;&nbsp;&nbsp;&nbsp;evas_object_smart_callback_add(button_end, &quot;clicked&quot;, release_base_player, ad);
+&nbsp;&nbsp;&nbsp;&nbsp;/* Create an Evas image object for the video surface */
+}
+
+static void
+app_create(void *data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;appdata_s *ad = data;
+&nbsp;&nbsp;&nbsp;&nbsp;create_base_gui(ad);
+
+&nbsp;&nbsp;&nbsp;&nbsp;return true;
+}
+</pre>
+</li>
+<li>Register callback functions.
+<p>To receive notifications, register and define appropriate callback functions for interruption, playback ending, and error events:</p>
+<ul>
+<li>Interruption notifications:
+<pre class="prettyprint">
+static void
+_player_interrupted_cb(player_interrupted_code_e code, void *data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;appdata_s *ad = data;
+&nbsp;&nbsp;&nbsp;&nbsp;player_state_e state;
+
+&nbsp;&nbsp;&nbsp;&nbsp;/* All the interrupted_code_e is deprecated from Tizen 3.0 except PLAYER_INTERRUPTED_BY_RESOURCE_CONFLICT */
+&nbsp;&nbsp;&nbsp;&nbsp;player_get_state(ad-&gt;player, &amp;state);
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;current player state = %d&quot;, state);
+&nbsp;&nbsp;&nbsp;&nbsp;/* If the state is PLAYER_STATE_PAUSED, update the UI (for example, button) */
+}
+
+static void
+init_base_player(appdata_s *ad)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;/* Set an interruption callback if the application wants to know the reason */
+&nbsp;&nbsp;&nbsp;&nbsp;error_code = player_set_interrupted_cb(ad-&gt;player, _player_interrupted_cb, ad);
+&nbsp;&nbsp;&nbsp;&nbsp;if (error_code != PLAYER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;failed to set interrupt cb&quot;);
+}
+</pre>
+</li>
+<li>End notifications: 
+<pre class="prettyprint">
+static void
+_player_completed_cb(void *_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;Playback End&quot;);
+}
+
+static void
+init_base_player(appdata_s *ad)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;error_code = player_set_completed_cb(ad-&gt;player, _player_completed_cb, ad);
+&nbsp;&nbsp;&nbsp;&nbsp;if (error_code != PLAYER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;failed to set completed cb&quot;);
+}
+</pre>
+</li>
+<li>Error notifications:
+<pre class="prettyprint">
+static void
+_player_error_cb(int error_code, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;playback failed, error = %x&quot;, error_code);
+}
+
+static void
+init_base_player(appdata_s *ad)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;error_code = player_set_error_cb(ad-&gt;player, _player_error_cb, NULL);
+&nbsp;&nbsp;&nbsp;&nbsp;if (error_code != PLAYER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;failed to set error cb&quot;);
+}
+</pre>
+</li>
+</ul>
+</li>
+</ol>
+
+<h3 id="video_playback">Managing Video Playback</h3>
+
+<p>To manage playback:</p>
+
+<ol>
+<li>
+<p>Unlike in audio playback, the video player needs a region to display. To set the display, use the <span style="font-family: Courier New,Courier,monospace;">player_set_display()</span> function with the player handle, display type, and display handle. After the function has been successfully executed, the player is connected to the display. The display handle can be retrieved using the <span style="font-family: Courier New,Courier,monospace;">GET_DISPLAY()</span> function.</p>
+<pre class="prettyprint">
+error_code = player_set_display(ad-&gt;player, PLAYER_DISPLAY_TYPE_OVERLAY, GET_DISPLAY(evas_obj));
+</pre>
+</li>
+<li>
+<p>When the player is created, it is in the <span style="font-family: Courier New,Courier,monospace;">PLAYER_STATE_IDLE</span> state. To start playback, it must be in the <span style="font-family: Courier New,Courier,monospace;">PLAYER_STATE_READY</span> state.</p>
+<p>Get the player ready for playback by calling the <span style="font-family: Courier New,Courier,monospace;">player_prepare()</span> function, which changes the player state from <span style="font-family: Courier New,Courier,monospace;">PLAYER_STATE_IDLE</span> to <span style="font-family: Courier New,Courier,monospace;">PLAYER_STATE_READY</span>:</p>
+<pre class="prettyprint">
+error_code = player_prepare(ad-&gt;player);
+if (error_code != PLAYER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;failed to prepare player: error code = %d&quot;, error_code);
+</pre>
+</li>
+<li>
+<p>Once the player is ready, start playing the video file using the <span style="font-family: Courier New,Courier,monospace;">player_start()</span> function. The player state changes to <span style="font-family: Courier New,Courier,monospace;">PLAYER_STATE_PLAYING</span>.</p>
+<pre class="prettyprint">
+error_code = player_start(ad-&gt;player);
+if (error_code != PLAYER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;failed to start player: error code = %d&quot;, error_code);
+</pre>
+</li>
+<li>
+<p>Stop playback by calling the <span style="font-family: Courier New,Courier,monospace;">player_stop()</span> function. The player state changes back to <span style="font-family: Courier New,Courier,monospace;">PLAYER_STATE_READY</span>.</p>
+<p>By calling the <span style="font-family: Courier New,Courier,monospace;">player_pause()</span> function, you can pause playback and change the player state to <span style="font-family: Courier New,Courier,monospace;">PLAYER_STATE_PAUSED</span>.</p>
+</li>
+</ol>
+
+<h3 id="video_configure">Configuring the Video Playback</h3> 
+
+<p>During video playback, you can manage the display settings â€“ display mode and display orientation â€“ as needed. Before setting the parameters, make sure that the player handle has been created, the display set, and the player started.</p>
+
+<p>To configure the display settings:</p>
+
+<ol>
+<li>Check whether the display is visible.
+<p>If the display is not visible, make it visible using the <span style="font-family: Courier New,Courier,monospace;">player_set_display_visible()</span> function with <span style="font-family: Courier New,Courier,monospace;">true</span> as the second parameter:</p>
+<pre class="prettyprint">
+bool is_visible;
+
+error_code = player_is_display_visible(ad-&gt;player, &amp;is_visible);
+dlog_print(DLOG_ERROR, LOG_TAG, &quot;player_is_display_visible = %d&quot;, error_code);
+
+if (!is_visible) {
+&nbsp;&nbsp;&nbsp;&nbsp;error_code = player_set_display_visible(ad-&gt;player, true);
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;player_set_display_visible = %d&quot;, error_code);
+}
+</pre>
+</li>
+<li>Set the display mode.
+<p>The available display modes are defined in the <span style="font-family: Courier New,Courier,monospace;">player_display_mode_e</span> enumeration (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__PLAYER__DISPLAY__MODULE.html#gaafcf6f7487d8cb376e1851a6e1253f3a">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__PLAYER__DISPLAY__MODULE.html#gaafcf6f7487d8cb376e1851a6e1253f3a">wearable</a> applications). Note that the DST ROI mode is deprecated from Tizen 3.0.</p>
+<pre class="prettyprint">
+error_code = player_set_display_mode(ad-&gt;player, PLAYER_DISPLAY_MODE_FULL_SCREEN);
+dlog_print(DLOG_ERROR, LOG_TAG, &quot;player_set_display_mode = %d&quot;, error_code);
+</pre>
+</li>
+<li>Set the display orientation.
+<p>The display orientations are defined in the <span style="font-family: Courier New,Courier,monospace;">player_display_rotation_e</span> enumeration (in <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__PLAYER__DISPLAY__MODULE.html#gab8c4c170d4b2628a09831edc8d652302">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__PLAYER__DISPLAY__MODULE.html#gab8c4c170d4b2628a09831edc8d652302">wearable</a> applications).</p>
+<pre class="prettyprint">
+error_code = player_set_display_rotation(ad-&gt;player, PLAYER_DISPLAY_ROTATION_90);
+dlog_print(DLOG_ERROR, LOG_TAG, &quot;player_set_display_mode = %d&quot;, error_code);
+</pre>
+</li>
+</ol>
+
+<h3 id="video_terminate">Terminating the Video Player</h3>
+
+<p>When you are finished using the player, release all the resources allocated to it:</p>
+
+<ol>
+<li>Reset the player by calling the <span style="font-family: Courier New,Courier,monospace;">player_unprepare()</span>  function, which changes the player state to <span style="font-family: Courier New,Courier,monospace;">PLAYER_STATE_IDLE</span>.</li>
+<li>Destroy the player handle using the <span style="font-family: Courier New,Courier,monospace;">player_destroy()</span> function.</li>
+</ol>
+
+<pre class="prettyprint">
+error_code = player_stop(ad-&gt;player);
+error_code = player_unprepare(ad-&gt;player);
+error_code = player_destroy(ad-&gt;player);
+
+if (error_code != PLAYER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;fail to destroy player: error code = %d&quot;, error_code);
+</pre>
+
+
+<h2 id="video_record">Recording Video</h2>
+
+<p>To record video, use the Recorder API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__RECORDER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__RECORDER__MODULE.html">wearable</a> applications). The main features of the Recorder API include:</p>
+<ul>
+<li>Basic recording functionalities: record, stop, pause, cancel, and mute</li>
+<li>Setting the maximum recording time and size</li>
+<li>Controlling the system volume level</li>
+</ul>
+<p>The supported formats in video recording are MP4 and 3GP.</p>
+<p>The following figure illustrates the general recorder state changes.</p>
+
+<p class="figure">Figure: Recorder state changes</p>
+<p align="center"><img src="../../images/recorder_state_changes_n.png" alt="Recorder state changes" /></p>
+
+<h3 id="init_video_rec">Initializing the Video Recorder</h3>
+
+<p>To prepare the recorder for the recording session, and to define the necessary callbacks to handle recording events:</p>
+
+<ol>
+<li>
+<p>To use the data types and functions of the Recorder API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__RECORDER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__RECORDER__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;recorder.h&gt;</span> header file in your application:</p>
+<pre class="prettyprint">
+#include &lt;recorder.h&gt;
+</pre>
+</li>
+<li>
+<p>To initialize the video recorder, configure the camera and video recorder, and register callback functions for the event of reaching the recording limit.</p>
+<p>Before you start configuring and initializing, define a structure for the camera and video recorder handles. This structure contains a Boolean variable specifying whether the video recorder is switched off.</p>
+<pre class="prettyprint">
+#include &lt;camera.h&gt;
+
+struct recdata {
+&nbsp;&nbsp;&nbsp;&nbsp;bool shutdown;
+&nbsp;&nbsp;&nbsp;&nbsp;recorder_h recorder;
+&nbsp;&nbsp;&nbsp;&nbsp;camera_h camera;
+};
+</pre>
+</li>
+<li>
+<p>Define configuration values for the camera and the video recorder:</p>
+<pre class="prettyprint">
+static const int RECORD_TIME=2;
+static const int RECORD_LIMIT=4;
+#define FILENAME_PREFIX &quot;VIDEO&quot;
+static int g_bitrate = 288000;
+static int duration;
+static int playing=0;
+static int ret;
+</pre>
+
+<ul>
+<li>Configure the camera.
+<p>Create a handle for the camera using the <span style="font-family: Courier New,Courier,monospace;">camera_create()</span> function. The parameters are the hardware camera to access and the camera handle to be returned. The camera state is set as <span style="font-family: Courier New,Courier,monospace;">CAMERA_STATE_CREATED</span>.</p>
+<pre class="prettyprint">
+static recdata rec_data;
+
+int error_code = 0;
+
+rec_data.shutdown = FALSE;
+rec_data.camera = NULL;
+rec_data.recorder = NULL;
+
+/* Create the camera handle */
+error_code = camera_create(CAMERA_DEVICE_CAMERA0, &amp;rec_data.camera);
+if (error_code != CAMERA_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;fail to create camera: error code = %d&quot;, error_code);
+</pre>
+</li>
+<li>Configure the video recorder.
+<p>To create a handle for the video recorder, use the <span style="font-family: Courier New,Courier,monospace;">recorder_create_videorecorder()</span> function with the camera and video recorder handles as parameters. The state of the video recorder is set as <span style="font-family: Courier New,Courier,monospace;">RECORDER_STATE_CREATED</span>.</p>
+<pre class="prettyprint">
+/* Create the video recorder handle */
+error_code = recorder_create_videorecorder(rec_data.camera, &amp;rec_data.recorder);
+if (error_code != RECORDER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;fail to create a Video Recorder: error code = %d&quot;, error_code);
+</pre>
+</li>
+</ul>
+</li>
+<li>
+<p>Register appropriate callback functions to receive notifications about recorder state changes or reaching the recording limit:</p>
+<pre class="prettyprint">
+/* Set the state change callback for the video recorder */
+error_code = recorder_set_state_changed_cb(rec_data.recorder, on_state_changed_cb, NULL);
+if (error_code != RECORDER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;error code = %d&quot;, error_code);
+
+/* Define the change callback for the video recorder */
+static void
+on_state_changed_cb(recorder_state_e previous, recorder_state_e current, bool by_asm, void *data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;_recorder_state_changed_cb (prev: %d, curr: %d)\n&quot;, previous, current);
+}
+</pre>
+</li>
+<li>
+<p>You can set various attributes of video recording, such as video codec, file format, file name, encoder bitrate, as well as audio attributes:</p>
+<ul>
+<li>To set the video codec, you need to check first which codecs the device supports by calling the <span style="font-family: Courier New,Courier,monospace;">recorder_foreach_supported_video_encoder()</span> function. The possible video codec values are defined in the <span style="font-family: Courier New,Courier,monospace;">recorder_video_codec_e</span> enumeration (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__RECORDER__MODULE.html#gaaf3f0deeb1717f568e2b93bb9a375b63">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__RECORDER__MODULE.html#gaaf3f0deeb1717f568e2b93bb9a375b63">wearable</a> applications). Using the returned value and the <span style="font-family: Courier New,Courier,monospace;">recorder_set_video_encoder()</span> function, you can set the video recorder codec:
+<pre class="prettyprint">
+recorder_video_codec_e supported_codec;
+
+static bool
+_video_encoder_cb(recorder_video_codec_e codec, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;recorder_video_codec_e * supported_codec = (recorder_video_codec_e*)user_data;
+&nbsp;&nbsp;&nbsp;&nbsp;*supported_codec = codec;
+
+&nbsp;&nbsp;&nbsp;&nbsp;return false;
+}
+
+error_code = recorder_foreach_supported_video_encoder(rec_data.recorder, _video_encoder_cb, &amp;supported_codec);
+
+/* Set the video encoder for the video recorder */
+error_code = recorder_set_video_encoder(rec_data.recorder, supported_codec);
+</pre>
+</li>
+<li>To set the video encoder bitrate, use the <span style="font-family: Courier New,Courier,monospace;">recorder_attr_set_video_encoder_bitrate()</span> function:
+<pre class="prettyprint">
+/* Set the video encoder bitrate */
+error_code = recorder_attr_set_video_encoder_bitrate(rec_data.recorder, g_bitrate);
+</pre>
+</li>
+<li>To set the file format, use the <span style="font-family: Courier New,Courier,monospace;">recorder_set_file_format()</span> function. Make sure that the file format matches the video codec.
+<pre class="prettyprint">
+/* Set the file format */
+error_code = recorder_set_file_format(rec_data.recorder, RECORDER_FILE_FORMAT_MP4);
+</pre>
+</li>
+<li>To set the file name, use the <span style="font-family: Courier New,Courier,monospace;">recorder_set_filename()</span> function:
+<pre class="prettyprint">
+struct tm localtime = {0};
+time_t rawtime = time(NULL);
+char filename[256] = {&#39;\0&#39;};
+size_t size;
+
+/* Create the file name */
+if (localtime_r(&amp;rawtime, &amp;localtime) != NULL) {
+&nbsp;&nbsp;&nbsp;&nbsp;size = snprintf(filename, sizeof(filename), &quot;%s/%s-%04i-%02i-%02i_%02i:%02i:%02i.mp4&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app_get_data_path(), FILENAME_PREFIX,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;localtime.tm_year + 1900, localtime.tm_mon + 1, localtime.tm_mday,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;localtime.tm_hour, localtime.tm_min, localtime.tm_sec);
+} else {
+&nbsp;&nbsp;&nbsp;&nbsp;/* Error handling */
+}
+/* Set the full path and file name */
+error_code = recorder_set_filename(rec_data.recorder, filename);
+</pre>
+</li>
+<li>To set the audio attributes, such as encoder, encoder bitrate, and sample rate, use the <span style="font-family: Courier New,Courier,monospace;">recorder_set_audio_encoder()</span>, <span style="font-family: Courier New,Courier,monospace;">recorder_attr_set_audio_encoder_bitrate()</span>, and <span style="font-family: Courier New,Courier,monospace;">recorder_attr_set_audio_samplerate()</span> functions, respectively.</li>
+</ul>
+</li>
+</ol>
+
+<h3 id="video_rec">Managing Video Recording</h3>
+
+<p>When the recorder handle is created, the video recorder is in the <span style="font-family: Courier New,Courier,monospace;">RECORDER_STATE_CREATED</span> state. To start recording, the video recorder must be in the <span style="font-family: Courier New,Courier,monospace;">RECORDER_STATE_READY</span> state.</p>
+
+<p>To manage playback:</p>
+
+<ol>
+<li>
+<p>Change the player state from <span style="font-family: Courier New,Courier,monospace;">RECORDER_STATE_CREATED</span> to <span style="font-family: Courier New,Courier,monospace;">RECORDER_STATE_READY</span> by calling the <span style="font-family: Courier New,Courier,monospace;">recorder_prepare()</span> function:</p>
+<pre class="prettyprint">
+error_code = recorder_prepare(rec_data.recorder);
+</pre>
+</li>
+<li>
+<p>Once the recorder is ready, start video recording using the <span style="font-family: Courier New,Courier,monospace;">recorder_start()</span> function. The recorder state changes to <span style="font-family: Courier New,Courier,monospace;">RECORDER_STATE_RECORDING</span>.</p>
+<pre class="prettyprint">
+error_code = recorder_start(rec_data.recorder);
+</pre>
+</li>
+<li>
+<p>In the <span style="font-family: Courier New,Courier,monospace;">RECORDER_STATE_RECORDING</span> state, you can pause or stop recording:</p>
+<ul>
+<li>To pause recording, call the <span style="font-family: Courier New,Courier,monospace;">recorder_pause()</span> function that changes the recorder state to <span style="font-family: Courier New,Courier,monospace;">RECORDER_STATE_PAUSED</span>. In this state, you can resume or stop recording. To resume,  call the <span style="font-family: Courier New,Courier,monospace;">recorder_start()</span> function.
+<pre class="prettyprint">
+error_code = recorder_pause(rec_data.recorder);
+</pre>
+</li>
+<li>You can stop recording either in the <span style="font-family: Courier New,Courier,monospace;">RECORDER_STATE_RECORDING</span> or <span style="font-family: Courier New,Courier,monospace;">RECORDER_STATE_PAUSED</span> state. In stopping recording, you can save or discard the recorded data. To save the recorded data, use the <span style="font-family: Courier New,Courier,monospace;">recorder_commit()</span> function, and to discard, use the <span style="font-family: Courier New,Courier,monospace;">recorder_cancel()</span> function. Both functions set the video recorder state to <span style="font-family: Courier New,Courier,monospace;">RECORDER_STATE_READY</span>.
+<pre class="prettyprint">
+error_code = recorder_commit(rec_data.recorder);
+/* OR */
+error_code = recorder_cancel(rec_data.recorder);
+</pre>
+</li>
+</ul>
+</li>
+</ol>
+
+<h3 id="terminate_video_rec">Terminating the Video Recorder</h3>
+
+<p>After you finish video recording, release all the resources allocated to the video recorder:</p>
+<ol>
+<li>Reset the video recorder by calling the <span style="font-family: Courier New,Courier,monospace;">recorder_unprepare()</span> function, which changes the recorder state from <span style="font-family: Courier New,Courier,monospace;">RECORDER_STATE_READY</span> to <span style="font-family: Courier New,Courier,monospace;">RECORDER_STATE_CREATED</span>.</li>
+<li>Release the video recorder resources by calling the <span style="font-family: Courier New,Courier,monospace;">recorder_destroy()</span> function. The recorder state changes to <span style="font-family: Courier New,Courier,monospace;">RECORDER_STATE_NONE</span>.</li>
+</ol>
+<pre class="prettyprint">
+error_code = recorder_unprepare(rec_data-&gt;recorder);
+error_code = recorder_destroy(rec_data.recorder);
+
+if (error_code != RECORDER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;fail to destroy recorder: error code = %d&quot;, error_code);
+</pre>
+
+<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+</html>
+
index aa05466..65a76de 100644 (file)
@@ -155,7 +155,7 @@ create_base_gui(appdata_s *ad)
 
 &nbsp;&nbsp;&nbsp;&nbsp;/* Label */
 &nbsp;&nbsp;&nbsp;&nbsp;ad-&gt;label = elm_label_add(ad-&gt;conform);
-&nbsp;&nbsp;&nbsp;&nbsp;elm_object_text_set(ad-&gt;label, &quot;&lt;align=center&gt;Hello EFL&lt;/align&gt;&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;elm_object_text_set(ad-&gt;label, &quot;&lt;align=center&gt;Hello Tizen&lt;/align&gt;&quot;);
 &nbsp;&nbsp;&nbsp;&nbsp;evas_object_size_hint_weight_set(ad-&gt;label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
 &nbsp;&nbsp;&nbsp;&nbsp;elm_object_content_set(ad-&gt;conform, ad-&gt;label);
 
@@ -217,7 +217,7 @@ evas_object_show(ad-&gt;conform);
    Modify this part to change the view
 */
 ad-&gt;label = elm_label_add(ad-&gt;conform);
-elm_object_text_set(ad-&gt;label, &quot;&lt;align=center&gt;Hello EFL&lt;/align&gt;&quot;);
+elm_object_text_set(ad-&gt;label, &quot;&lt;align=center&gt;Hello Tizen&lt;/align&gt;&quot;);
 evas_object_size_hint_weight_set(ad-&gt;label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
 elm_object_content_set(ad-&gt;conform, ad-&gt;label);
 </pre>
index 57ae181..b05c2aa 100644 (file)
@@ -74,7 +74,7 @@
   <p>Implementing your application consists of:</p> 
   <ul> 
    <li><strong>Designing and creating the application UI (User Interface)</strong> 
-        <p>You can <a href="../ui/ui_builder_app_design_mn.htm">design and create the application UI (user interface) with UI Builder</a>.</p> 
+        <p>You can <a href="../feature/ui_builder_app_design_mn.htm">design and create the application UI (user interface) with UI Builder</a>.</p> 
         <p>UI Builder is included in the Tizen SDK, and functions as a WYSIWYG (What You See Is What You Get) design environment for creating UIs for native applications.</p>
        <table class="note"> 
     <tbody> 
index b96222e..64e6f22 100644 (file)
@@ -38,7 +38,7 @@
 <p>This tutorial demonstrates how to create a simple user interface for a circular wearable device using EFL. The following figure shows the screen you can create with this tutorial.</p>
  
 <p class="figure">Figure: Wearable native UI</p> 
-<p align="center"><img alt="Wearable native UI" src="../../images/simple_ui_screen_wn.png" /></p> 
+<p align="center"><img alt="Wearable native UI" src="../../images/emulator_running_wn.png" /></p> 
 
 <p>This tutorial consists of the following:</p>
 <ol>
@@ -88,7 +88,7 @@ typedef struct appdata appdata_s;
 int
 main(int argc, char *argv[])
 {
-&nbsp;&nbsp;&nbsp;&nbsp;appdata_s *ad = {0,};
+&nbsp;&nbsp;&nbsp;&nbsp;appdata_s ad = {0,};
 &nbsp;&nbsp;&nbsp;&nbsp;int ret = 0;
 &nbsp;&nbsp;&nbsp;&nbsp;ui_app_lifecycle_callback_s event_callback = {0,};
 &nbsp;&nbsp;&nbsp;&nbsp;app_event_handler_h handlers[5] = {NULL,};
@@ -156,7 +156,7 @@ create_base_gui(appdata_s *ad)
 
 &nbsp;&nbsp;&nbsp;&nbsp;/* Label */
 &nbsp;&nbsp;&nbsp;&nbsp;ad-&gt;label = elm_label_add(ad-&gt;conform);
-&nbsp;&nbsp;&nbsp;&nbsp;elm_object_text_set(ad-&gt;label, &quot;&lt;align=center&gt;Hello EFL&lt;/align&gt;&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;elm_object_text_set(ad-&gt;label, &quot;&lt;align=center&gt;Hello Tizen&lt;/align&gt;&quot;);
 &nbsp;&nbsp;&nbsp;&nbsp;evas_object_size_hint_weight_set(ad-&gt;label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
 &nbsp;&nbsp;&nbsp;&nbsp;elm_object_content_set(ad-&gt;conform, ad-&gt;label);
 
index b20a9e7..c959968 100644 (file)
@@ -57,12 +57,12 @@ main(int argc, char* argv[])
 {
 &nbsp;&nbsp;&nbsp;&nbsp;appdata_s ad = {0,};
 &nbsp;&nbsp;&nbsp;&nbsp;int ret = 0;
-&nbsp;&nbsp;&nbsp;&nbsp;watch_app_lifecycle_callback_s callback = {0,};
+&nbsp;&nbsp;&nbsp;&nbsp;watch_app_lifecycle_callback_s event_callback = {0,};
 
-&nbsp;&nbsp;&nbsp;&nbsp;callback.create = app_create;
-&nbsp;&nbsp;&nbsp;&nbsp;callback.time_tick = app_time_tick;
+&nbsp;&nbsp;&nbsp;&nbsp;event_callback.create = app_create;
+&nbsp;&nbsp;&nbsp;&nbsp;event_callback.time_tick = app_time_tick;
 
-&nbsp;&nbsp;&nbsp;&nbsp;ret = watch_app_main(argc, argv, &amp;callback, &amp;ad);
+&nbsp;&nbsp;&nbsp;&nbsp;ret = watch_app_main(argc, argv, &amp;event_callback, &amp;ad);
 
 &nbsp;&nbsp;&nbsp;&nbsp;return ret;
 }
@@ -261,11 +261,11 @@ main(int argc, char* argv[])
 &nbsp;&nbsp;&nbsp;&nbsp;int ret = 0;
 &nbsp;&nbsp;&nbsp;&nbsp;watch_app_lifecycle_callback_s event_callback = {0,};
 
-&nbsp;&nbsp;&nbsp;&nbsp;callback.create = app_create;
-&nbsp;&nbsp;&nbsp;&nbsp;callback.time_tick = app_time_tick;
+&nbsp;&nbsp;&nbsp;&nbsp;event_callback.create = app_create;
+&nbsp;&nbsp;&nbsp;&nbsp;event_callback.time_tick = app_time_tick;
 
-&nbsp;&nbsp;&nbsp;&nbsp;callback.ambient_tick = app_ambient_tick;
-&nbsp;&nbsp;&nbsp;&nbsp;callback.ambient_changed = app_ambient_changed;
+&nbsp;&nbsp;&nbsp;&nbsp;event_callback.ambient_tick = app_ambient_tick;
+&nbsp;&nbsp;&nbsp;&nbsp;event_callback.ambient_changed = app_ambient_changed;
 
 &nbsp;&nbsp;&nbsp;&nbsp;ret = watch_app_main(argc, argv, &amp;event_callback, &amp;ad);
 
index 6111734..e241fbf 100644 (file)
@@ -68,7 +68,7 @@
 int
 main(int argc, char *argv[])
 {
-&nbsp;&nbsp;&nbsp;&nbsp;widget_app_lifecycle_callback_s ops = {NULL,};
+&nbsp;&nbsp;&nbsp;&nbsp;widget_app_lifecycle_callback_s ops = {0,};
 &nbsp;&nbsp;&nbsp;&nbsp;int ret;
 
 &nbsp;&nbsp;&nbsp;&nbsp;ops.create = widget_app_create;
@@ -76,7 +76,7 @@ main(int argc, char *argv[])
 
 &nbsp;&nbsp;&nbsp;&nbsp;ret = widget_app_main(argc, argv, &amp;ops, NULL);
 &nbsp;&nbsp;&nbsp;&nbsp;if (ret != WIDGET_ERROR_NONE)
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;widget_app_main() failed. err = %d&quot;, ret);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;widget_app_main() failed. Err = %d&quot;, ret);
 
 &nbsp;&nbsp;&nbsp;&nbsp;return ret;
 }
@@ -96,7 +96,7 @@ widget_app_create(void *user_data)
 <p>At the end of the <span style="font-family: Courier New,Courier,monospace">widget_app_create()</span> function, remember to create a widget instance class and return a handle for it, so that the handle can be used for making widget instances.</p>
 
 <pre class="prettyprint">
-&nbsp;&nbsp;&nbsp;&nbsp;return widget_app_class_create(obj_callback, user_data);
+&nbsp;&nbsp;&nbsp;&nbsp;return widget_app_class_create(ops, user_data);
 }
 </pre></li>
 
@@ -200,7 +200,7 @@ widget_app_create(void *user_data)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.update = widget_instance_update,
 &nbsp;&nbsp;&nbsp;&nbsp;};
 
-&nbsp;&nbsp;&nbsp;&nbsp;return widget_app_class_create(obj_callback, user_data);
+&nbsp;&nbsp;&nbsp;&nbsp;return widget_app_class_create(ops, user_data);
 }
 </pre></li>
 </ol>
@@ -292,7 +292,9 @@ widget_instance_create(widget_context_h context, bundle *content,
 }
 </pre>
 </li>
-<li>You can get the private data from the widget instance by calling the <span style="font-family: Courier New,Courier,monospace">widget_app_context_get_tag()</span> function of the Widget Application API:
+<li>You can get the private data from the widget instance by calling the <span style="font-family: Courier New,Courier,monospace">widget_app_context_get_tag()</span> function of the Widget Application API.
+
+<p>The following code within the  <span style="font-family: Courier New,Courier,monospace">widget_instance_update()</span> callback is not included in the default application template in the SDK, but you can add it to test the data handling feature.</p>
 <pre class="prettyprint">
 static int
 widget_instance_update(widget_context_h context, bundle *content,
@@ -302,6 +304,8 @@ widget_instance_update(widget_context_h context, bundle *content,
 &nbsp;&nbsp;&nbsp;&nbsp;widget_app_context_get_tag(context, (void**)&amp;wid);
 &nbsp;&nbsp;&nbsp;&nbsp;if (wid-&gt;label)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elm_object_text_set(wid-&gt;label, &quot;Update Widget&quot;);
+
+&nbsp;&nbsp;&nbsp;&nbsp;return WIDGET_ERROR_NONE;
 }
 </pre></li>
 <li>Make sure that all the resources that you allocate are freed in the callback function for the widget instance destructor:
index f5639a6..77b94be 100644 (file)
 &nbsp;&nbsp;&nbsp;&lt;head&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta charset=&quot;utf-8&quot; /&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0, maximum-scale=1.0&quot;&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta name=&quot;description&quot; content=&quot;Tizen Mobile Application&quot;/&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta name=&quot;description&quot; content=&quot;Tizen Mobile Web Basic Template&quot;/&gt;
 
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Basic Mobile Application&lt;/title&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Tizen Mobile Web Basic Application&lt;/title&gt;
 
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/style.css&quot;/&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;script src=&quot;js/main.js&quot;&gt;&lt;/script&gt;
 &nbsp;&nbsp;&nbsp;&lt;/head&gt;
 &nbsp;&nbsp;&nbsp;&lt;body&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;header&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;hgroup&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;h1&gt;Tizen app&lt;/h1&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;h2&gt;An empty template of tizen&lt;/h2&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/hgroup&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/header&gt;
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;nav&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ul&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Home&lt;/a&gt;&lt;/li&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#&quot;&gt;About Us&lt;/a&gt;&lt;/li&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Contact Us&lt;/a&gt;&lt;/li&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/ul&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/nav&gt;
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;article&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;header&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;h1&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;img src=&quot;images/tizen_32.png&quot; width=&quot;32&quot;/&gt; Application Name
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/h1&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/header&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;This is an empty template of Tizen Web Application. Tizen will support multiple device categories:&lt;/p&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ul&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;smartphones, tablets and smart TVs
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;netbooks, in-vehicle infotainment devices
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/ul&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;section&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;This is a basic section of a document.&lt;/p&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;The following button displays a time using JavaScript.&lt;/p&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id=&quot;divbutton1&quot;&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;button onclick=&quot;startTime();&quot;&gt;Clock&lt;/button&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/section&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/article&gt;
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;footer&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&copy; 2012 Company Name. All rights reserved.&lt;/p&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/footer&gt;    
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--Content--&gt;
 &nbsp;&nbsp;&nbsp;&lt;/body&gt;
 &lt;/html&gt;
 </pre>
 
+<p>The <span style="font-family: Courier New,Courier,monospace">&lt;body&gt;</span> element defines the area displaying content on the browser screen:</p>
 
-<p>The HTML code displays a header, tab list, text section, button, and footer on the screen.</p>
+<pre class="prettyprint">
+&lt;body&gt;
+&nbsp;&nbsp;&nbsp;&lt;div id=&quot;main&quot; class=&quot;page&quot;&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div class=&quot;contents&quot;&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;span id=&quot;content-text&quot;&gt;Basic&lt;/span&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;
+&nbsp;&nbsp;&nbsp;&lt;/div&gt;
+&lt;/body&gt;
+</pre>
 
-<p class="figure">Figure: Screen with a header, tab list, text section, button, and footer</p> 
-<p align="center"><img src="../../images/build_ui_basic_mw.png" alt="Screen with a header, tab list, text section, button, and footer" /></p>
+<p>The HTML code displays the <strong>Basic</strong> text on the screen.</p>
+
+<p class="figure">Figure: Screen with Basic text</p> 
+<p align="center"><img src="../../images/basic_app_running_1_mw.png" alt="Screen with Basic text" /></p>
 
 <h3 id="css" name="css">CSS</h3>
 
 </ul>
 <p>Creating a separate CSS file and managing it separately is convenient when it comes to applying changes in the future. The file is connected to the HTML file using a <span style="font-family: Courier New,Courier,monospace">&lt;link&gt;</span> element in the <span style="font-family: Courier New,Courier,monospace">&lt;head&gt;</span> element.</p>
 
+<p>The following code shows how to link to a CSS file:</p>
+
 <pre class="prettyprint">
 &lt;!DOCTYPE html&gt;
 &lt;html&gt;
 &nbsp;&nbsp;&nbsp;&lt;head&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta charset=&quot;utf-8&quot; /&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0, maximum-scale=1.0&quot;&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta name=&quot;description&quot; content=&quot;Tizen basic template generated by Tizen Web IDE&quot;/&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta name=&quot;description&quot; content=&quot;Tizen Mobile Web Basic Template&quot;/&gt;
 
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Tizen Web IDE - Tizen - Tizen basic Application&lt;/title&gt; 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Tizen Mobile Web Basic Application&lt;/title&gt; 
 
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/style.css&quot;/&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="highlight">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/style.css&quot;/&gt;</span>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;script src=&quot;js/main.js&quot;&gt;&lt;/script&gt;
 &nbsp;&nbsp;&nbsp;&lt;/head&gt;
 &nbsp;&nbsp;&nbsp;&lt;body&gt;
 &lt;/html&gt;
 </pre>
 
-<p>For example, the following lines in the CSS code describe the styling of the text in the element with the element name <span style="font-family: Courier New,Courier,monospace">h2</span> inside the <span style="font-family: Courier New,Courier,monospace">header</span> element:</p>
+<p>The following lines in the CSS code describe the styling of the text in an element with the <span style="font-family: Courier New,Courier,monospace">content-text</span> class name:</p>
 
 <ul>
 <li><span style="font-family: Courier New,Courier,monospace">css/style.css</span>:
 <pre class="prettyprint">
-* 
+html,
+body
 {
-&nbsp;&nbsp;&nbsp;font-family: Lucida Sans, Arial, Helvetica, sans-serif;
+&nbsp;&nbsp;&nbsp;width: 100%;
+&nbsp;&nbsp;&nbsp;height: 100%;
+&nbsp;&nbsp;&nbsp;margin: 0 auto;
+&nbsp;&nbsp;&nbsp;padding: 0;
+&nbsp;&nbsp;&nbsp;background-color: #222222;
+&nbsp;&nbsp;&nbsp;color: #ffffff;
 }
-
-body 
+.page
 {
-&nbsp;&nbsp;&nbsp;margin: 0px auto;
+&nbsp;&nbsp;&nbsp;width: 100%;
+&nbsp;&nbsp;&nbsp;height: 100%;
+&nbsp;&nbsp;&nbsp;display: table;
 }
-
-header h1 
+.contents
 {
-&nbsp;&nbsp;&nbsp;font-size: 36px;
-&nbsp;&nbsp;&nbsp;margin: 0px;
+&nbsp;&nbsp;&nbsp;display: table-cell;
+&nbsp;&nbsp;&nbsp;vertical-align: middle;
+&nbsp;&nbsp;&nbsp;text-align: center;
+&nbsp;&nbsp;&nbsp;-webkit-tap-highlight-color: transparent;
 }
-
-header h2 
+#content-text
 {
-&nbsp;&nbsp;&nbsp;font-size: 18px;
-&nbsp;&nbsp;&nbsp;margin: 0px;
-&nbsp;&nbsp;&nbsp;color: #888;
-&nbsp;&nbsp;&nbsp;font-style: italic;
+&nbsp;&nbsp;&nbsp;font-weight: bold;
+&nbsp;&nbsp;&nbsp;font-size: 5em;
 }
 </pre>
 </li>
 <li><span style="font-family: Courier New,Courier,monospace">index.html</span>:
 <pre class="prettyprint">
-&lt;!DOCTYPE html&gt;
-&lt;html&gt;
-&nbsp;&nbsp;&nbsp;&lt;head&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--Content--&gt;
-&nbsp;&nbsp;&nbsp;&lt;/head&gt;
-
-&nbsp;&nbsp;&nbsp;&lt;body&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;header&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;hgroup&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;h1&gt;Tizen app&lt;/h1&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;h2&gt;An empty template of tizen&lt;/h2&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/hgroup&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/header&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--Content--&gt;
-&nbsp;&nbsp;&nbsp;&lt;/body&gt;
-&lt;/html&gt;
+&lt;body&gt;
+&nbsp;&nbsp;&nbsp;&lt;div id=&quot;main&quot; class=&quot;page&quot;&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div class=&quot;contents&quot;&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;span id=&quot;content-text&quot;&gt;Basic&lt;/span&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;
+&nbsp;&nbsp;&nbsp;&lt;/div&gt;
+&lt;/body&gt;
 </pre>
-</li></ul>
-<p>Changing the part of the CSS code from <span style="font-family: Courier New,Courier,monospace">color: #888</span> to <span style="font-family: Courier New,Courier,monospace">color: #ff0000</span> changes the color of the text:</p>
+</li>
+</ul>
+<p>By default, the text uses the <span style="font-family: Courier New,Courier,monospace">#ffffff</span> color (white), defined for the <span style="font-family: Courier New,Courier,monospace">&lt;body&gt;</span> element. If you change the CSS code and add a separate color for the <span style="font-family: Courier New,Courier,monospace">content-text</span> class, the text color changes (in this case, to <span style="font-family: Courier New,Courier,monospace">#ff0000</span> red):</p>
 
 <pre class="prettyprint">
-header h2 
+#content-text
 {
-&nbsp;&nbsp;&nbsp;font-size: 18px;
-&nbsp;&nbsp;&nbsp;margin: 0px;
-&nbsp;&nbsp;&nbsp;color: #ff0000;
-&nbsp;&nbsp;&nbsp;font-style: italic;
+&nbsp;&nbsp;&nbsp;font-weight: bold;
+&nbsp;&nbsp;&nbsp;font-size: 5em;
+&nbsp;&nbsp;&nbsp;<span class="highlight">color: #ff0000;</span>
 }
 </pre>
+
 <p class="figure">Figure: Screen with a new text color</p> 
 <p align="center"><img src="../../images/build_ui_basic_textbox_mw.png" alt="Screen with a new text color" /></p>
 
@@ -559,7 +532,7 @@ header h2
 <li>Exit the application.
 <p>You can make your application exit by adding more lines to the <span style="font-family: Courier New,Courier,monospace">app.js</span> file.</p>
 <p>You have to consider the fact that when the user clicks the back key, the application can only exit if it is showing the main page. If the second page is showing, the application must return to the main page.</p>
-<p>The following example shows how to handle the back key input with page navigation and application exit:</p>
+<p>The following example shows how to handle the back key input with page navigation and application exit. This code is included in the <strong>TAU Basic</strong> project template <span style="font-family: Courier New,Courier,monospace">main.js</span> file by default.</p>
 <pre class="prettyprint">
 (function () 
 {
index 4668eac..a28cbf0 100644 (file)
@@ -68,9 +68,9 @@
 &nbsp;&nbsp;&nbsp;&lt;head&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta charset=&quot;utf-8&quot; /&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0, maximum-scale=1.0&quot;&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta name=&quot;description&quot; content=&quot;Tizen Wearable basic template generated by Samsung Wearable Web IDE&quot;/&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta name=&quot;description&quot; content=&quot;Tizen Wearable Web Basic Template&quot;/&gt;
 
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Tizen Wearable Web IDE - Tizen Wearable - Tizen Wearable basic Application&lt;/title&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Tizen Wearable Web Basic Application&lt;/title&gt;
 
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/style.css&quot;/&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;script src=&quot;js/main.js&quot;&gt;&lt;/script&gt;
 <p>The <span style="font-family: Courier New,Courier,monospace">&lt;body&gt;</span> element defines the area displaying content on the browser screen:</p>
 
 <pre class="prettyprint">
-&lt;!DOCTYPE html&gt;
-&lt;html&gt;
-&nbsp;&nbsp;&nbsp;&lt;head&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta charset=&quot;utf-8&quot; /&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0, maximum-scale=1.0&quot;&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta name=&quot;description&quot; content=&quot;Tizen Wearable basic template generated by Samsung Wearable Web IDE&quot;/&gt;
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Tizen Wearable Web IDE - Tizen Wearable - Tizen Wearable basic Application&lt;/title&gt;
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/style.css&quot;/&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;script src=&quot;js/main.js&quot;&gt;&lt;/script&gt;
-&nbsp;&nbsp;&nbsp;&lt;/head&gt;
-&nbsp;&nbsp;&nbsp;&lt;body&gt;
+&lt;body&gt;
+&nbsp;&nbsp;&nbsp;&lt;div id=&quot;main&quot; class=&quot;page&quot;&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div class=&quot;contents&quot;&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div style=&#39;margin:auto;&#39;&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;span class=&quot;content_text&quot; id=&quot;textbox&quot;&gt; Basic &lt;/span&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;span id=&quot;content-text&quot;&gt;Basic&lt;/span&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;
-&nbsp;&nbsp;&nbsp;&lt;/body&gt;
-&lt;/html&gt;
+&nbsp;&nbsp;&nbsp;&lt;/div&gt;
+&lt;/body&gt;
 </pre>
 
 <p>The HTML code displays the <strong>Basic</strong> text on the screen.</p>
 <li><span style="font-family: Courier New,Courier,monospace">@import</span> attribute in the CSS area</li>
 <li><span style="font-family: Courier New,Courier,monospace">&lt;style&gt;</span> element in the <span style="font-family: Courier New,Courier,monospace">&lt;head&gt;</span> element</li>
 </ul>
-<p>Applying the style of an HTML element directly with the style attribute has the highest priority.</p>
-<p>The following code shows how to set the margin of the <span style="font-family: Courier New,Courier,monospace">&lt;div&gt;</span> element to be automatic so that the browser calculates the margin automatically and the text is placed in the center.</p>
-
-<pre class="prettyprint">
-&lt;!DOCTYPE html&gt;
-&lt;html&gt;
-&nbsp;&nbsp;&nbsp;&lt;head&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta charset=&quot;utf-8&quot; /&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0, maximum-scale=1.0&quot;&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta name=&quot;description&quot; content=&quot;Tizen Wearable basic template generated by Samsung Wearable Web IDE&quot;/&gt;
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Tizen Wearable Web IDE - Tizen Wearable - Tizen Wearable basic Application&lt;/title&gt;
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/style.css&quot;/&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;script src=&quot;js/main.js&quot;&gt;&lt;/script&gt;
-&nbsp;&nbsp;&nbsp;&lt;/head&gt;
-&nbsp;&nbsp;&nbsp;&lt;body&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div class=&quot;contents&quot;&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>&lt;div style=&#39;margin:auto;&#39;&gt;</strong>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;span class=&quot;content_text&quot; id=&quot;textbox&quot;&gt; Basic &lt;/span&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;
-&nbsp;&nbsp;&nbsp;&lt;/body&gt;
-&lt;/html&gt;
-</pre>
-
-<p>Creating a separate CSS file and managing it separately is convenient when it comes to applying changes in the future. The file is connected to the HTML file using a <span style="font-family: Courier New,Courier,monospace">&lt;link&gt;</span> element in the <span style="font-family: Courier New,Courier,monospace">&lt;head&gt;</span> element.</p>
+<p>Applying the style of an HTML element directly with the style attribute has the highest priority. On the other hand, creating a separate CSS file and managing it separately is convenient when it comes to applying changes in the future. The file is connected to the HTML file using a <span style="font-family: Courier New,Courier,monospace">&lt;link&gt;</span> element in the <span style="font-family: Courier New,Courier,monospace">&lt;head&gt;</span> element.</p>
+<p>The following code shows how to link to a CSS file, and how to use the <span style="font-family: Courier New,Courier,monospace">&lt;style&gt;</span> element to set the margin of the <span style="font-family: Courier New,Courier,monospace">&lt;div&gt;</span> element to be automatic so that the browser calculates the margin automatically and the text is placed in the center:</p>
 
 <pre class="prettyprint">
 &lt;!DOCTYPE html&gt;
 &nbsp;&nbsp;&nbsp;&lt;head&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta charset=&quot;utf-8&quot; /&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0, maximum-scale=1.0&quot;&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta name=&quot;description&quot; content=&quot;Tizen Wearable basic template generated by Samsung Wearable Web IDE&quot;/&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta name=&quot;description&quot; content=&quot;Tizen Wearable Web Basic Template&quot;/&gt;
 
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Tizen Wearable Web IDE - Tizen Wearable - Tizen Wearable basic Application&lt;/title&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Tizen Wearable Web Basic Application&lt;/title&gt;
 
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<strong>link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/style.css&quot;/&gt;</strong>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="highlight">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/style.css&quot;/&gt;</span>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;script src=&quot;js/main.js&quot;&gt;&lt;/script&gt;
 &nbsp;&nbsp;&nbsp;&lt;/head&gt;
 &nbsp;&nbsp;&nbsp;&lt;body&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div class=&quot;contents&quot;&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div style=&#39;margin:auto;&#39;&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;span class=&quot;content_text&quot; id=&quot;textbox&quot;&gt; Basic &lt;/span&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id=&quot;main&quot; class=&quot;page&quot;&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div class=&quot;contents&quot; <span class="highlight">style=&#39;margin:auto;&#39;</span>&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;span id=&quot;content-text&quot;&gt;Basic&lt;/span&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;
 &nbsp;&nbsp;&nbsp;&lt;/body&gt;
 &lt;/html&gt;
 </pre>
 
-<p>For example, the following lines in the CSS code describe the styling of the text in an element with the <span style="font-family: Courier New,Courier,monospace">content_text</span> class name:</p>
+<p>The following lines in the CSS code describe the styling of the text in an element with the <span style="font-family: Courier New,Courier,monospace">content-text</span> class name:</p>
 
 <ul>
 <li><span style="font-family: Courier New,Courier,monospace">css/style.css</span>:
 <pre class="prettyprint">
-* 
+html,
+body
 {
-&nbsp;&nbsp;&nbsp;font-family: Verdana, Lucida Sans, Arial, Helvetica, sans-serif;
+&nbsp;&nbsp;&nbsp;width: 100%;
+&nbsp;&nbsp;&nbsp;height: 100%;
+&nbsp;&nbsp;&nbsp;margin: 0 auto;
+&nbsp;&nbsp;&nbsp;padding: 0;
+&nbsp;&nbsp;&nbsp;background-color: #222222;
+&nbsp;&nbsp;&nbsp;color: #ffffff;
 }
-body 
+.page
 {
-&nbsp;&nbsp;&nbsp;margin: 0px auto;
-&nbsp;&nbsp;&nbsp;background-color:#222;
+&nbsp;&nbsp;&nbsp;width: 100%;
+&nbsp;&nbsp;&nbsp;height: 100%;
+&nbsp;&nbsp;&nbsp;display: table;
 }
-.contents 
+.contents
 {
-&nbsp;&nbsp;&nbsp;display: flex;
-&nbsp;&nbsp;&nbsp;display: -webkit-flex;
-&nbsp;&nbsp;&nbsp;box-sizing: border-box;
-&nbsp;&nbsp;&nbsp;-webkit-box-sizing: border-box;
-&nbsp;&nbsp;&nbsp;height:320px;
+&nbsp;&nbsp;&nbsp;display: table-cell;
+&nbsp;&nbsp;&nbsp;vertical-align: middle;
+&nbsp;&nbsp;&nbsp;text-align: center;
+&nbsp;&nbsp;&nbsp;-webkit-tap-highlight-color: transparent;
 }
-.content_text 
+#content-text
 {
 &nbsp;&nbsp;&nbsp;font-weight: bold;
 &nbsp;&nbsp;&nbsp;font-size: 5em;
-&nbsp;&nbsp;&nbsp;color: #fff;
 }
 </pre>
 </li>
 <li><span style="font-family: Courier New,Courier,monospace">index.html</span>:
 <pre class="prettyprint">
 &lt;body&gt;
-&nbsp;&nbsp;&nbsp;&lt;div class=contents&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div style=&#39;margin:auto;&#39;&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;span class=content_text id=textbox&gt;Basic&lt;/span&gt;
+&nbsp;&nbsp;&nbsp;&lt;div id=&quot;main&quot; class=&quot;page&quot;&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div class=&quot;contents&quot;&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;span id=&quot;content-text&quot;&gt;Basic&lt;/span&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;
 &nbsp;&nbsp;&nbsp;&lt;/div&gt;
 &lt;/body&gt;
 </pre>
 </li>
 </ul>
-<p>Changing the part of the CSS code from <span style="font-family: Courier New,Courier,monospace">color: #fff</span> to <span style="font-family: Courier New,Courier,monospace">color: #ff0000</span> changes the color of the text:</p>
+<p>By default, the text uses the <span style="font-family: Courier New,Courier,monospace">#ffffff</span> color (white), defined for the <span style="font-family: Courier New,Courier,monospace">&lt;body&gt;</span> element. If you change the CSS code and add a separate color for the <span style="font-family: Courier New,Courier,monospace">content-text</span> class, the text color changes (in this case, to <span style="font-family: Courier New,Courier,monospace">#ff0000</span> red):</p>
 
 <pre class="prettyprint">
-* 
-{
-&nbsp;&nbsp;&nbsp;font-family: Verdana, Lucida Sans, Arial, Helvetica, sans-serif;
-}
-body 
-{
-&nbsp;&nbsp;&nbsp;margin: 0px auto;
-&nbsp;&nbsp;&nbsp;background-color:#222;
-}
-.contents 
-{
-&nbsp;&nbsp;&nbsp;display: flex;
-&nbsp;&nbsp;&nbsp;display: -webkit-flex;
-&nbsp;&nbsp;&nbsp;box-sizing: border-box;
-&nbsp;&nbsp;&nbsp;-webkit-box-sizing: border-box;
-&nbsp;&nbsp;&nbsp;height:320px;
-}
-.content_text 
+#content-text
 {
 &nbsp;&nbsp;&nbsp;font-weight: bold;
 &nbsp;&nbsp;&nbsp;font-size: 5em;
-&nbsp;&nbsp;&nbsp;color: #ff0000;
+&nbsp;&nbsp;&nbsp;<span class="highlight">color: #ff0000;</span>
 }
 </pre>
 <p class="figure">Figure: Screen with a new text color</p> 
@@ -282,13 +232,13 @@ body
 &lt;!DOCTYPE html&gt;
 &lt;html&gt;
 &nbsp;&nbsp;&nbsp;&lt;head&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;link rel=&quot;stylesheet&quot; href=&quot;lib/tau/wearable/theme/default/tau.css&quot;/&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--For a circular device, import tau.circle.css--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;link rel=&quot;stylesheet&quot; media=&quot;all and (-tizen-geometric-shape: circle)&quot; href=&quot;lib/tau/wearable/theme/default/tau.circle.css&quot;&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;link rel=&quot;stylesheet&quot; href=&quot;lib/tau/wearable/theme/default/tau.min.css&quot;/&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--For a circular device, import tau.circle.min.css--&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;link rel=&quot;stylesheet&quot; media=&quot;all and (-tizen-geometric-shape: circle)&quot; href=&quot;lib/tau/wearable/theme/default/tau.circle.min.css&quot;&gt;
 &nbsp;&nbsp;&nbsp;&lt;/head&gt;
 &nbsp;&nbsp;&nbsp;&lt;body&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--HTML BODY CONTENT--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type=&quot;text/javascript&quot; src=&quot;lib/tau/wearable/js/tau.js&quot;&gt;&lt;/script&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type=&quot;text/javascript&quot; src=&quot;lib/tau/wearable/js/tau.min.js&quot;&gt;&lt;/script&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type=&quot;text/javascript&quot; src=&quot;js/circle-helper.js&quot;&gt;&lt;/script&gt;
 &nbsp;&nbsp;&nbsp;&lt;/body&gt;
 &lt;/html&gt;
@@ -551,7 +501,7 @@ body
 <li>Exit the application.
 <p>You can make your application exit by adding more lines to the <span style="font-family: Courier New,Courier,monospace">app.js</span> file.</p>
 <p>You have to consider the fact that when the user clicks the back key, the application can only exit if it is showing the main page. If the second page is showing, the application must return to the main page.</p>
-<p>The following example shows how to handle the back key input with page navigation and application exit. Overwrite the <span style="font-family: Courier New,Courier,monospace">app.js</span> file content with the following code:</p>
+<p>The following example shows how to handle the back key input with page navigation and application exit. This code is included in the <strong>TAU Basic</strong> project template <span style="font-family: Courier New,Courier,monospace">main.js</span> file by default.</p>
 <pre class="prettyprint">
 (function () 
 {
index 0022a9e..cbfcc19 100644 (file)
        </ul>
 
 <pre class="prettyprint">
-&lt;widget xmlns=&quot;http://www.w3.org/ns/widgets&quot; xmlns:tizen=&quot;http://tizen.org/ns/widgets&quot; 
+&lt;widget xmlns:tizen=&quot;http://tizen.org/ns/widgets&quot; xmlns=&quot;http://www.w3.org/ns/widgets&quot;  
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id=&quot;http://yourdomain/BasicWatch&quot; version=&quot;1.0.0&quot; viewmodes=&quot;maximized&quot;&gt;
-&nbsp;&nbsp;&nbsp;<span class="highlight">&lt;tizen:category name=&quot;http://tizen.org/category/wearable_clock&quot;/&gt;</span>
-&nbsp;&nbsp;&nbsp;&lt;tizen:application id=&quot;OEYCjlM8hl.BasicWatch&quot; package=&quot;OEYCjlM8hl&quot; required_version=&quot;2.3&quot; 
+&nbsp;&nbsp;&nbsp;&lt;tizen:application id=&quot;rko5hPHRgI.BasicWatch&quot; package=&quot;rko5hPHRgI&quot; required_version=&quot;2.3.1&quot; 
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="highlight">ambient_support=&quot;enable&quot;</span>/&gt;
+&nbsp;&nbsp;&nbsp;<span class="highlight">&lt;tizen:category name=&quot;http://tizen.org/category/wearable_clock&quot;/&gt;</span>
 
 &nbsp;&nbsp;&nbsp;&lt;!--Get timetick events, occuring once a minute to enable the UI to be updated--&gt;
 &nbsp;&nbsp;&nbsp;&lt;tizen:privilege name=&quot;http://tizen.org/privilege/alarm&quot;/&gt;
+
 &nbsp;&nbsp;&nbsp;&lt;tizen:setting background-support=&quot;disable&quot; encryption=&quot;disable&quot; hwkey-event=&quot;enable&quot;/&gt;
 &lt;/widget&gt;
 </pre>
@@ -91,7 +92,7 @@ window.onload = function onLoad()
 &nbsp;&nbsp;&nbsp;&#39;use strict&#39;;
 
 &nbsp;&nbsp;&nbsp;canvas = document.querySelector(&#39;canvas&#39;);
-&nbsp;&nbsp;&nbsp;context = canvas.getContext(&#39;2d&#39;);
+&nbsp;&nbsp;&nbsp;ctx = canvas.getContext(&#39;2d&#39;);
 &nbsp;&nbsp;&nbsp;clockRadius = document.body.clientWidth / 2;
 
 &nbsp;&nbsp;&nbsp;canvas.width = document.body.clientWidth;
@@ -102,7 +103,7 @@ window.onload = function onLoad()
 &nbsp;&nbsp;&nbsp;/* Add eventListener for tizenhwkey */
 &nbsp;&nbsp;&nbsp;window.addEventListener(&#39;tizenhwkey&#39;, function (e) 
 &nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (e.keyName == &#39;back&#39;) 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (e.keyName === &#39;back&#39;) 
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ 
@@ -167,10 +168,10 @@ function renderDots()
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i = 1,
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;angle = null;
 
-&nbsp;&nbsp;&nbsp;context.save();
-&nbsp;&nbsp;&nbsp;context.translate(canvas.width / 2, canvas.height / 2);
-&nbsp;&nbsp;&nbsp;context.beginPath();
-&nbsp;&nbsp;&nbsp;context.fillStyle = &#39;#999999&#39;;</pre>
+&nbsp;&nbsp;&nbsp;ctx.save();
+&nbsp;&nbsp;&nbsp;ctx.translate(canvas.width / 2, canvas.height / 2);
+&nbsp;&nbsp;&nbsp;ctx.beginPath();
+&nbsp;&nbsp;&nbsp;ctx.fillStyle = &#39;#999999&#39;;</pre>
 </li>
 <li>Create 4 dots on the sides of the watch face and use the <span style="font-family: Courier New,Courier,monospace">fill()</span> method to style the dots:
 <pre class="prettyprint">
@@ -180,23 +181,23 @@ function renderDots()
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dx = clockRadius * 0.9 * Math.cos(angle);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dy = clockRadius * 0.9 * Math.sin(angle);
 
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context.arc(dx, dy, 3, 0, 2 * Math.PI, false);
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context.fill();
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctx.arc(dx, dy, 3, 0, 2 * Math.PI, false);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctx.fill();
 &nbsp;&nbsp;&nbsp;}
-&nbsp;&nbsp;&nbsp;context.closePath();</pre>
+&nbsp;&nbsp;&nbsp;ctx.closePath();</pre>
 </li>
 <li>Create the center point:
 <pre class="prettyprint">
-&nbsp;&nbsp;&nbsp;context.beginPath();
+&nbsp;&nbsp;&nbsp;ctx.beginPath();
 
-&nbsp;&nbsp;&nbsp;context.fillStyle = &#39;#ff9000&#39;;
-&nbsp;&nbsp;&nbsp;context.strokeStyle = &#39;#fff&#39;;
-&nbsp;&nbsp;&nbsp;context.lineWidth = 4;
+&nbsp;&nbsp;&nbsp;ctx.fillStyle = &#39;#ff9000&#39;;
+&nbsp;&nbsp;&nbsp;ctx.strokeStyle = &#39;#fff&#39;;
+&nbsp;&nbsp;&nbsp;ctx.lineWidth = 4;
 
-&nbsp;&nbsp;&nbsp;context.arc(0, 0, 7, 0, 2 * Math.PI, false);
-&nbsp;&nbsp;&nbsp;context.fill();
-&nbsp;&nbsp;&nbsp;context.stroke();
-&nbsp;&nbsp;&nbsp;context.closePath();
+&nbsp;&nbsp;&nbsp;ctx.arc(0, 0, 7, 0, 2 * Math.PI, false);
+&nbsp;&nbsp;&nbsp;ctx.fill();
+&nbsp;&nbsp;&nbsp;ctx.stroke();
+&nbsp;&nbsp;&nbsp;ctx.closePath();
 }</pre>
 </li>
 </ol>
@@ -210,17 +211,17 @@ function renderDots()
 function renderNeedle(angle, radius) 
 {
 &nbsp;&nbsp;&nbsp;&#39;use strict&#39;;
-&nbsp;&nbsp;&nbsp;context.save();
-&nbsp;&nbsp;&nbsp;context.rotate(angle);
-&nbsp;&nbsp;&nbsp;context.beginPath();
-&nbsp;&nbsp;&nbsp;context.lineWidth = 4;
-&nbsp;&nbsp;&nbsp;context.strokeStyle = &#39;#fff&#39;;
-&nbsp;&nbsp;&nbsp;context.moveTo(6, 0);
-&nbsp;&nbsp;&nbsp;context.lineTo(radius, 0);
-&nbsp;&nbsp;&nbsp;context.closePath();
-&nbsp;&nbsp;&nbsp;context.stroke();
-&nbsp;&nbsp;&nbsp;context.closePath();
-&nbsp;&nbsp;&nbsp;context.restore();
+&nbsp;&nbsp;&nbsp;ctx.save();
+&nbsp;&nbsp;&nbsp;ctx.rotate(angle);
+&nbsp;&nbsp;&nbsp;ctx.beginPath();
+&nbsp;&nbsp;&nbsp;ctx.lineWidth = 4;
+&nbsp;&nbsp;&nbsp;ctx.strokeStyle = &#39;#fff&#39;;
+&nbsp;&nbsp;&nbsp;ctx.moveTo(6, 0);
+&nbsp;&nbsp;&nbsp;ctx.lineTo(radius, 0);
+&nbsp;&nbsp;&nbsp;ctx.closePath();
+&nbsp;&nbsp;&nbsp;ctx.stroke();
+&nbsp;&nbsp;&nbsp;ctx.closePath();
+&nbsp;&nbsp;&nbsp;ctx.restore();
 }</pre>
 </li>
 <li>Create the hour needle using the <span style="font-family: Courier New,Courier,monospace">renderHourNeedle()</span> method:
@@ -285,17 +286,17 @@ function watch()
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
 &nbsp;&nbsp;&nbsp;}
 
-&nbsp;&nbsp;&nbsp;var date = new Date(),
+&nbsp;&nbsp;&nbsp;var date = getDate(),
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hours = date.getHours(),
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;minutes = date.getMinutes(),
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;seconds = date.getSeconds(),
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hour = hours + minutes / 60,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;minute = minutes + seconds / 60;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;minute = minutes + seconds / 60,
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nextMove = 1000 - date.getMilliseconds();</pre>
 </li>
 <li>Every time a new time is indicated, erase the previous time (the previously positioned needles) using the <span style="font-family: Courier New,Courier,monospace">clearRect()</span> method:
 <pre class="prettyprint">
-&nbsp;&nbsp;&nbsp;context.clearRect(0, 0, context.canvas.width, context.canvas.height);</pre>
+&nbsp;&nbsp;&nbsp;ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);</pre>
 </li>
 <li>Point the clock needles to display the current time:
 <pre class="prettyprint">
@@ -303,7 +304,7 @@ function watch()
 &nbsp;&nbsp;&nbsp;renderHourNeedle(hour);
 &nbsp;&nbsp;&nbsp;renderMinuteNeedle(minute);
 
-&nbsp;&nbsp;&nbsp;context.restore();
+&nbsp;&nbsp;&nbsp;ctx.restore();
 &nbsp;&nbsp;&nbsp;setTimeout(function() 
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.requestAnimationFrame(watch);
@@ -366,22 +367,22 @@ window.requestAnimationFrame(watch);
 <pre class="prettyprint">
 function renderAmbientDots() 
 {
-&nbsp;&nbsp;&nbsp;&quot;use strict&quot;;
+&nbsp;&nbsp;&nbsp;&#39;use strict&#39;;
 
-&nbsp;&nbsp;&nbsp;context.save();
+&nbsp;&nbsp;&nbsp;ctx.save();
 
-&nbsp;&nbsp;&nbsp;context.translate(canvas.width / 2, canvas.height / 2);
+&nbsp;&nbsp;&nbsp;ctx.translate(canvas.width / 2, canvas.height / 2);
        
-&nbsp;&nbsp;&nbsp;context.beginPath();
+&nbsp;&nbsp;&nbsp;ctx.beginPath();
 
-&nbsp;&nbsp;&nbsp;context.fillStyle = &#39;#000000&#39;;
-&nbsp;&nbsp;&nbsp;context.strokeStyle = &#39;#fff&#39;;
-&nbsp;&nbsp;&nbsp;context.lineWidth = 4;
+&nbsp;&nbsp;&nbsp;ctx.fillStyle = &#39;#000000&#39;;
+&nbsp;&nbsp;&nbsp;ctx.strokeStyle = &#39;#fff&#39;;
+&nbsp;&nbsp;&nbsp;ctx.lineWidth = 4;
 
-&nbsp;&nbsp;&nbsp;context.arc(0, 0, 7, 0, 2 * Math.PI, false);
-&nbsp;&nbsp;&nbsp;context.fill();
-&nbsp;&nbsp;&nbsp;context.stroke();
-&nbsp;&nbsp;&nbsp;context.closePath();
+&nbsp;&nbsp;&nbsp;ctx.arc(0, 0, 7, 0, 2 * Math.PI, false);
+&nbsp;&nbsp;&nbsp;ctx.fill();
+&nbsp;&nbsp;&nbsp;ctx.stroke();
+&nbsp;&nbsp;&nbsp;ctx.closePath();
 }
 </pre>
 </li>
@@ -399,13 +400,13 @@ function ambientWatch()
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;minute = minutes + seconds / 60;
 
 &nbsp;&nbsp;&nbsp;/* Erase the previous time */
-&nbsp;&nbsp;&nbsp;context.clearRect(0, 0, context.canvas.width, context.canvas.height);
+&nbsp;&nbsp;&nbsp;ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
 
 &nbsp;&nbsp;&nbsp;renderAmbientDots();
 &nbsp;&nbsp;&nbsp;renderHourNeedle(hour);
 &nbsp;&nbsp;&nbsp;renderMinuteNeedle(minute);
 
-&nbsp;&nbsp;&nbsp;context.restore();
+&nbsp;&nbsp;&nbsp;ctx.restore();
 }
 </pre>
 </li>
index 1c61374..493441a 100644 (file)
                        <topic href="html/native/process/performance_n.htm" label="Optimizing Application Performance"></topic>
                </topic>
                <topic href="html/native/app_model/application_model_n.htm" label="Tizen Application Model"></topic>
-               <topic href="html/native/ui/ui_builder_overview_mn.htm" label="Overview of Tizen UI Development"></topic>
-               <topic href="html/native/ui/ui_builder_app_design_mn.htm" label="Designing Your Native Application"></topic>            
+               <topic href="html/native/feature/ui_builder_overview_mn.htm" label="Overview of Tizen UI Development"></topic>
+               <topic href="html/native/feature/ui_builder_app_design_mn.htm" label="Designing Your Native Application"></topic>               
                <topic href="html/native/details/details_n.htm" label="Understanding Tizen Programming">
                        <topic href="html/native/details/app_filtering_n.htm" label="Application Filtering"></topic>
                        <topic href="html/native/details/error_handling_n.htm" label="Error Handling"></topic>
                        <topic href="html/native/details/event_handling_n.htm" label="Event Handling"></topic>
                        <topic href="html/native/details/io_overview_n.htm" label="File System Directory Hierarchy"></topic>
-                       <topic href="html/native/details/sec_privileges_n.htm" label="Security and API Privileges"></topic>                     
+                       <topic href="html/native/details/sec_privileges_n.htm" label="Security and API Privileges"></topic>     
                        <topic href="html/native/details/tizen_apis_n.htm" label="Tizen APIs"></topic>  
                </topic>
+               <topic href="html/native/feature/app_connectivity_n.htm" label="Creating Applications with Connectivity and Network">
+                       <topic href="html/native/feature/app_connectivity_operation_n.htm" label="Network Operations"></topic>
+                       <topic href="html/native/feature/app_connectivity_usage_n.htm" label="Network Usage"></topic>
+                       <topic href="html/native/feature/app_connectivity_p2p_n.htm" label="P2P Connections with Wi-Fi Direct&#8482;"></topic>
+               </topic>
+               <topic href="html/native/feature/app_graphics_n.htm" label="Creating Applications with Graphics and Animation">
+                       <topic href="html/native/feature/app_graphics_square_n.htm" label="Squares on the Canvas"></topic>
+                       <topic href="html/native/feature/app_graphics_polygon_n.htm" label="Polygons on the Canvas"></topic>
+                       <topic href="html/native/feature/app_graphics_animation_n.htm" label="Animations"></topic>
+               </topic>
+               <topic href="html/native/feature/app_multimedia_n.htm" label="Creating Applications with Multimedia">
+                       <topic href="html/native/feature/app_multimedia_audio_n.htm" label="Audio Playback and Recording"></topic>
+                       <topic href="html/native/feature/app_multimedia_video_n.htm" label="Video Playback and Recording"></topic>
+                       <topic href="html/native/feature/app_multimedia_camera_n.htm" label="Image Capturing with the Camera"></topic>
+               </topic>
        </topic>
        
        <topic href="html/web/cover_page_w.htm" label="Web Application">
index 9b750e2..96742b2 100644 (file)
                                <li><a href="native/network/curl_n.htm">Curl</a></li>
                                <li><a href="native/network/iotcon_n.htm">Iotcon</a></li>
                                <li><a href="native/network/mtp_n.htm">MTP</a></li>
+                               <li><a href="native/network/nsd_n.htm">Network Service Discovery</a></li>
                                <li><a href="native/network/nfc_n.htm">NFC</a></li>
                                <li><a href="native/network/smartcard_n.htm">Smartcard</a></li>
                                <li><a href="native/network/wifi_n.htm">Wi-Fi</a></li>
index 6c611de..31f127f 100644 (file)
   <p>The main features of the Account Manager API include:
 </p> 
   <ul> 
-   <li>Creating and managing accounts</li> 
-   <li>Retrieving account information</li>
+   <li><a href="../../../../org.tizen.tutorials/html/native/account/account_tutorial_n.htm#add">Creating and managing accounts</a>
+   <p>You can also <a href="../../../../org.tizen.tutorials/html/native/account/account_tutorial_n.htm#secret">manage the account secrecy level</a> and <a href="../../../../org.tizen.tutorials/html/native/account/account_tutorial_n.htm#remove">remove accounts</a>.</p></li> 
+   <li><a href="../../../../org.tizen.tutorials/html/native/account/account_tutorial_n.htm#get">Retrieving account information</a>
+   <p>You can also get accounts based on a <a href="../../../../org.tizen.tutorials/html/native/account/account_tutorial_n.htm#retrieve">specific account provider package name</a>, or account providers based on a <a href="../../../../org.tizen.tutorials/html/native/account/account_tutorial_n.htm#capability">specific capability</a>.</p></li>
    <li>Receiving account change notifications</li> 
   </ul> 
   <table class="note"> 
     </tr> 
    </tbody> 
   </table>
+
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/account/account_tutorial_n.htm#prerequisites">prepare your application to use the account functionality</a>.</p>
   
-  <p>The <span style="font-family: Courier New,Courier,monospace">account.h</span> header file handles account-related information. The following table lists the account properties that can be modified.</p> 
+  <p>The <span style="font-family: Courier New,Courier,monospace">account.h</span> header file handles account-related information. The following table lists the account properties that can be modified. You can <a href="../../../../org.tizen.tutorials/html/native/account/account_tutorial_n.htm#queries">query the account details</a> with database queries, <a href="../../../../org.tizen.tutorials/html/native/account/account_tutorial_n.htm#type">retrieve the account type</a>, and <a href="../../../../org.tizen.tutorials/html/native/account/account_tutorial_n.htm#update">update the account information</a>.</p> 
   <table border="1"> 
    <caption>
      Table: Account properties 
   <p>If the application has defined the account provider information and implements the appcontrol for the account provider, the account provider is automatically registered when the application is installed.</p>   
   
 <h2 id="appcontrol" name="appcontrol">Account Application Control</h2> 
-  <p>The account application control, which allows the user to add and configure accounts, must be implemented in all applications that define an account provider. You are not required to define the application control information in the <strong>Application Control</strong> tab of the manifest editor.</p> 
+  <p>The account application control, which allows the user to add and configure accounts, must be implemented in all applications that define an account provider. You are not required to define the application control information in the <strong>Application Control</strong> tab of the manifest editor to <a href="../../../../org.tizen.tutorials/html/native/account/account_tutorial_n.htm#screen">add the application on the <strong>Account</strong> screen</a>.</p> 
   
   <p>This application control supports the <span style="font-family: Courier New,Courier,monospace">http://tizen.org/appcontrol/operation/account/add</span> and <span style="font-family: Courier New,Courier,monospace">http://tizen.org/appcontrol/operation/account/configure</span> operations.</p> 
  
   <p>You have to define the <span style="font-family: Courier New,Courier,monospace">app_control_cb()</span> callback and register it to <span style="font-family: Courier New,Courier,monospace">ui_app_lifecycle_callback::app_control</span>.</p>
   
   <p>The results of the operation are returned in the <span style="font-family: Courier New,Courier,monospace">app_control_get_operation()</span> event handler.</p> 
-  <p>The following table shows the ACCOUNT_OPERATION_SIGNIN (<span style="font-family: Courier New,Courier,monospace">http://tizen.org/appcontrol/operation/account/add</span>) operation.</p> 
+  <p>The following table shows the <span style="font-family: Courier New,Courier,monospace">ACCOUNT_OPERATION_SIGNIN</span> (<span style="font-family: Courier New,Courier,monospace">http://tizen.org/appcontrol/operation/account/add</span>) operation.</p> 
   <table border="1"> 
    <caption>
      Table: ACCOUNT_OPERATION_SIGNIN operation 
   <p>In <strong>Settings &gt; Accounts</strong>, if the specific account is clicked for setting the account information, this operation is launched.</p>
   <p> You have to define the <span style="font-family: Courier New,Courier,monospace">app_control_cb()</span> callback and register it to <span style="font-family: Courier New,Courier,monospace">ui_app_lifecycle_callback::app_control</span>. </p>
   <p>The results of the operation are returned in the <span style="font-family: Courier New,Courier,monospace">app_control_get_operation()</span> event handler.</p>
-  <p>The following table shows the ACCOUNT_OPERATION_VIEW (<span style="font-family: Courier New,Courier,monospace">http://tizen.org/appcontrol/operation/account/configure</span>) operation.</p>
+  <p>The following table shows the <span style="font-family: Courier New,Courier,monospace">ACCOUNT_OPERATION_VIEW</span> (<span style="font-family: Courier New,Courier,monospace">http://tizen.org/appcontrol/operation/account/configure</span>) operation.</p>
   
   <table border="1"> 
    <caption>
index 9aa583c..51ae4eb 100644 (file)
@@ -34,7 +34,7 @@
 <h1>OAuth 2.0</h1> 
   <p>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf.</p> 
   
-  <p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/account/oauth2_tutorial_n.htm#mgr_init">initialize the OAuth 2.0 manager</a> for use.</p>
+  <p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/account/oauth2_tutorial_n.htm#prerequisites">prepare your application to use the OAuth 2.0 functionality</a>.</p>
   
   <p>The OAuth 2.0 API allows you to:</p>
   <ul>
index 9d71603..447d261 100644 (file)
@@ -46,6 +46,9 @@
 <li>Remove registered sync job schedules.</li>
 <li><a href="../../../../org.tizen.tutorials/html/native/account/sync_manager_tutorial_n.htm#foreach_sync">Iterate registered sync job schedules</a>.</li>
 </ul>
+
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/account/sync_manager_tutorial_n.htm#prerequisites">prepare your application to use the sync manager functionality</a>.</p>
+
 <p>The sync manager operates the sync jobs based on the rules defined in the following table.</p>
   <table>
   <caption>Table: Sync job scheduling rules
@@ -61,7 +64,7 @@
     </tr>
     <tr>
      <td>Data changes on the device</td>
-     <td>A subscribed callback function is invoked whenever a database change occurs for a registered capability. The data change listener notices the changes by using the Calendar (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SOCIAL__CALENDAR__SVC__MODULE.html">mobile</a> applications), Contacts (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SOCIAL__CONTACTS__SVC__MODULE.html">mobile</a> applications), and Media Content (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__CONTENT__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__CONTENT__MODULE.html">wearable</a> applications) APIs. If there are any changes in the corresponding data, the sync manager notices the changes and schedules a sync job.
+     <td>A subscribed callback function is invoked whenever a database change occurs for a registered capability. The data change listener notices the changes by using the Calendar (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SOCIAL__CALENDAR__SVC__MODULE.html">mobile</a> applications), Contacts (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SOCIAL__CONTACTS__SVC__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SOCIAL__CONTACTS__SVC__MODULE.html">wearable</a> applications), and Media Content (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__CONTENT__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__CONTENT__MODULE.html">wearable</a> applications) APIs. If there are any changes in the corresponding data, the sync manager notices the changes and schedules a sync job.
         <p>Changing data in the Calendar database includes adding, updating, and deleting books, events, and todos. Changing data in the Contacts database includes adding, removing, and modifying contacts. The Media Content API provides notifications for changes in media types, such as image, music, sound, and video.</p></td>
     </tr>
     <tr>
@@ -75,7 +78,7 @@
     <tr>
      <td>Periodic sync</td>
      <td>The periodic sync means that you can schedule a sync job to be performed regularly. You can use this feature with the <span style="font-family: Courier New,Courier,monospace">sync_manager_add_periodic_sync_job()</span> function. You can also use the sync intervals through various enumerators provided through the Sync Manager API.
-        <p>When using the Sync Manager API, you can set an alarm indirectly. Consequently, the <span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/alarm.set</span> privilege is required.</p></td>
+        <p>When using the Sync Manager API, you can set an alarm indirectly.</p></td>
     </tr>
    </tbody>
   </table>
                <td><span style="font-family: Courier New,Courier,monospace">const char*</span></td>
                <td>Yes</td>
                <td>Capability for adding data change sync jobs.
-                          <p>A data change sync job can provide a notification whenever a corresponding data change occurs. If the <span style="font-family: Courier New,Courier,monospace">sync_manager_add_data_change_sync_job()</span> function is used with a capability, it is operated for the related capability only. In the case of using the calendar or contact capability, the respective <span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/calendar.read</span> or <span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/contact.read</span> privilege is required.</p>
+                          <p>A data change sync job can provide a notification whenever a corresponding data change occurs. If the <span style="font-family: Courier New,Courier,monospace">sync_manager_add_data_change_sync_job()</span> function is used with a capability, it is operated for the related capability only.</p>
                           <p>The following capabilities are available:</p>
                           <pre class="prettyprint">
 #define SYNC_SUPPORTS_CAPABILITY_CALENDAR &quot;http://tizen.org/sync/capability/calendar&quot;
index ca1e870..5aee925 100644 (file)
@@ -52,8 +52,8 @@
 <ul>
        <li><a href="../../../../org.tizen.tutorials/html/native/location/geofence_tutorial_n.htm#start">Create different types of geofences</a></li>
        <li><a href="../../../../org.tizen.tutorials/html/native/location/geofence_tutorial_n.htm#status">Get the current state</a></li>
-       <li><a href="../../../../org.tizen.tutorials/html/native/location/geofence_tutorial_n.htm#track">Get in and out alerts</a>
-       <p>You can get notifications about the in or out state based on the geofence defined by the user.</p></li>
+       <li>Get <a href="../../../../org.tizen.tutorials/html/native/location/geofence_tutorial_n.htm#track">in and out alerts</a> and <a href="../../../../org.tizen.tutorials/html/native/location/geofence_tutorial_n.htm#proximity">proximity alerts</a>
+       <p>You can get notifications about the in or out state and the proximity state based on the geofence defined by the user.</p></li>
        <li><a href="../../../../org.tizen.tutorials/html/native/location/geofence_tutorial_n.htm#info">Retrieve information about created geofences</a></li>
 </ul>
  <p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/location/geofence_tutorial_n.htm#prerequisites">prepare your application to use the geofence manager functionality</a>.</p>
index 10a194f..e64cb0d 100644 (file)
                </div>
                <div id="toc_border">
                        <div id="toc">
+                               <p class="toc-title">Content</p>
+                               <ul class="toc">
+                                       <li><a href="#geocode">Geocodes</a></li> 
+                                       <li><a href="#search_place">Place Search</a></li>
+                                       <li><a href="#search_route">Route Search</a></li>
+                                       <li><a href="#response">Map Service Responses</a></li>
+                                       <li><a href="#view">Map View Widget</a></li>
+                               </ul>                   
                                <p class="toc-title">Related Info</p>
                                <ul class="toc">
                                        <li><a href="../../../../org.tizen.tutorials/html/native/location/maps_tutorial_n.htm">Maps Service Tutorial</a></li>
@@ -32,7 +40,7 @@
        <div id="container"><div id="contents"><div class="content">
 
 <h1>Maps Service</h1>
-<p>Map service features include geocoding, reverse geocoding, place searching, route calculation, view widget, view object and view event.</p>
+<p>Map service features include geocoding, reverse geocoding, place searching, route calculation, and view widgets.</p>
 
   <p>This feature is supported in mobile applications only.</p>
 
        <li><a href="#search_route">Searching routes</a>
        <p>You can <a href="../../../../org.tizen.tutorials/html/native/location/maps_tutorial_n.htm#search_route">query a route</a> that defines a path between a start and destination point, passing optionally through  specific intermediate locations and calculated using a specified transportation method.</p></li>
        <li><a href="#response">Handling map service responses</a>
-       <p>You can receive responses from the map service through various callbacks.</p></li>
-       <li><a href="#view">View widget</a>
-       <p>You can create view widget and set various properties (theme, language, traffic, etc.) .</p></li>
-       <li><a href="#view_object">View object</a>
-       <p>You can create objects (marker, polyline and polygon) in view widget.</p></li>
-       <li><a href="#view_event">View event</a>
-       <p>You can receive responses about event over the view widget and get various data from the event.</p></li>
-       <br/>
+       <p>You can receive responses from the map service through various callbacks.</p></li>   
+       <li><a href="#view">Managing a map view widget</a>
+       <p>You can <a href="../../../../org.tizen.tutorials/html/native/location/maps_tutorial_n.htm#maps_view">create a map view widget</a> and set various properties (such as theme, language, and traffic).</p>
+       <p>You can create objects, such as markers, polylines and polygons, in the widget. You can also receive responses about events over the widget, and get various data from the events.</p></li>  
 </ul>
 
 <p>You can also <a href="../../../../org.tizen.tutorials/html/native/location/maps_tutorial_n.htm#cancel">cancel service requests</a> and <a href="../../../../org.tizen.tutorials/html/native/location/maps_tutorial_n.htm#preference">customize them</a>.</p>
                <li><span style="font-family: Courier New,Courier,monospace;">MAPS_ERROR_PERMISSION_DENIED</span>: The user has revoked a permission for the application to use the map service.</li>
                <li><span style="font-family: Courier New,Courier,monospace;">MAPS_ERROR_NOT_SUPPORTED</span>: The map request or feature you are trying to use is not supported in the map provider.</li>
                <li><span style="font-family: Courier New,Courier,monospace;">MAPS_ERROR_NETWORK_UNREACHABLE</span>, <span style="font-family: Courier New,Courier,monospace;">MAPS_ERROR_SERVICE_NOT_AVAILABLE</span>, or <span style="font-family: Courier New,Courier,monospace;"> MAPS_ERROR_CONNECTION_TIME_OUT</span>: The map provider cannot access the map server for various reasons.</li>
-       </ul>
-
-
+       </ul>   
 
-<h2 id="view" name="view">View widget</h2>
+       
+<h2 id="view" name="view">Map View Widget</h2>
 
-       <p>View widget features include drawing a map image on the map port, the specified rectangular area of the maps application GUI.</p>
-       <p>The following properties of view widget are provided:</p>
+       <p>The map view widget feature includes drawing a map image on the map port, which is a specified rectangular area of the map application UI.</p>
+       <p>With the widget, you can:</p>
        <ul>
-               <li>Show, move and resize the view widget.</li>
-               <li>Set a theme of view widget.</li>
+               <li>Show, move, and resize the widget.</li>
+               <li>Set the map view widget theme.</li>
                <li>Enable a 3D building.</li>
-               <li>Enable traffic information.</li>
+               <li>Enable traffic information.</li>
                <li>Enable a scalebar.</li>
-               <li>Set a language for view widget.</li>
+               <li>Set a language for the widget.</li>
        </ul>
 
-
-
-<h2 id="view_object" name="view_object">View object</h2>
-
-       <p>The following view object types are provided:</p>
+       <p>You can <a href="../../../../org.tizen.tutorials/html/native/location/maps_tutorial_n.htm#maps_object">create objects in the widget</a>. The following view object types are provided:</p>
        <ul>
-               <li>Create marker based on a specified geographical location, image and marker type.</li>
-               <li>Create polyline based on specified geographical locations, color and width.</li>
-               <li>Create polygon based on specified geographical locations and color.</li>
+               <li>Marker based on a specified geographical location, image, and marker type.</li>
+               <li>Polyline based on a specified geographical locations, color, and width.</li>
+               <li>Polygon based on a specified geographical locations and color.</li>
        </ul>
-       <p>Change properties is possible even after creating the object.</p>
-
-
+       <p>The object properties can be changed after the object has been created.</p>
 
-<h2 id="view_event" name="view_event">View event</h2>
-
-       <p>The asynchronous view event responses are implemented with callback interfaces (functions whose names end with <span style="font-family: Courier New,Courier,monospace;">cb</span>).</p>
-       <p>To handle the responses, you can use the view event type:</p>
+       <p>The map view widget can <a href="../../../../org.tizen.tutorials/html/native/location/maps_tutorial_n.htm#maps_event">handle events</a>. The asynchronous view event responses are implemented with callback functions based on the view event type:</p>
        <ul>
-               <li><span style="font-family: Courier New,Courier,monospace;">MAPS_VIEW_EVENT_GESTURE</span>: User's gesture is detected over the view widget.</li>
-               <li><span style="font-family: Courier New,Courier,monospace;">MAPS_VIEW_EVENT_ACTION</span>: Predefined action is occured.</li>
-               <li><span style="font-family: Courier New,Courier,monospace;">MAPS_VIEW_EVENT_OBJECT</span>: An event is occured on the created object.</li>
-               <li><span style="font-family: Courier New,Courier,monospace;">MAPS_VIEW_EVENT_READY</span>: The view widget is ready.</li>
+               <li><span style="font-family: Courier New,Courier,monospace;">MAPS_VIEW_EVENT_GESTURE</span>: User gesture is detected over the widget.</li>
+               <li><span style="font-family: Courier New,Courier,monospace;">MAPS_VIEW_EVENT_ACTION</span>: Predefined action occurs.</li>
+               <li><span style="font-family: Courier New,Courier,monospace;">MAPS_VIEW_EVENT_OBJECT</span>: Event occurs on the created object.</li>
+               <li><span style="font-family: Courier New,Courier,monospace;">MAPS_VIEW_EVENT_READY</span>: Map view widget is ready.</li>
        </ul>
-       <p>Each event has various datas and you can get the data with each APIs</p>
-
-
+       <p>Each event contains various data, and you can access the data with various <span style="font-family: Courier New,Courier,monospace;">maps_view_event_data_get_XXX()</span> functions.</p>
 </div></div></div>
 
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
index 14a245f..644ab1d 100644 (file)
@@ -40,7 +40,7 @@
 
 <ul>
 <li>Handling images
-<p>You can handle images by creating a source handle and filling it from an image buffer or media packet. <a href="../../../../org.tizen.tutorials/html/native/multimedia/media_vision_tutorial_n.htm#init">Create the source handle</a> with the <span style="font-family: Courier New,Courier,monospace;">mv_create_source()</span> function, and fill it with the <span style="font-family: Courier New,Courier,monospace;">mv_source_fill_by_buffer()</span> or <span style="font-family: Courier New,Courier,monospace;">mv_source_fill_by_media_packet()</span> function.</p>
+<p>You can handle images by creating a source handle and filling it from an image buffer or media packet. <a href="../../../../org.tizen.tutorials/html/native/multimedia/media_vision_tutorial_n.htm#prepare">Create the source handle</a> with the <span style="font-family: Courier New,Courier,monospace;">mv_create_source()</span> function, and fill it with the <span style="font-family: Courier New,Courier,monospace;">mv_source_fill_by_buffer()</span> or <span style="font-family: Courier New,Courier,monospace;">mv_source_fill_by_media_packet()</span> function.</p>
 </li>
 <li>Detecting barcodes
 <p>You can <a href="../../../../org.tizen.tutorials/html/native/multimedia/media_vision_tutorial_n.htm#detect">detect barcodes</a> in an image or from camera preview streams, and then decrypt them to display messages to the user.</p> 
@@ -74,6 +74,8 @@
 </li>
 </ul>
 
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/multimedia/media_vision_tutorial_n.htm#prerequisites">prepare your application to use the media vision functionality</a>.</p>
+
 <p>The following tables provides more information about the barcode generation specifications.</p>
 
 <table border="1" id="barcode"> 
index c6ecb36..585565c 100644 (file)
@@ -31,7 +31,7 @@
 <div id="container"><div id="contents"><div class="content">
 
 <h1>Metadata Editor</h1>
-<p>You can <a href="../../../../org.tizen.tutorials/html/native/multimedia/metadata_editor_tutorial_n.htm#edit_metadata">edit the metadata</a> of several popular audio formats using the metadata editor. You can add and remove album art, or update the information of the audio file. Remember to <a href="../../../../org.tizen.tutorials/html/native/multimedia/metadata_editor_tutorial_n.htm#init_metadata">initialize the metadata editor</a> before you start.</p>
+<p>You can <a href="../../../../org.tizen.tutorials/html/native/multimedia/metadata_editor_tutorial_n.htm#edit_metadata">edit the metadata</a> of several popular audio formats using the metadata editor. You can add and remove album art, or update the information of the audio file. Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/multimedia/metadata_editor_tutorial_n.htm#prerequisites">prepare your application to use the metadata editor functionality</a>.</p>
 
   <p>This feature is supported in mobile applications only.</p>
 
index 88b48be..cc91b14 100644 (file)
@@ -32,7 +32,7 @@
 <div id="container"><div id="contents"><div class="content">\r
 \r
 <h1>Metadata Extractor</h1>\r
-<p>Media files, such as mp3 and mp4 files, contain metadata. Metadata extractor enables you to <a href="../../../../org.tizen.tutorials/html/native/multimedia/metadata_extractor_tutorial_n.htm#get_metadata">extract metadata from the media files</a>. Remember to <a href="../../../../org.tizen.tutorials/html/native/multimedia/metadata_extractor_tutorial_n.htm#init_metadata">initialize it</a> before use.</p>\r
+<p>Media files, such as mp3 and mp4 files, contain metadata. Metadata extractor enables you to <a href="../../../../org.tizen.tutorials/html/native/multimedia/metadata_extractor_tutorial_n.htm#get_metadata">extract metadata from the media files</a>. Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/multimedia/metadata_extractor_tutorial_n.htm#prerequisites">prepare your application to use the metadata extractor functionality</a>.</p>\r
  \r
  <p class="figure">Figure: Getting metadata</p> \r
  <p align="center"><img src="../../images/metadata.png" alt="Getting metadata" /></p>\r
index 08be41a..575e221 100644 (file)
@@ -54,7 +54,7 @@
        <li><a href="metadata_extractor_n.htm">Metadata Extractor</a> <p>Enables you to extract metadata from the media files.</p></li>\r
        <li><a href="openal_n.htm">OpenAL</a> <p>Enables you to specify the objects and operations in producing high-quality audio output.</p></li>\r
        <li><a href="player_n.htm">Player</a>\r
-       <p>Enables you to play audio and manage the state of the media player.</p></li> \r
+       <p>Enables you to play audio and video files, and manage the state of the media player.</p></li> \r
        <li><a href="radio_n.htm">Radio</a>\r
        <p>Enables you to control the radio hardware on your system.</p></li>\r
        <li><a href="recorder_n.htm">Recorder</a> \r
index 57ffab4..6f5c705 100644 (file)
@@ -51,7 +51,7 @@
 <ul><li>Creating a context
 <p>You must first open an audio device through which your audio stream flows. After the device is successfully opened, create and activate a context. Once your device is associated with a current context, your commands are applied to that context.</p>
 
-<p>To <a href="../../../../org.tizen.tutorials/html/native/multimedia/openal_tutorial_n.htm#init">create a context</a>:</p>
+<p>To create a context:</p>
 
 <pre class="prettyprint">
 /* Open default device */
@@ -92,6 +92,7 @@ if (device != NULL) {
 
 <p>To use OpenAL, you must create a context and the initial set of buffers, load the buffers with sample data, create sources, attach the buffers to the sources, set the locations and directions for the listener and sources, and set the initial values for the OpenAL state global. You can also <a href="../../../../org.tizen.tutorials/html/native/multimedia/openal_tutorial_n.htm#buffer">queue buffers</a>.</p>
 
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/multimedia/openal_tutorial_n.htm#prerequisites">prepare your application to use the OpenAL functionality</a>.</p>
 
 
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
index b4adeae..ab68a91 100644 (file)
@@ -37,7 +37,7 @@
 </div>\r
 <div id="container"><div id="contents"><div class="content">\r
 <h1>Player</h1>\r
-<p>You can play audio, video, and tones in your application. Remember to <a href="../../../../org.tizen.tutorials/html/native/multimedia/player_tutorial_n.htm#init">initialize the player</a> before use.</p> \r
+<p>You can play audio and video in your application.</p> \r
   <p>The main player features are:</p> \r
   <ul>\r
     <li><a href="#audio">Handling audio</a> \r
@@ -50,6 +50,7 @@
        <p>Enables you to set specific URLs for streaming media playback.</p></li>      \r
 </ul>\r
    \r
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/multimedia/player_tutorial_n.htm#prerequisites">prepare your application to use the player functionality</a> and <a href="../../../../org.tizen.tutorials/html/native/multimedia/player_tutorial_n.htm#prepare">set up the player</a>.</p>\r
 <p>The Player API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__PLAYER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__PLAYER__MODULE.html">wearable</a> applications) enables your application to play video and sound. It supports 3 content formats: file, network stream, and memory. It also provides the following features:</p>\r
 \r
 <ul><li>Operating general controls for the <a href="#audio">audio</a> or <a href="#video">video</a> content, such as play, pause, resume, and stop</li> \r
@@ -73,7 +74,7 @@
   \r
   <p>The <span style="font-family: Courier New,Courier,monospace;">player_interrupted_cb()</span> function is called when an application is interrupted by another application. The player is paused or moved to an idle state according to the audio policy. You must check the state of the current instance and take appropriate action. If the player is changed to a paused state due to an interruption, the <span style="font-family: Courier New,Courier,monospace;">PLAYER_INTERRUPTED_COMPLETED</span> can be called at the end of the interruption. For example, if the application is interrupted by a call, alarm, or notification, the completed message is posted. However, no messages are posted if the interruption has other causes. Make sure you handle the application accordingly when audio switching occurs between various applications.</p>\r
   \r
-  <p>You can <a href="../../../../org.tizen.tutorials/html/native/multimedia/player_tutorial_n.htm#init_multiplayer">use multiple instances of the player</a> to play several audio data streams concurrently. This means that your application can <a href="../../../../org.tizen.tutorials/html/native/multimedia/player_tutorial_n.htm#play">play multiple uncompressed audio files</a> at the same time.</p> \r
+  <p>You can use multiple instances of the player to play several audio data streams concurrently. This means that your application can <a href="../../../../org.tizen.tutorials/html/native/multimedia/player_tutorial_n.htm#play">play multiple uncompressed audio files</a> at the same time.</p> \r
 \r
   <p>The following figure illustrates the general player state changes:</p> \r
   <p class="figure">Figure: Player state changes</p> \r
index b8bdd55..a5b2d00 100644 (file)
@@ -43,7 +43,9 @@
   <li>Setting the state of the radio</li>\r
 </ul>\r
   \r
-<p><a href="../../../../org.tizen.tutorials/html/native/multimedia/radio_tutorial_n.htm#init">Create a handle</a> for a radio instance using the <span style="font-family: Courier New,Courier,monospace;">radio_create()</span> function. A successful creation of the handle requires a radio tuner. You can switch the radio on and off using the <span style="font-family: Courier New,Courier,monospace;">radio_start()</span> and <span style="font-family: Courier New,Courier,monospace;">radio_stop()</span> functions. <a href="../../../../org.tizen.tutorials/html/native/multimedia/radio_tutorial_n.htm#scan">Scan for frequencies</a> and <a href="../../../../org.tizen.tutorials/html/native/multimedia/radio_tutorial_n.htm#tune">select the radio frequency</a> using the <span style="font-family: Courier New,Courier,monospace;">radio_set_frequency()</span> function, or <a href="../../../../org.tizen.tutorials/html/native/multimedia/radio_tutorial_n.htm#seek">seek an adjacent channel</a> with the <span style="font-family: Courier New,Courier,monospace;">radio_seek_up()</span> and <span style="font-family: Courier New,Courier,monospace;">radio_seek_down()</span> functions.</p>\r
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/multimedia/radio_tutorial_n.htm#prerequisites">prepare your application to use the radio functionality</a>.</p>\r
+\r
+<p>Create a handle for a radio instance using the <span style="font-family: Courier New,Courier,monospace;">radio_create()</span> function. A successful creation of the handle requires a radio tuner. You can switch the radio on and off using the <span style="font-family: Courier New,Courier,monospace;">radio_start()</span> and <span style="font-family: Courier New,Courier,monospace;">radio_stop()</span> functions. <a href="../../../../org.tizen.tutorials/html/native/multimedia/radio_tutorial_n.htm#scan">Scan for frequencies</a> and <a href="../../../../org.tizen.tutorials/html/native/multimedia/radio_tutorial_n.htm#tune">select the radio frequency</a> using the <span style="font-family: Courier New,Courier,monospace;">radio_set_frequency()</span> function, or <a href="../../../../org.tizen.tutorials/html/native/multimedia/radio_tutorial_n.htm#seek">seek an adjacent channel</a> with the <span style="font-family: Courier New,Courier,monospace;">radio_seek_up()</span> and <span style="font-family: Courier New,Courier,monospace;">radio_seek_down()</span> functions.</p>\r
 \r
 <p>The Radio API allows only one instance at the time. Radio playback can be interrupted by another radio application.</p>\r
 \r
index 3b44aa6..95f2356 100644 (file)
@@ -45,7 +45,9 @@
        <li>Controlling the system volume level</li>    \r
   </ul>\r
   \r
-  <p>To <a href="../../../../org.tizen.tutorials/html/native/multimedia/recorder_tutorial_n.htm#record_audio">record audio</a> or <a href="../../../../org.tizen.tutorials/html/native/multimedia/recorder_tutorial_n.htm#record_video">record a video</a>, you need to <a href="../../../../org.tizen.tutorials/html/native/multimedia/recorder_tutorial_n.htm#init_audio">initialize the audio recorder</a> or <a href="../../../../org.tizen.tutorials/html/native/multimedia/recorder_tutorial_n.htm#init_video">the video recorder</a>.</p>\r
+  <p>To <a href="../../../../org.tizen.tutorials/html/native/multimedia/recorder_tutorial_n.htm#record_audio">record audio</a> or <a href="../../../../org.tizen.tutorials/html/native/multimedia/recorder_tutorial_n.htm#record_video">record a video</a>, you need to <a href="../../../../org.tizen.tutorials/html/native/multimedia/recorder_tutorial_n.htm#prepare_audio">prepare the audio recorder</a> or <a href="../../../../org.tizen.tutorials/html/native/multimedia/recorder_tutorial_n.htm#prepare_video">the video recorder</a>.</p>\r
+  \r
+  <p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/multimedia/recorder_tutorial_n.htm#prerequisites">prepare your application to use the recorder functionality</a>.</p>\r
  \r
   <p>The following file formats are supported:</p>\r
 <ul>  \r
index 67466cd..c0fdf9f 100644 (file)
@@ -31,7 +31,7 @@
 <div id="container"><div id="contents"><div class="content">
 <h1>Screen Mirroring</h1>
 
- <p>You can <a href="../../../../org.tizen.tutorials/html/native/multimedia/screen_mirroring_tutorial_n.htm#connect">mirror the device screen</a> and sound to another device wirelessly using the screen mirroring feature. Tizen follows the Wi-Fi Display Technical Specification and supports the feature as a sink, which receives shared data from a source device that supports the Wi-Fi Display, and displays it. Remember to <a href="../../../../org.tizen.tutorials/html/native/multimedia/screen_mirroring_tutorial_n.htm#init">initialize the screen mirroring sink</a> and <a href="../../../../org.tizen.tutorials/html/native/multimedia/screen_mirroring_tutorial_n.htm#prepare">prepare it</a> before you start, and <a href="../../../../org.tizen.tutorials/html/native/multimedia/screen_mirroring_tutorial_n.htm#release">release the resources</a> when you are done.</p>
+ <p>You can <a href="../../../../org.tizen.tutorials/html/native/multimedia/screen_mirroring_tutorial_n.htm#connect">mirror the device screen</a> and sound to another device wirelessly using the screen mirroring feature. Tizen follows the Wi-Fi Display Technical Specification and supports the feature as a sink, which receives shared data from a source device that supports the Wi-Fi Display, and displays it. Remember to <a href="../../../../org.tizen.tutorials/html/native/multimedia/screen_mirroring_tutorial_n.htm#prerequisites">prepare your application to use the screen mirroring sink functionality</a> and <a href="../../../../org.tizen.tutorials/html/native/multimedia/screen_mirroring_tutorial_n.htm#prepare">set up the necessary callbacks</a> before you start, and <a href="../../../../org.tizen.tutorials/html/native/multimedia/screen_mirroring_tutorial_n.htm#release">release the resources</a> when you are done.</p>
 
 <p>This feature is supported in mobile applications only.</p>
  
index 27495e0..3410b30 100644 (file)
@@ -53,6 +53,8 @@
 <p><a href="../../../../org.tizen.tutorials/html/native/multimedia/sound_manager_tutorial_n.htm#query">Use the query functions</a> to get various information, such as the state of the sound devices.</p></li>\r
 </ul>\r
 \r
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/multimedia/sound_manager_tutorial_n.htm#prerequisites">prepare your application to use the sound manager functionality</a>.</p>\r
+\r
 <h2 id="volume" name="volume">Volume Control</h2>\r
 \r
 <p>You can manage the volume level of a particular sound type. With the Sound Manager API, you can set and get a volume level and a maximum volume level of a particular sound type. </p>\r
index de96bae..9556bb1 100644 (file)
@@ -38,7 +38,7 @@
 <p>The main features of the Thumbnail Util API include:</p>
 
 <ul><li>Video and image thumbnails
-<p>You can <a href="../../../../org.tizen.tutorials/html/native/multimedia/thumbnail_util_tutorial_n.htm#get_thumbnail">create thumbnails</a> with video and image files. Audio files are not supported. Remember to <a href="../../../../org.tizen.tutorials/html/native/multimedia/thumbnail_util_tutorial_n.htm#init_thumbnail">initialize the thumbnail utility</a> before use.</p></li>
+<p>You can <a href="../../../../org.tizen.tutorials/html/native/multimedia/thumbnail_util_tutorial_n.htm#get_thumbnail">create thumbnails</a> with video and image files. Audio files are not supported. Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/multimedia/thumbnail_util_tutorial_n.htm#prerequisites">prepare your application to use the thumbnail util functionality</a>.</p></li>
 <li>Custom size
 <p>You can create the thumbnail using any size you like. The Thumbnail Util API outputs the results according to the size you have set. This means that the thumbnail can be generated even if the output size differs from the original aspect ratio.</p></li></ul>
 
index bd4fcd0..4c53f3a 100644 (file)
@@ -39,7 +39,9 @@
    <li><p>Use a DTMF (Dual Tone Multi Frequency) preset frequency value of the <span style="font-family: Courier New,Courier,monospace;">tone_type_e</span>.</p></li> \r
   </ul> \r
 \r
-  <p>After you <a href="../../../../org.tizen.tutorials/html/native/multimedia/tone_player_tutorial_n.htm#init">initialize the tone player</a>, you can <a href="../../../../org.tizen.tutorials/html/native/multimedia/tone_player_tutorial_n.htm#play">start and stop playing a tone</a>. You can also <a href="../../../../org.tizen.tutorials/html/native/multimedia/tone_player_tutorial_n.htm#duration">play a tone for a specified duration</a>.</p>\r
+  <p>You can <a href="../../../../org.tizen.tutorials/html/native/multimedia/tone_player_tutorial_n.htm#play">start and stop playing a tone</a>, and <a href="../../../../org.tizen.tutorials/html/native/multimedia/tone_player_tutorial_n.htm#duration">play a tone for a specified duration</a>.</p>\r
+  \r
+  <p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/multimedia/tone_player_tutorial_n.htm#prerequisites">prepare your application to use the tone player functionality</a>.</p>\r
   \r
   <p>The following figures illustrate the general tone player states, and how the state changes when your application calls the Tone player API.</p> \r
   <p class="figure">Figure: Tone player states</p> \r
index 9ac3d94..09325a8 100644 (file)
 <p>This feature is supported in mobile applications only.</p>\r
 \r
 <p>With the Video Util API you can:</p>\r
-<ul><li><a href="../../../../org.tizen.tutorials/html/native/multimedia/video_util_tutorial_n.htm#init">Initialize the video utilities</a> for use</li>\r
+<ul><li><a href="../../../../org.tizen.tutorials/html/native/multimedia/video_util_tutorial_n.htm#prepare">Set up the video utilities</a></li>\r
 <li><a href="../../../../org.tizen.tutorials/html/native/multimedia/video_util_tutorial_n.htm#manage">Manage and monitor</a> the transcoding process</li>\r
 <li><a href="../../../../org.tizen.tutorials/html/native/multimedia/video_util_tutorial_n.htm#set">Set parameters</a> for the video utilities</li>\r
 <li><a href="../../../../org.tizen.tutorials/html/native/multimedia/video_util_tutorial_n.htm#get">Retrieve information</a> about the transcoding process</li></ul>\r
 \r
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/multimedia/video_util_tutorial_n.htm#prerequisites">prepare your application to use the video utilities</a>.</p>\r
+\r
 <p>The following figure shows the result of the video file size change (due to scaling and container and codec format change).</p>\r
 \r
  <p class="figure">Figure: Transcoder</p> \r
index 9fcb05e..b47a209 100644 (file)
@@ -43,7 +43,7 @@
    <li>Play audio media from local files</li> \r
    <li><a href="../../../../org.tizen.tutorials/html/native/multimedia/wav_player_tutorial_n.htm#start">Control playback</a> using play and stop</li> \r
   </ul> \r
-\r
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/multimedia/wav_player_tutorial_n.htm#prerequisites">prepare your application to use the WAV player functionality</a>.</p>\r
   <p>The audio formats your application can use with the WAV Player API include:</p> \r
   <ul> \r
    <li>WAV, OGG</li> \r
index 6887d17..577e5e3 100644 (file)
@@ -83,7 +83,7 @@
        <p>Bluetooth AVRCP is used with A2DP. You can handle remote controls (such as play, pause, stop, equalizer, repeat, shuffle, and scan) through AVRCP.</p></li>  \r
 </ul>\r
 \r
-<p><a href="../../../../org.tizen.tutorials/html/native/network/bluetooth_tutorial_n.htm#init">Initialize Bluetooth</a> before you start and <a href="../../../../org.tizen.tutorials/html/native/network/bluetooth_tutorial_n.htm#release">release all resources</a> when you are done.</p>\r
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/network/bluetooth_tutorial_n.htm#prerequisites">prepare your application to use the Bluetooth functionality</a>, and <a href="../../../../org.tizen.tutorials/html/native/network/bluetooth_tutorial_n.htm#release">release all resources</a> when you are done.</p>\r
 \r
 <p>Bluetooth use is based on profiles. Tizen Bluetooth features support the Audio, GATT, HDP, HID, and OPP client and server profiles.</p>\r
   \r
index bbea077..cd0b568 100644 (file)
@@ -57,7 +57,7 @@
 <p>The Connection Manager provides the following typedefs and enumerators for managing data connections:</p>\r
 \r
 <ul><li><span style="font-family: Courier New,Courier,monospace">connection_h</span>\r
-<p>Connection handle for all connection functions. To use the Connection Manager API, first <a href="../../../../org.tizen.tutorials/html/native/network/connection_tutorial_n.htm#init">create a connection handle</a> using the <span style="font-family: Courier New,Courier,monospace">connection_create()</span> function. Afterwards, you can obtain network information.</p></li>\r
+<p>Connection handle for all connection functions. To use the Connection Manager API, first create a connection handle using the <span style="font-family: Courier New,Courier,monospace">connection_create()</span> function. Afterwards, you can obtain network information.</p></li>\r
 <li><span style="font-family: Courier New,Courier,monospace">connection_profile_h</span>\r
 <p>Profile handle, which provides information according to the connection type.</p></li>\r
 <li>Connection state enumerators\r
@@ -69,6 +69,8 @@
 <li><span style="font-family: Courier New,Courier,monospace">connection_address_family_e</span>\r
 <p>Enumeration for the address family. It provides IPv4 and IPv6. You can use it as a parameter when you get the IP address of the current connection or proxy.</p></li></ul>\r
 \r
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/network/connection_tutorial_n.htm#prerequisites">prepare your application to use the connection functionality</a>.</p>\r
+\r
 <table class="note">\r
  <tbody>\r
   <tr>\r
index f4ad682..4631490 100644 (file)
@@ -37,7 +37,7 @@
 <p>The main features of the Curl API include:</p>
   <ul>
   <li>Initializing the HTTP and HTTPS request connection
-  <p>To allow the application to handle HTTP and HTTPS requests with various options, you must <a href="../../../../org.tizen.tutorials/html/native/network/curl_tutorial_n.htm#init">initialize the libcurl library and the connection</a>.</p>
+  <p>To allow the application to handle HTTP and HTTPS requests with various options, you must initialize the libcurl library and the connection.</p>
     <table class="note"> 
    <tbody> 
     <tr> 
@@ -65,6 +65,7 @@
   <li>Transferring HTTP requests
   <p>You can <a href="../../../../org.tizen.tutorials/html/native/network/curl_tutorial_n.htm#request">transfer HTTP requests</a> using the <span style="font-family: Courier New,Courier,monospace">curl_easy_setopt()</span> function.</p></li>
   </ul>
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/network/curl_tutorial_n.htm#prerequisites">prepare your application to use the Curl functionality</a>.</p>
 
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
 <script type="text/javascript" src="../../scripts/showhide.js"></script>
index f3a4023..c4bae63 100644 (file)
 <div id="container"><div id="contents"><div class="content">
 <h1>Iotcon</h1>
 
-<p><a href="https://www.iotivity.org/" target="_blank">IoTivity</a> offers seamless device-to-device connectivity to address the emerging needs of the Internet of Things (IoT) through the open source reference implementation of the OIC (Open Interconnect Consortium) standard specifications. IoT connectivity (Iotcon) provides the means of <a href="../../../../org.tizen.tutorials/html/native/network/iotcon_tutorial_n.htm#init">using IoTivity in Tizen</a>.</p>
+<p><a href="https://www.iotivity.org/" target="_blank">IoTivity</a> offers seamless device-to-device connectivity to address the emerging needs of the Internet of Things (IoT) through the open source reference implementation of the OIC (Open Interconnect Consortium) standard specifications. IoT connectivity (Iotcon) provides the means of using IoTivity in Tizen.</p>
 
 <p class="figure">Figure: IoTivity in Tizen</p> 
 <p align="center"><img alt="IoTivity in Tizen" src="../../images/iotivity.png" /></p> 
 
 <p>IoT connectivity is usually handled with a server and client. The server is responsible for creating and providing resources, and the client can access those resources through requests.</p>
 
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/network/iotcon_tutorial_n.htm#prerequisites">prepare your application to use the IoT functionality</a>.</p>
+
 <p>The main features of the Iotcon API include:</p>
 <ul>
 <li>Resource management
 </li>
 </ul>
 
+
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
 <script type="text/javascript" src="../../scripts/showhide.js"></script>
 </div></div></div>
index db1d80e..99fa0f3 100644 (file)
@@ -50,7 +50,7 @@
 <p>The main features of the MTP API include:</p>
 <ul>
 <li>Managing MTP
-<p>With the MTP Manager API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__MTP__MANAGER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__MTP__MANAGER__MODULE.html">wearable</a> applications) you can <a href="../../../../org.tizen.tutorials/html/native/network/mtp_tutorial_n.htm#init">initialize and deinitialize the MTP</a>, <a href="../../../../org.tizen.tutorials/html/native/network/mtp_tutorial_n.htm#events">set callbacks for MTP events</a>, and get various information, such as the <a href="../../../../org.tizen.tutorials/html/native/network/mtp_tutorial_n.htm#device_list">device list</a>, <a href="../../../../org.tizen.tutorials/html/native/network/mtp_tutorial_n.htm#storages">storage list</a>, <a href="../../../../org.tizen.tutorials/html/native/network/mtp_tutorial_n.htm#object_handle">object handle</a>, <a href="../../../../org.tizen.tutorials/html/native/network/mtp_tutorial_n.htm#object_and_thumbnail">object, and thumbnail</a>.</p></li>
+<p>With the MTP Manager API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__MTP__MANAGER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__MTP__MANAGER__MODULE.html">wearable</a> applications) you can initialize and deinitialize the MTP, <a href="../../../../org.tizen.tutorials/html/native/network/mtp_tutorial_n.htm#events">set callbacks for MTP events</a>, and get various information, such as the <a href="../../../../org.tizen.tutorials/html/native/network/mtp_tutorial_n.htm#device_list">device list</a>, <a href="../../../../org.tizen.tutorials/html/native/network/mtp_tutorial_n.htm#storages">storage list</a>, <a href="../../../../org.tizen.tutorials/html/native/network/mtp_tutorial_n.htm#object_handle">object handle</a>, <a href="../../../../org.tizen.tutorials/html/native/network/mtp_tutorial_n.htm#object_and_thumbnail">object, and thumbnail</a>.</p></li>
 <li>Retrieving device information
 <p>The MTP Device Information API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__MTP__DEVICEINFO__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__MTP__DEVICEINFO__MODULE.html">wearable</a> applications) allows you to <a href="../../../../org.tizen.tutorials/html/native/network/mtp_tutorial_n.htm#device_info">obtain various device details</a>, such as the device manufacturer name, model name, serial number, and version.</p></li>
 <li>Retrieving storage information
@@ -59,6 +59,8 @@
 <p>The MTP Object Information API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__MTP__OBJECTINFO__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__MTP__OBJECTINFO__MODULE.html">wearable</a> applications) allows you to <a href="../../../../org.tizen.tutorials/html/native/network/mtp_tutorial_n.htm#object_info">obtain various object details</a>, such as the object format, name, and size.</p></li>
 </ul>
 
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/network/mtp_tutorial_n.htm#prerequisites">prepare your application to use the MTP functionality</a>.</p>
+
 <p>The MTP API can be used in all profiles, but it is most popular in the TV profile.</p>
 
 <p>The internal implementation of the MTP references the <a href="http://www.usb.org/developers/docs/devclass_docs/MTPv1_1.zip" target="_blank">MTP specification</a> and uses <a href="http://libmtp.sourceforge.net/" target="_blank">LIBMTP</a>.</p>
index d1f57e0..96d33b1 100644 (file)
@@ -40,6 +40,7 @@
        <li><a href="curl_n.htm">Curl</a><p>Enables you to perform URL-related transfer activities with various protocols.</p></li>\r
        <li><a href="iotcon_n.htm">Iotcon</a><p>Enables you to use IoTivity in Tizen.</p></li>\r
        <li><a href="mtp_n.htm">MTP</a><p>Enables you to transfer files between 2 devices.</p></li>\r
+       <li><a href="nsd_n.htm">Network Service Discovery</a><p>Enables you to perform network service discoveries to announce local services and search for remote services.</p></li>\r
        <li><a href="nfc_n.htm">NFC</a><p>Enables you to use Near Field Communication (NFC) functionalities, such as reading and writing tags, and emulating a smart card.</p></li>\r
        <li><a href="smartcard_n.htm">Smartcard</a><p>Enables you to access secure elements (SE) through smart card features.</p></li>\r
        <li><a href="wifi_n.htm">Wi-Fi</a><p>Enables you to connect to a Wireless Local Area Network (WLAN) and transfer data over the network.</p></li>\r
index 6989439..fa0cab0 100644 (file)
     <li>NFC management\r
                <p>With the Manager API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__NFC__MANAGER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__NFC__MANAGER__MODULE.html">wearable</a> applications), you can, for example:</p>\r
 <ul>\r
-    <li><a href="../../../../org.tizen.tutorials/html/native/network/nfc_tutorial_n.htm#init">Initialize and deinitialize NFC</a>.</li>\r
+    <li>Initialize and deinitialize NFC.\r
+       </li>\r
     <li><a href="../../../../org.tizen.tutorials/html/native/network/nfc_tutorial_n.htm#enable">Enable and disable NFC</a>.</li>\r
     <li>Set callbacks for NFC events.</li>\r
        <li><a href="../../../../org.tizen.tutorials/html/native/network/nfc_tutorial_n.htm#work">Manage NFC connections</a>.</li>\r
        <li><a href="../../../../org.tizen.tutorials/html/native/network/nfc_tutorial_n.htm#get">Get cached NFC messages</a>.</li>\r
        <li><a href="../../../../org.tizen.tutorials/html/native/network/nfc_tutorial_n.htm#appcontrol">Use the NFC application control</a>.</li>\r
 </ul>\r
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/network/nfc_tutorial_n.htm#prerequisites">prepare your application to use the NFC functionality</a>.</p>\r
     </li>\r
     <li>NDEF support\r
                \r
@@ -79,7 +81,7 @@
     <li><a href="../../../../org.tizen.tutorials/html/native/network/nfc_tutorial_n.htm#send">Send an NDEF message</a> to a peer device.</li>\r
     <li>Receive an NDEF message from a peer device.</li>\r
 </ul>\r
-    <p><a href="../../../../org.tizen.tutorials/html/native/network/nfc_tutorial_n.htm#init_p2p">Initialize NFC P2P</a> before you start.</p>\r
+    <p><a href="../../../../org.tizen.tutorials/html/native/network/nfc_tutorial_n.htm#prepare_p2p">Prepare NFC P2P</a> before you start.</p>\r
     </li>\r
     <li>Card emulation mode\r
                <p>The card emulation mode allows an NFC device to <a href="../../../../org.tizen.tutorials/html/native/network/nfc_tutorial_n.htm#cardemulation">function as a smart card</a>. The mode provides access to secure elements (SEs).</p>\r
diff --git a/org.tizen.guides/html/native/network/nsd_n.htm b/org.tizen.guides/html/native/network/nsd_n.htm
new file mode 100644 (file)
index 0000000..bf35859
--- /dev/null
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
+    <script type="text/javascript" src="../../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
+  <title>Network Service Discovery</title>
+ </head>
+ <body onload="prettyPrint()" style="overflow: auto;">
+
+ <div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/> <img alt="Wearable native" src="../../images/wearable_s_n.png"/></p>
+    </div>
+
+    <div id="toc_border"><div id="toc">
+        <p class="toc-title">Content</p>
+        <ul class="toc">
+                       <li><a href="#DNSSD">DNSSD</a></li>
+                       <li><a href="#SSDP">SSDP</a></li>
+        </ul>  
+        <p class="toc-title">Related Info</p>
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.tutorials/html/native/network/nsd_tutorial_n.htm">Network Service Discovery Tutorial</a></li>
+                       <li><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__DNSSD__MODULE.html">DNSSD API for Mobile Native</a></li>
+                       <li><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__SSDP__MODULE.html">SSDP API for Mobile Native</a></li>
+                       <li><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__DNSSD__MODULE.html">DNSSD API for Wearable Native</a></li>
+                       <li><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__SSDP__MODULE.html">SSDP API for Wearable Native</a></li>
+            </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+<h1>Network Service Discovery</h1>
+
+<p>You can use 2 different protocols to perform network service discoveries to announce local services and search for remote services on a network:</p>
+<p>The supported service discovery protocols are:</p>
+<ul>
+<li>DNS-SD (DNS Service Discovery)</li>
+<li>SSDP (Simple Service Discovery Protocol)</li>
+</ul>
+<p>Both protocols allow the application to get details, such as the service names and the service locations on a network. Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/network/nsd_tutorial_n.htm#prerequisites">prepare your application to use the network service discovery functionality</a>.</p>
+
+<h2 id="DNSSD">DNSSD</h2>
+
+<p>The DNS-SD protocol provides functions for mDNS- and DNS-based service discovery.</p>
+
+<p>The main features of the DNSSD API include:</p>
+<ul>
+<li>Creating and registering a local service
+<p>To <a href="../../../../org.tizen.tutorials/html/native/network/nsd_tutorial_n.htm#dnssd_service">handle a local service</a>, you need a local service handle (<span style="font-family: Courier New,Courier,monospace">dnssd_service_h</span>).</p>
+<p>To announce a local service, create a local service handle using the <span style="font-family: Courier New,Courier,monospace">dnssd_create_local_service()</span> function, and set the service information using the handle. Afterwards, you can register the local service using the <span style="font-family: Courier New,Courier,monospace">dnssd_register_local_service()</span> function.</p>
+<p>When you no longer want to provide the local service, deregister it with the <span style="font-family: Courier New,Courier,monospace">dnssd_deregister_local_service()</span> function. To destroy the local service handle, use the <span style="font-family: Courier New,Courier,monospace">dnssd_destroy_local_service()</span> function.</p>
+</li>
+<li>Searching for remote services
+<p>You can <a href="../../../../org.tizen.tutorials/html/native/network/nsd_tutorial_n.htm#dnssd_search">search for the available remote services</a> on a network by using the <span style="font-family: Courier New,Courier,monospace">dnssd_start_browsing_service()</span> function. The browsing operations are handled by the browser handle (<span style="font-family: Courier New,Courier,monospace">dnssd_browser_h</span>).</p>
+<p>To stop the service search, use the <span style="font-family: Courier New,Courier,monospace">dnssd_stop_browsing_service()</span> function.</p>
+</li></ul>
+
+<h2 id="SSDP">SSDP</h2>
+
+<p>The SSDP protocol provides functions for simple service discovery.</p>
+
+<p>The main features of the SSDP API include:</p>
+<ul>
+<li>Creating and registering a local service
+<p>To <a href="../../../../org.tizen.tutorials/html/native/network/nsd_tutorial_n.htm#ssdp_service">handle a local service</a>, you need a local service handle (<span style="font-family: Courier New,Courier,monospace">ssdp_service_h</span>).</p>
+<p>To announce a local service, create a local service handle using the <span style="font-family: Courier New,Courier,monospace">ssdp_create_local_service()</span> function, and set the service information using the handle. Afterwards, you can register the local service using the <span style="font-family: Courier New,Courier,monospace">ssdp_register_local_service()</span> function.</p>
+<p>When you no longer want to provide the local service, deregister it with the <span style="font-family: Courier New,Courier,monospace">ssdp_deregister_local_service()</span> function. To destroy the local service handle, use the <span style="font-family: Courier New,Courier,monospace">ssdp_destroy_local_service()</span> function.</p>
+</li>
+<li>Searching for remote services
+<p>You can <a href="../../../../org.tizen.tutorials/html/native/network/nsd_tutorial_n.htm#ssdp_search">search for the available remote services</a> on a network by using the <span style="font-family: Courier New,Courier,monospace">ssdp_start_browsing_service()</span> function. The browsing operations are handled by the browser handle (<span style="font-family: Courier New,Courier,monospace">ssdp_browser_h</span>).</p>
+<p>To stop the service search, use the <span style="font-family: Courier New,Courier,monospace">ssdp_stop_browsing_service()</span> function.</p>
+</li></ul>
+
+<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+</html>
\ No newline at end of file
index 61d7cef..56b461c 100644 (file)
@@ -53,6 +53,8 @@
 \r
 <p>All of the above are used when you <a href="../../../../org.tizen.tutorials/html/native/network/smartcard_tutorial_n.htm#send">send a transmission</a>.</p>\r
 \r
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/network/smartcard_tutorial_n.htm#prerequisites">prepare your application to use the smart card functionality</a>.</p>\r
+\r
 <p>The following figure illustrates the smart card service architecture in Tizen. The smart card service sends and receives data through the terminal of each SE.</p>\r
 <p class="figure">Figure: Smart card service architecture</p> \r
 <p align="center"> <img alt="Smart card service architecture" src="../../images/smartcard_architecture.png" /> </p>  \r
index 72b2250..ebc8439 100644 (file)
@@ -38,7 +38,7 @@
 <p>The main features of the VPN Service API include:</p>
 <ul>
 <li>VPN manager 
-<p>You can <a href="../../../../org.tizen.tutorials/html/native/network/vpn_tutorial_n.htm#init">create or initialize the tunnel interface</a> for the VPN device with various functions. The application can use those functions to <a href="../../../../org.tizen.tutorials/html/native/network/vpn_tutorial_n.htm#get_param">get various tunnel details</a>, such as the tunnel ID and tunnel name, MTU for the tunnel interface, and connection statistics.</p>
+<p>You can create or initialize the tunnel interface for the VPN device with various functions. The application can use those functions to <a href="../../../../org.tizen.tutorials/html/native/network/vpn_tutorial_n.htm#get_param">get various tunnel details</a>, such as the tunnel ID and tunnel name, MTU for the tunnel interface, and connection statistics.</p>
 <p>You can also <a href="../../../../org.tizen.tutorials/html/native/network/vpn_tutorial_n.htm#set_param">set various details</a>, such as the MTU for the tunnel interface, and the session name.</p>
 <p>The <span style="font-family: Courier New,Courier,monospace">vpnsvc_tun_s</span> structure contains detailed information about the tunnel interface, such as the ID, name, and MTU. The possible errors are defined with the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__VPN__SERVICE__MODULE.html#ga8d8e9c964218d7aad622115bb51491e8">vpnsvc_error_e</a> enumerator.</p>
 
 </ul></li>
 </ul>
 
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/network/vpn_tutorial_n.htm#prerequisites">prepare your application to use the VPN service functionality</a>.</p>
+
 <p>The VPN service uses 2 mechanisms for managing access control between the application and service:</p>
 <ul>
 <li>Privilege: 
-<p>The application needs the <span style="font-family: Courier New,Courier,monospace">http://developer.samsung.com/tizen/vpnservice</span> privilege (partner level) for accessing the VPN service daemon. Add the privilege to the application manifest file (<span style="font-family: Courier New,Courier,monospace">tizen-manifest.xml</span>).</p>
+<p>The application needs the partner level privilege for accessing the VPN service daemon.</p>
 </li>
 <li>VPN license:
 <p>The VPN configurations, such as DNS, routing, and firewall (iptables), need an admin capability. The VPN service daemon checks the application&#39;s VPN license to verify that the client application has the admin capability.</p>
index 1ffd0d5..c21af05 100644 (file)
@@ -47,7 +47,8 @@
 <li><a href="../../../../org.tizen.tutorials/html/native/network/wifi_direct_tutorial_n.htm#creating_group">Create a Wi-Fi Direct&trade; group</a> and manage the group.</li>\r
 </ul>\r
 \r
-<p>Remember to <a href="../../../../org.tizen.tutorials/html/native/network/wifi_direct_tutorial_n.htm#initialization">initialize Wi-Fi Direct&trade;</a> before you start.</p>\r
+\r
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/network/wifi_direct_tutorial_n.htm#prerequisites">prepare your application to use the Wi-Fi Direct&trade; functionality</a>.</p>\r
 \r
 <table class="note">\r
 <tbody>\r
index f017aa5..0159226 100644 (file)
@@ -61,7 +61,7 @@
   \r
 <h2 id="wifi_manager" name="wifi_manager">Wi-Fi Manager</h2>  \r
 \r
-<p>The Tizen Wi-Fi Manager API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__WIFI__MANAGER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__WIFI__MANAGER__MODULE.html">wearable</a> applications) provides functions for <a href="../../../../org.tizen.tutorials/html/native/network/wifi_tutorial_n.htm#init">using a Wi-Fi connection</a>. </p>\r
+<p>The Tizen Wi-Fi Manager API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__WIFI__MANAGER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__WIFI__MANAGER__MODULE.html">wearable</a> applications) provides functions for using a Wi-Fi connection. </p>\r
 <p>Using the Wi-Fi Manager, you can implement features that allow the users of your application to:</p>\r
 \r
 <ul><li>Activate and deactivate a Wi-Fi device\r
@@ -73,6 +73,8 @@
 <li>Scan the access points\r
 <p>To <a href="../../../../org.tizen.tutorials/html/native/network/wifi_tutorial_n.htm#scan">scan access points</a>, use the <span style="font-family: Courier New,Courier,monospace">wifi_scan()</span> and <span style="font-family: Courier New,Courier,monospace">wifi_foreach_found_aps()</span> functions.</p>\r
 <p>The <span style="font-family: Courier New,Courier,monospace">wifi_scan()</span> function starts the scan asynchronously. When the scan is finished, a callback function is called. The <span style="font-family: Courier New,Courier,monospace">wifi_foreach_found_aps()</span> function allows you to get the result of the scan. It also invokes a callback function.</p></li></ul>\r
+\r
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/network/wifi_tutorial_n.htm#prerequisites">prepare your application to use the Wi-Fi functionality</a>.</p>\r
  \r
   <h2 id="ap" name="ap">Access Point</h2> \r
 \r
index 7d68d70..3b95526 100644 (file)
 </li>\r
 </ul>\r
 \r
-<p><a href="../../../../org.tizen.tutorials/html/native/security/key_tutorial_n.htm#initialize">Initialize the key manager</a> before you start.</p>\r
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/security/key_tutorial_n.htm#prerequisites">prepare your application to use the key manager functionality</a>.</p>\r
 \r
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>\r
 <script type="text/javascript" src="../../scripts/showhide.js"></script>\r
index 9351b0d..2f26e5d 100644 (file)
@@ -40,6 +40,8 @@
 <li>Privilege description: Detailed information on permissions, including accessible resources and functionality, that the application can get with this privilege. It also contains information related to billing or device performance, such as cost or increase battery usage.</li>\r
 </ul> \r
 \r
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/security/privilege_tutorial_n.htm#prerequisites">prepare your application to use the privilege info functionality</a>.</p>\r
+\r
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>\r
 <script type="text/javascript" src="../../scripts/showhide.js"></script>\r
 </div></div></div>\r
index 1de719b..8e40d73 100644 (file)
@@ -49,7 +49,7 @@
 
 <p>This feature is supported in mobile applications only.</p>
 
-<p>The calendar information is stored in a calendar database. To manage the information in the database, you must <a href="../../../../org.tizen.tutorials/html/native/social/calendar_tutorial_n.htm#init">connect to the calendar service</a>.</p>
+<p>The calendar information is stored in a calendar database. To manage the information in the database, you must <a href="../../../../org.tizen.tutorials/html/native/social/calendar_tutorial_n.htm#prerequisites">connect to the calendar service</a>.</p>
  
   <p class="figure">Figure: Calendar model</p> 
   <p align="center"><img alt="Calendar model" src="../../images/calendar_model.png" /></p>
index 66a5e58..071ce03 100644 (file)
@@ -47,7 +47,7 @@
 
 <p>Contact features provide functions for managing contact information, such as address books, groups, persons, and phone logs.</p>
   
-<p>The contact information is stored in a contacts database. To manage the information in the database, you must <a href="../../../../org.tizen.tutorials/html/native/social/contact_tutorial_n.htm#init">connect to the contact service</a>.</p>  
+<p>The contact information is stored in a contacts database. To manage the information in the database, you must <a href="../../../../org.tizen.tutorials/html/native/social/contact_tutorial_n.htm#prerequisites">connect to the contact service</a>.</p>  
 
 <p>A contact object is always associated with a specific address book. A person object is an aggregation of one or more contacts associated with the same person.</p>
 
index f5fdc99..681a0a0 100644 (file)
 
 <p>To start a plugin, use the following process:</p>
 
-<ol><li><a href="../../../../org.tizen.tutorials/html/native/social/service_adaptor_tutorial_n.htm#Starting_up">Create a Service Adaptor</a> with the <span style="font-family: Courier New,Courier,monospace">service_adaptor_create()</span> function.</li>
-<li>With a valid Service Adaptor handler, iterate through all installed plugins with the <span style="font-family: Courier New,Courier,monospace">service_adaptor_foreach_plugin()</span> function.</li>
+<ol><li><a href="../../../../org.tizen.tutorials/html/native/social/service_adaptor_tutorial_n.htm#prerequisites">Create a Service Adaptor</a> with the <span style="font-family: Courier New,Courier,monospace">service_adaptor_create()</span> function.</li>
+<li>With a valid Service Adaptor handler, <a href="../../../../org.tizen.tutorials/html/native/social/service_adaptor_tutorial_n.htm#Starting_up">iterate through all installed plugins</a> with the <span style="font-family: Courier New,Courier,monospace">service_adaptor_foreach_plugin()</span> function.</li>
 <li>Inside the callback (invoked for each plugin), get the <span style="font-family: Courier New,Courier,monospace">plugin_uri</span> value, which is passed to the <span style="font-family: Courier New,Courier,monospace">service_adaptor_create_plugin()</span> function.</li>
 <li>Request a start initialization for the service plugin with the <span style="font-family: Courier New,Courier,monospace">service_plugin_start()</span> function.</li></ol>
 
index d17a421..3bfe77a 100644 (file)
@@ -48,6 +48,7 @@
    <li>Power\r
    <p><a href="../../../../org.tizen.tutorials/html/native/system/device_tutorial_n.htm#power">Request the power state</a> to be locked or unlocked using the Power API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__DEVICE__POWER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__DEVICE__POWER__MODULE.html">wearable</a> applications).</p></li></ul>\r
 \r
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/system/device_tutorial_n.htm#prerequisites">prepare your application to use the device functionality</a>.</p>\r
    \r
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>\r
 <script type="text/javascript" src="../../scripts/showhide.js"></script>\r
index d134a97..1970040 100644 (file)
@@ -47,7 +47,7 @@
 \r
 <p>The dlog service <a href="../../../../org.tizen.tutorials/html/native/system/dlog_tutorial_n.htm#send">sends a log message</a> to the circular buffer with APIs, including <strong>Priority</strong> and <strong>Tag</strong> information. With this information, it is easy to filter and check the messages with dlogutil.</p>\r
 \r
-<p>Before using dlog, you should know which priorities and tags to use and where to write (format, buffer). You also need to <a href="../../../../org.tizen.tutorials/html/native/system/dlog_tutorial_n.htm#init">initialize dlog</a>.</p>\r
+<p>Before using dlog, you should know which priorities and tags to use and where to write (format, buffer). Remember also to <a href="../../../../org.tizen.tutorials/html/native/system/dlog_tutorial_n.htm#prerequisites">prepare your application to use the dlog functionality</a>.</p>\r
 \r
 <h2 id="priority" name="priority">Priority</h2>\r
 \r
index d89016b..1ea57bd 100644 (file)
@@ -46,7 +46,7 @@
    <p>You can request deviced to vibrate by using a dbus method call. A haptic monotone or haptic effect is requested to deviced, based on  the vibration data type in the <span style="font-family: Courier New,Courier,monospace">vibration.conf</span> configuration.</p> \r
    <p>You can use vibration feedback with the <span style="font-family: Courier New,Courier,monospace">feedback_play()</span> or <span style="font-family: Courier New,Courier,monospace">feedback_play_type()</span> function. The attribute for the vibration type is <span style="font-family: Courier New,Courier,monospace">FEEDBACK_TYPE_VIBRATION</span>.</p></li></ul>  \r
 \r
-\r
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/system/feedback_tutorial_n.htm#prerequisites">prepare your application to use the feedback functionality</a>.</p>\r
 \r
 \r
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>\r
index 25e3bbd..9a80c00 100644 (file)
@@ -37,6 +37,9 @@
   <p>Tizen provides various runtime information and enables your application to access it and <a href="../../../../org.tizen.tutorials/html/native/system/runtime_tutorial_n.htm#monitor">monitor changes in it</a>.</p> \r
   <p>To obtain the information, <a href="../../../../org.tizen.tutorials/html/native/system/runtime_tutorial_n.htm#get">query a runtime info key</a> or <a href="../../../../org.tizen.tutorials/html/native/system/runtime_tutorial_n.htm#get_function">use a specific function</a>. The keys are listed in the following table.\r
 </p> \r
+\r
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/system/runtime_tutorial_n.htm#prerequisites">prepare your application to use the runtime information functionality</a>.</p>\r
+\r
   <table id="runtime_information_keys" border="1"> \r
    <caption>\r
      Table: Runtime information keys \r
index 0e6bb9c..4214c3d 100644 (file)
    <li>Measurement range</li>
   </ul>
 
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/system/sensor_tutorial_n.htm#prerequisites">prepare your application to use the sensor functionality</a>.</p>
+  
 <h3 id="accelerometer" name="accelerometer">Accelerometer</h3>
 <p>The accelerometer measures changes in the velocity of a device. It is a combination of gravity and linear acceleration components. The accelerometer measures the device&#39;s accelerometer vector in 3 axes relative to its body frame.</p>
 
index c7d2457..118ce96 100644 (file)
@@ -36,7 +36,7 @@
 \r
 <p>Tizen provides functions with which you can <a href="../../../../org.tizen.tutorials/html/native/system/system_setting_tutorial_n.htm#settings">get the system configuration</a> related to user preferences.</p>\r
 \r
-<p>The main features of the System Settings API include accessing system-wide configurations, such as ringtone, wallpaper, and font.</p>\r
+<p>The main features of the System Settings API include accessing system-wide configurations, such as ringtone, wallpaper, and font. Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/system/system_setting_tutorial_n.htm#prerequisites">prepare your application to use the system settings functionality</a>.</p>\r
 \r
 <p>The <span style="font-family: Courier New,Courier,monospace">system_settings_key_e</span> enumerator defines all enumerations that work as arguments for the System Settings API.</p>\r
 <p>The System Settings API provides 2 function types listed in the following table. Certain functions support both types, whereas others only support the getter function.</p>\r
index 5126a60..8266d7f 100644 (file)
@@ -83,6 +83,9 @@
     </tr>\r
    </tbody>\r
   </table>\r
+  \r
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/system/storage_tutorial_n.htm#prerequisites">prepare your application to use the storage functionality</a>.</p>\r
+  \r
   <p>The main features of the Storage API include:</p>\r
   <ul>\r
    <li>Storage management <p>You can manage different storages on the device with the Storage APIs.</p> <p>You can <a href="../../../../org.tizen.tutorials/html/native/system/storage_tutorial_n.htm#storage">retrieve additional information about the storages</a>, including which storage is supported in the device using the <span style="font-family: Courier New,Courier,monospace">storage_foreach_device_supported()</span> function. The callback function returns the storage type, mount state, and virtual root path. You can also <a href="../../../../org.tizen.tutorials/html/native/system/storage_tutorial_n.htm#memory">retrieve memory sizes</a> and <a href="../../../../org.tizen.tutorials/html/native/system/storage_tutorial_n.htm#state">monitor storage state changes</a>.</p>\r
index 3154dfe..b9dde87 100644 (file)
@@ -40,6 +40,8 @@
 <h1>System Information</h1> 
 
   <p>System information features enable your application to <a href="../../../../org.tizen.tutorials/html/native/system/sysinfo_tutorial_n.htm#model">retrieve information about fixed platform features or device capabilities</a> by querying system information keys. You can also <a href="../../../../org.tizen.tutorials/html/native/system/sysinfo_tutorial_n.htm#check">check for supported features</a>.</p> 
+  
+  <p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/system/sysinfo_tutorial_n.htm#prerequisites">prepare your application to use the system information functionality</a>.</p>
 
      <table border="1"> 
      <caption>
index 19a398c..209ab4a 100644 (file)
@@ -34,7 +34,7 @@
 <div id="container"><div id="contents"><div class="content">
 <h1>T-trace</h1>
 
-<p>You can <a href="../../../../org.tizen.tutorials/html/native/system/t-trace_tutorial_n.htm#insert">insert tracepoints</a> in Tizen native applications to perform trace operations with the <a href="../../../../org.tizen.devtools/html/native_tools/t_trace_n.htm">T-trace tool</a>. The tracepoints allow the framework to write application traces to the system trace buffer to align them with the T-trace traces from the Tizen platform. Remember to <a href="../../../../org.tizen.tutorials/html/native/system/t-trace_tutorial_n.htm#init">initialize tracing</a> before you start.</p>
+<p>You can <a href="../../../../org.tizen.tutorials/html/native/system/t-trace_tutorial_n.htm#insert">insert tracepoints</a> in Tizen native applications to perform trace operations with the <a href="../../../../org.tizen.devtools/html/native_tools/t_trace_n.htm">T-trace tool</a>. The tracepoints allow the framework to write application traces to the system trace buffer to align them with the T-trace traces from the Tizen platform.</p>
 
   <p>This feature is supported in mobile applications only.</p>
 
@@ -51,7 +51,8 @@
        <p align="center"> 
        <img src="../../images/trace.png" alt="T-trace architecture" /> 
        </p>
-       
+
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/system/t-trace_tutorial_n.htm#prerequisites">prepare your application to use the T-trace functionality</a>.</p>  
        
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
 <script type="text/javascript" src="../../scripts/showhide.js"></script>
index a9207be..60eac49 100644 (file)
@@ -32,7 +32,7 @@
 <div id="container"><div id="contents"><div class="content">\r
 <h1>Phonenumber utils</h1>\r
 \r
-<p>Tizen enables you to <a href="../../../../org.tizen.tutorials/html/native/telephony/phonenumber_util_tutorial_n.htm#init">parse and format phone numbers</a>. The Phonenumber utils APIs are implemented with the libphonenumber open source library.</p>\r
+<p>Tizen enables you to parse and format phone numbers. The Phonenumber utils APIs are implemented with the libphonenumber open source library.</p>\r
 \r
 <p>The main features of the Phonenumber utils API include:</p>\r
 \r
@@ -46,6 +46,8 @@
 <p>You can <a href="../../../../org.tizen.tutorials/html/native/telephony/phonenumber_util_tutorial_n.htm#normalise">normalize the phone number</a> using the <span style="font-family: Courier New,Courier,monospace">phone_number_get_normalized_number()</span> function.</p></li>\r
 </ul>\r
 \r
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/telephony/phonenumber_util_tutorial_n.htm#prerequisites">prepare your application to use the phonenumber utils functionality</a>.</p>\r
+\r
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>\r
 <script type="text/javascript" src="../../scripts/showhide.js"></script>\r
 </div></div></div>\r
index 4a82985..fd317fc 100644 (file)
@@ -38,7 +38,7 @@
 \r
 <div id="container"><div id="contents"><div class="content">\r
 <h1>Telephony Information</h1>\r
-  <p>Telephony information features include call, SIM, network, and modem information <a href="../../../../org.tizen.tutorials/html/native/telephony/telephony_info_tutorial_n.htm#init">using the Telephony Service</a>.</p>\r
+  <p>Telephony information features include call, SIM, network, and modem information using the Telephony Service.</p>\r
 \r
  \r
 <p>The main telephony information features are:</p>\r
@@ -60,6 +60,8 @@
   <p class="figure">Figure: Telephony APIs and Telephony Service</p> \r
   <p align="center"><img alt="Telephony APIs and Telephony Service" src="../../images/telephony.png" /></p>\r
 \r
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/telephony/telephony_info_tutorial_n.htm#prerequisites">prepare your application to use the telephony information functionality</a>.</p>\r
+\r
 <h2 id="call" name="call">Call Information</h2>\r
 \r
 <p>The Call API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__TELEPHONY__INFORMATION__CALL.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__TELEPHONY__INFORMATION__CALL.html">wearable</a> applications) provides the following functions:</p>\r
index 12c0b99..0fcd37f 100644 (file)
@@ -36,7 +36,7 @@
 
   <p>This feature is supported in mobile applications only.</p>
   
-<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/ui/eom_tutorial_n.htm#init">initialize the external output</a> for use.</p>  
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/ui/eom_tutorial_n.htm#prerequisites">prepare your application to use the EOM functionality</a>.</p>  
   
 <p>The main features of the External Output Manager API include:</p>
 <ul>
index 8788bc3..a294214 100644 (file)
@@ -38,7 +38,7 @@
 <p>The main features of the Minicontrol API include:</p>
 <ul>
        <li>Creating a minicontrol
-<p>You can <a href="../../../../org.tizen.tutorials/html/native/ui/minicontrol_tutorial_n.htm#create">create minicontrols</a> using the Minicontrol provider API, which requires the <span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/minicontrol.provider</span> privilege:</p>
+<p>You can <a href="../../../../org.tizen.tutorials/html/native/ui/minicontrol_tutorial_n.htm#create">create minicontrols</a> using the Minicontrol provider API:</p>
 <ul><li>To create a minicontrol, use the <span style="font-family: Courier New,Courier,monospace">minicontrol_create_window()</span> function, which returns an <span style="font-family: Courier New,Courier,monospace">Evas_Object</span> of the minicontrol window.</li>
 <li>To send a request, use the <span style="font-family: Courier New,Courier,monospace">minicontrol_send_event()</span> function to get a minicontrol handle and set the details. You can use the same function to <a href="../../../../org.tizen.tutorials/html/native/ui/minicontrol_tutorial_n.htm#hide">hide the quick panel</a>, when needed.</li></ul>
        </li>
@@ -52,6 +52,8 @@
    <p class="figure">Figure: Minicontrol on a quick panel (left) and lock screen (right)</p> 
    <p align="center"><img alt="Minicontrol on a quick panel (left) and lock screen (right)" src="../../images/minicontrol-on-quickpanel.png" /> <img alt="Minicontrol on a quick panel (left) and lock screen (right)" src="../../images/minicontrol-on-lockscreen.png" /></p>   
 
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/ui/minicontrol_tutorial_n.htm#prerequisites">prepare your application to use the minicontrol functionality</a>.</p> 
+  
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
 <script type="text/javascript" src="../../scripts/showhide.js"></script>
 </div></div></div>
index 210191f..93d8a2d 100644 (file)
@@ -69,6 +69,8 @@
 <p>You can register callback functions that are called when the keyboard option menu opens or closes. These callback functions can be registered before the <span style="font-family: Courier New,Courier,monospace">ime_run()</span> function call in the <span style="font-family: Courier New,Courier,monospace">ime_app_main()</span> function.</p>
 <p>The device Settings application triggers the callback function to open the keyboard option menu. The keyboard itself can also trigger the callback function to open its option menu.</p></li></ul>
 
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/uix/ime_tutorial_n.htm#prerequisites">prepare your application to use the input method functionality</a>.</p>
+
 <h2>Input Method Manager</h2>
 <p>The <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__UIX__INPUTMETHOD__MANAGER__MODULE.html">Input Method Manager</a> is a module used to manage the installed IMEs. You can use it to open the installed IME list or selector menu after your IME application is installed, and guide the user to select the installed IME:</p>
 
@@ -84,7 +86,7 @@
                        <p align="center"><img alt="IME selector" src="../../images/ime_selector.png" /></p>
 </li>
 <li>Checking the IME status
-<p>You can <a href="../../../../org.tizen.tutorials/html/native/uix/ime_tutorial_n.htm#enable">check whether a specific IME is enabled or disabled</a> in the system keyboard setting. You can also check which IME is currently selected as the default keyboard. These features are useful when the user installs a new keyboard. And you can also get the number of IMEs which enabled (usable).</p></li>
+<p>You can <a href="../../../../org.tizen.tutorials/html/native/uix/ime_tutorial_n.htm#enable">check whether a specific IME is enabled or disabled</a> in the system keyboard setting. You can also check which IME is currently selected as the default keyboard, or how many IMEs are enabled (usable). These features are useful when the user installs a new keyboard.</p></li>
 </ul>
 
 
index 28f0762..f47b4fd 100644 (file)
@@ -47,7 +47,7 @@
 <ul>\r
 <li>Create a handle and register callback functions.\r
  <ul>\r
- <li><a href="../../../../org.tizen.tutorials/html/native/uix/stt_tutorial_n.htm#init">Create a STT handle</a>, which is used for distinguishing your application from other applications also using the STT.</li>\r
+ <li>Create a STT handle, which is used for distinguishing your application from other applications also using the STT.</li>\r
  <li><a href="../../../../org.tizen.tutorials/html/native/uix/stt_tutorial_n.htm#set">Get notifications on state changes</a>, language changes, recognition results, and errors by registered callback functions.</li>\r
  </ul>\r
 </li>\r
@@ -67,6 +67,8 @@
 </li>\r
 </ul>\r
 \r
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/uix/stt_tutorial_n.htm#prerequisites">prepare your application to use the STT functionality</a>.</p>\r
+\r
 <p>The STT life-cycle is described in the following figure.</p>\r
  \r
    <p class="figure">Figure: STT life-cycle</p> \r
index 9890c76..ccb6f82 100644 (file)
@@ -47,7 +47,7 @@
 <ul>\r
 <li>Create a handle and register callback functions.\r
        <ul>\r
-       <li><a href="../../../../org.tizen.tutorials/html/native/uix/tts_tutorial_n.htm#init">Create a TTS handle</a> which is used for distinguishing your application from other applications also using the TTS.</li>\r
+       <li>Create a TTS handle which is used for distinguishing your application from other applications also using the TTS.</li>\r
        <li>To get notifications about state changes, language changes, starting or finishing utterances, and errors, <a href="../../../../org.tizen.tutorials/html/native/uix/tts_tutorial_n.htm#set">register callback functions</a>.</li>\r
        </ul>\r
 </li>\r
@@ -66,6 +66,8 @@
 </li>\r
 </ul>\r
 \r
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/uix/tts_tutorial_n.htm#prerequisites">prepare your application to use the TTS functionality</a>.</p>\r
+\r
 <p>The TTS life-cycle is described in the following figure.</p>\r
  \r
    <p class="figure">Figure: TTS life-cycle</p> \r
index 174c695..57b527b 100644 (file)
@@ -76,6 +76,8 @@
 </ul>  
 
 <p>You can <a href="../../../../org.tizen.tutorials/html/native/uix/voicecontrol_elm_tutorial_n.htm#callback">set and unset a callback</a> to get notifications when the system or application language changes.</p>
+
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/uix/voicecontrol_elm_tutorial_n.htm#prerequisites">prepare your application to use the voice control elementary functionality</a>.</p>
  
 <p>The following table lists the EFL UI components that support voice commands, and the actions supported by each component and already defined in the configuration file. Note that the label component only supports the hint without any action command.</p>  
 <table>
   
 <p>To use the voice commands:</p>
 
-<ol><li><a href="../../../../org.tizen.tutorials/html/native/uix/voicecontrol_elm_tutorial_n.htm#init">Initialize the Voice control elementary library</a> and create a handle.
+<ol><li>Initialize the Voice control elementary library and create a handle.
 <p>The Voice control elementary handle is used to set user-defined commands and hints for the corresponding UI component in the application.</p></li>
 <li>Set commands and hints.
 <p>With a handle related to the individual UI component in the application screen, you can specify a command used to distinguish that component from others.</p>
index e7503ee..523ccaa 100644 (file)
@@ -56,7 +56,7 @@
   
   
 <p>To use the voice control:</p>
-<ol><li><a href="../../../../org.tizen.tutorials/html/native/uix/voicecontrol_tutorial_n.htm#init">Initialize the voice control</a> and <a href="../../../../org.tizen.tutorials/html/native/uix/voicecontrol_tutorial_n.htm#callback">register callback functions</a>.
+<ol><li>Set up the voice control and <a href="../../../../org.tizen.tutorials/html/native/uix/voicecontrol_tutorial_n.htm#callback">register callback functions</a>.
 <p>The initialization allows the voice control to distinguish your application from any other applications also using voice control. The registered callbacks allow you to receive notifications about changes in the service state, language, and recognition result, and about any errors.</p></li>
 <li>Prepare the voice control.
 <p>The preparation connects the Voice control service for background work, such as recording and recognizing the user voice.</p>
@@ -70,6 +70,9 @@
 <li>When no longer needed, unprepare and deinitialize the voice control.
 <p>You must disconnect the voice control service and deinitialize the voice control using the <span style="font-family: Courier New,Courier,monospace">vc_unprepare()</span> and <span style="font-family: Courier New,Courier,monospace">vc_deinitialize()</span> functions.</p></li></ol>
 
+<p>Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/uix/voicecontrol_tutorial_n.htm#prerequisites">prepare your application to use the voice control functionality</a>.</p>
+
+<p>The following figure illustrates the voice control life-cycle states.</p>
  
                        <p class="figure">Figure: Voice control (left) and Voice control service (right) life-cycle states</p>
                        <p align="center"><img alt="Voice control and Voice control service life-cycle states" src="../../images/voice_control.png" /></p> 
index eddab77..3ddb4fa 100644 (file)
@@ -34,7 +34,7 @@
 \r
 <div id="container"><div id="contents"><div class="content">\r
 <h1>Web</h1> \r
-<p>Web features include accessing Web content in your application. Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/web/web_tutorials_n.htm#init">initialize the EWK WebKit</a> for use.</p>\r
+<p>Web features include accessing Web content in your application. Before you start, remember to <a href="../../../../org.tizen.tutorials/html/native/web/web_tutorials_n.htm#prerequisites">prepare your application to use the Web functionality</a>.</p>\r
 \r
 <p>The main Web features are:</p>\r
 <ul>\r
index 07cdbbd..f4f1eea 100644 (file)
                <topic href="html/native/network/curl_n.htm" label="Curl"></topic>
                <topic href="html/native/network/iotcon_n.htm" label="Iotcon"></topic>
                <topic href="html/native/network/mtp_n.htm" label="MTP"></topic>
+               <topic href="html/native/network/nsd_n.htm" label="Network Service Discovery"></topic>
                <topic href="html/native/network/nfc_n.htm" label="NFC"></topic>
                <topic href="html/native/network/smartcard_n.htm" label="Smartcard"></topic>
                <topic href="html/native/network/wifi_n.htm" label="Wi-Fi"></topic>
index f24428f..fa50627 100644 (file)
                                <li><a href="native/network/curl_tutorial_n.htm">Curl</a></li>
                                <li><a href="native/network/iotcon_tutorial_n.htm">Iotcon</a></li>
                                <li><a href="native/network/mtp_tutorial_n.htm">MTP</a></li>
+                               <li><a href="native/network/nsd_tutorial_n.htm">Network Service Discovery</a></li>
                                <li><a href="native/network/nfc_tutorial_n.htm">NFC</a></li>
                                <li><a href="native/network/smartcard_tutorial_n.htm">Smartcard</a></li>
                                <li><a href="native/network/wifi_tutorial_n.htm">Wi-Fi</a></li>
index 4fec7ab..80ab863 100644 (file)
@@ -22,7 +22,6 @@
                <p class="toc-title">Content</p>
                <ul class="toc">
                        <li><a href="#prerequisites">Prerequisites</a></li>
-                       <li><a href="#init">Initializing the Accounts</a></li>
                        <li><a href="#add">Creating and Managing an Account</a></li>
                        <li>Information retrieval
                                <ul class="toc">
@@ -32,7 +31,6 @@
                                </ul>
                        </li>
                        <li><a href="#remove">Removing an Account</a></li>
-                       <li><a href="#disconnect">Destroying the Account Handle</a></li>
                        <li><a href="#screen">Adding an Application on the Account Screen</a></li>
                        <li><a href="#queries">Performing Database Queries</a></li>
                        <li><a href="#secret">Managing Account Secrecy</a></li>
@@ -58,8 +56,8 @@
 <h2>Warm-up</h2>
 <p>Become familiar with the Account Manager API basics by learning about:</p>
 <ul>
-               <li><a href="#init">Initializing the Accounts</a>
-               <p>Initialize the account manager for use.</p></li>
+               <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the account manager functionality.</p></li>
                <li><a href="#add">Creating and Managing an Account</a>
                <p>Create an account, set its properties, and insert it to the database.</p></li>
                <li>Information retrieval
@@ -74,8 +72,6 @@
                </li>
                <li><a href="#remove">Removing an Account</a>
                <p>Remove an account from the database.</p></li>
-               <li><a href="#disconnect">Destroying the Account Handle</a>
-               <p>Destroy the account handle.</p></li>
                <li><a href="#screen">Adding an Application on the Account Screen</a>
                <p>Display your application on the Add account screen of a Tizen device.</p>
                </li>
 </ul>
 
 <h2 id="prerequisites">Prerequisites</h2>
-
-<p>To use the Account Manager API, the application has to request permission by adding the following privileges to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>
+<p>To enable your application to use the account manager functionality:</p>
+<ol>
+<li>
+<p>To use the Account Manager API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__ACCOUNT__MANAGER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__ACCOUNT__MANAGER__MODULE.html">wearable</a> applications), the application has to request permission by adding the following privileges to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>
 <pre class="prettyprint">
 &lt;privileges&gt;
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/account.read&lt;/privilege&gt;
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/account.write&lt;/privilege&gt;
 &lt;/privileges&gt;
 </pre>
-
- <h2 id="init" name="init">Initializing the Accounts</h2>
-
-<p>To initialize the account manager:</p>
-<ol>
-<li> <p>To use the functions and data types of the Account Manager API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__ACCOUNT__MANAGER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__ACCOUNT__MANAGER__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;account.h&gt;</span> header file in your application:</p>
+</li>
+<li> <p>To use the functions and data types of the Account Manager API, include the <span style="font-family: Courier New,Courier,monospace">&lt;account.h&gt;</span> header file in your application:</p>
 <pre class="prettyprint">
 #include &lt;account.h&gt;
 </pre>
 <p>To ensure that an Account Manager function has been executed properly, make sure that the return is equal to <span style="font-family: Courier New,Courier,monospace;">ACCOUNT_ERROR_NONE</span>.</p>
 </li>
-<li><p>Declare the necessary global variables:</p>
+<li><p>Declare the necessary global variables, including the account handle:</p>
  
 <pre class="prettyprint">
 #include &lt;stdio.h&gt;
 static account_h account = NULL;
 static int account_id = 0;
 int ret = 0;
-</pre></li>
+</pre>
+<p>When you no longer need it, destroy the account handle with the <span style="font-family: Courier New,Courier,monospace;">account_destroy()</span> function:</p>
+<pre class="prettyprint">
+ret = account_destroy(account);
+</pre>
+</li>
 </ol>
 
  <h2 id="add" name="add">Creating and Managing an Account</h2>
@@ -303,13 +302,6 @@ account_type_query_by_provider_feature(account_type_callback, capability, NULL);
 ret = account_delete_from_db_by_id(account_id);
 </pre>
 
- <h2 id="disconnect" name="disconnect">Destroying the Account Handle</h2>
-
-<p>To destroy the account handle, use the <span style="font-family: Courier New,Courier,monospace;">account_destroy()</span> function:</p>
-<pre class="prettyprint">
-ret = account_destroy(account);
-</pre>
-
  <h2 id="screen" name="screen">Adding an Application on the Account Screen</h2>
 
 <p>To add your application on the Add account screen of the device:</p>
index 96f3687..c5b4d3d 100644 (file)
@@ -22,7 +22,6 @@
                <p class="toc-title">Content</p>
                <ul class="toc">
                        <li><a href="#prerequisites">Prerequisites</a></li>
-                       <li><a href="#mgr_init">Initializing the OAuth 2.0 Manager</a></li>
                        <li><a href="#request">Creating and Managing an OAuth 2.0 Request</a></li>
                        <li><a href="#token">Requesting the Server for a Grant or Token</a></li>
                        <li><a href="#response">Managing an OAuth 2.0 Response</a></li>
@@ -45,8 +44,8 @@
 
 <p>Become familiar with the OAuth 2.0 API basics by learning about:</p>
 <ul>
-               <li><a href="#mgr_init">Initializing the OAuth 2.0 Manager</a>
-               <p>Initialize the OAuth 2.0 manager for use.</p></li>
+               <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the OAuth 2.0 functionality.</p></li>
                
                <li><a href="#request">Creating and Managing an OAuth 2.0 Request</a>
                <p>Create a request handle, set and retrieve request parameters, and pass the request to the OAuth 2.0 manager to request a token.</p></li>
 
 <h2 id="prerequisites">Prerequisites</h2>
 
-<p>To use the OAuth 2.0 API, the application has to request permission by adding the following privilege to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>
+<p>To enable your application to use the OAuth 2.0 functionality:</p>
+<ol>
+<li>
+<p>To use the OAuth 2.0 API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__OAUTH2__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__OAUTH2__MODULE.html">wearable</a> applications), the application has to request permission by adding the following privilege to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>
 <pre class="prettyprint">
 &lt;privileges&gt;
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/internet&lt;/privilege&gt;
 &lt;/privileges&gt;
 </pre>
-
-<h2 id="mgr_init" name="mgr_init">Initializing the OAuth 2.0 Manager</h2>
-
-<p>To initialize the OAuth 2.0 manager:</p>
-<ol>
-<li> <p>To use the functions and data types of the OAuth 2.0 API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__OAUTH2__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__OAUTH2__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;oauth2.h&gt;</span> header file in your application:</p>
+</li>
+<li> <p>To use the functions and data types of the OAuth 2.0 API, include the <span style="font-family: Courier New,Courier,monospace">&lt;oauth2.h&gt;</span> header file in your application:</p>
 <pre class="prettyprint">
 #include &lt;oauth2.h&gt;
 </pre>
index 7e5875b..91afb38 100644 (file)
        <div id="toc_border"><div id="toc">
                <p class="toc-title">Content</p>
                <ul class="toc">
-                       <li><a href="#on_demand_sync">Initializing the On-demand Sync</a></li>
-                       <li><a href="#periodic_sync">Initializing the Periodic Sync</a></li>
-                       <li><a href="#data_change_sync">Initializing the Data Change Sync</a></li>
-            <li><a href="#foreach_sync">Initializing the ForEach Sync</a></li>
+                       <li><a href="#prerequisites">Prerequisites</a></li>
+                       <li><a href="#on_demand_sync">Defining an On-demand Sync Job</a></li>
+                       <li><a href="#periodic_sync">Defining a Periodic Sync Job</a></li>
+                       <li><a href="#data_change_sync">Defining a Data Change Sync Job</a></li>
+            <li><a href="#foreach_sync">Defining a ForEach Sync Job</a></li>
                        <li>Sync adapter
                        <ul class="toc">
                                <li><a href="#set_callback">Setting the Callback Functions</a></li>
 
        <p>This tutorial demonstrates how you can manage the data synchronizing schedule and control sync operations manually or periodically.</p>
 
-<p>To use the Sync Manager API features, the service application must first <a href="#set_callback">set the callback functions</a>. A UI application cannot initialize and set callbacks through the Sync Adapter API. Instead, the UI application must call the Sync Manager API to request sync operations.</p>
-
   <h2>Warm-up</h2>
     <p>Become familiar with the Sync Manager API basics by learning about:</p>
        <ul>
-               <li><a href="#on_demand_sync">Initializing the On-demand Sync</a>
+               <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the sync manager functionality.</p></li>     
+               <li><a href="#on_demand_sync">Defining an On-demand Sync Job</a>
                <p>Add an on-demand sync job for a one-time operation.</p></li>
-               <li><a href="#periodic_sync">Initializing the Periodic Sync</a>
+               <li><a href="#periodic_sync">Defining a Periodic Sync Job</a>
                <p>Add a periodic sync job with a recurring cycle.</p></li>
-        <li><a href="#data_change_sync">Initializing the Data Change Sync</a>
+        <li><a href="#data_change_sync">Defining a Data Change Sync Job</a>
         <p>Add a data change sync job for receiving notifications whenever a specific database change occurs.</p></li>
-        <li><a href="#foreach_sync">Initializing the ForEach Sync</a>
+        <li><a href="#foreach_sync">Defining a ForEach Sync Job</a>
         <p>Iterate all the registered sync jobs for managing them more efficiently.</p></li>
                <li>Sync adapter
                <ul>
                </li>
        </ul>
 
-<h2 id="on_demand_sync" name="on_demand_sync">Initializing the On-demand Sync</h2>
-
-<p>To inform a service application of the time to operate a one-time sync job:</p>
+<h2 id="prerequisites">Prerequisites</h2>
 
+<p>To enable your application to use the sync manager functionality:</p>
 <ol>
+
+<li>To use the Sync Manager API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYNC__MANAGER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYNC__MANAGER__MODULE.html">wearable</a> applications), the application has to request permission by adding the following privileges to the <span style="font-family: Courier New,Courier,monospace">tizen-manifest.xml</span> file:
+<pre class="prettyprint">
+&lt;privileges&gt;
+&nbsp;&nbsp;&nbsp;&lt;!--To set an alarm--&gt;
+&nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/alarm.set&lt;/privilege&gt;
+&nbsp;&nbsp;&nbsp;&lt;!--To use the calendar capability--&gt;
+&nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/calendar.read&lt;/privilege&gt;
+&nbsp;&nbsp;&nbsp;&lt;!--To use the contact capability--&gt;
+&nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/contact.read&lt;/privilege&gt;
+&lt;/privileges&gt;
+</pre>
+</li>
 <li><a href="#set_callback">Set the sync adapter callbacks</a> in the service application:
 <pre class="prettyprint">
 #include &lt;sync_adapter.h&gt;
 int result;
 result = sync_adapter_set_callbacks(on_start_cb, on_cancel_cb);
 </pre>
-</li>
 
-<li>To use the functions and data types of the Sync Manager API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYNC__MANAGER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYNC__MANAGER__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;sync_manager.h&gt;</span> header file in your UI application:
+<p>A UI application cannot initialize and set callbacks through the Sync Adapter API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYNC__ADAPTER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYNC__ADAPTER__MODULE.html">wearable</a> applications). Instead, the UI application must call the Sync Manager API to request sync operations.</p>
+
+</li>
+<li>To use the functions and data types of the Sync Manager API, include the <span style="font-family: Courier New,Courier,monospace">&lt;sync_manager.h&gt;</span> header file in the UI application:
  <pre class="prettyprint">
 #include &lt;sync_manager.h&gt;
 </pre></li>
+<li>To use the functions and data types of the Sync Adapter API, include the <span style="font-family: Courier New,Courier,monospace">&lt;sync_adapter.h&gt;</span> header file in the service application:
+
+<pre class="prettyprint">
+#include &lt;sync_adapter.h&gt;
+</pre>
+</li>
+</ol>
+       
+<h2 id="on_demand_sync" name="on_demand_sync">Defining an On-demand Sync Job</h2>
+
+<p>To inform a service application of the time to operate a one-time sync job:</p>
 
+<ol>
 <li>If you want to use an account, create the account and obtain the parameters that are used to call the <span style="font-family: Courier New,Courier,monospace">sync_manager_on_demand_sync_job()</span> function.
 <p>For more information, see <a href="account_tutorial_n.htm#add">Creating and Managing an Account</a> and <a href="../app_framework/bundle_tutorial_n.htm#manage">Managing and Using the Bundle Content</a>.</p>
 
@@ -158,26 +185,11 @@ sync_adapter_unset_callbacks();
 </li>
 </ol>
                
-<h2 id="periodic_sync" name="periodic_sync">Initializing the Periodic Sync</h2>
+<h2 id="periodic_sync" name="periodic_sync">Defining a Periodic Sync Job</h2>
 
 <p>To inform periodically a service application of the time to operate a sync job with its sync interval:</p>
 
 <ol>
-<li><a href="#set_callback">Set the sync adapter callbacks</a> in your service application:
-<pre class="prettyprint">
-#include &lt;sync_adapter.h&gt;
-
-int result;
-result = sync_adapter_set_callbacks(on_start_cb, on_cancel_cb);
-</pre>
-</li>
-
-<li>To use the functions and data types of the Sync Manager API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYNC__MANAGER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYNC__MANAGER__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;sync_manager.h&gt;</span> header file in your UI application:
-<pre class="prettyprint">
-#include &lt;sync_manager.h&gt;
-</pre>
-</li>
-
 <li>If you want to use an account, create the account and obtain the parameters that are used to call the <span style="font-family: Courier New,Courier,monospace">sync_manager_add_periodic_sync_job()</span> function.
 <p>For more information, see <a href="account_tutorial_n.htm#add">Creating and Managing an Account</a> and <a href="../app_framework/bundle_tutorial_n.htm#manage">Managing and Using the Bundle Content</a>.</p>
 <pre class="prettyprint">
@@ -271,26 +283,11 @@ sync_adapter_unset_callbacks();
 </ol>
 
 
-<h2 id="data_change_sync" name="data_change_sync">Initializing the Data Change Sync</h2>
+<h2 id="data_change_sync" name="data_change_sync">Defining a Data Change Sync Job</h2>
 
 <p>To inform a service application of the time to operate a sync job whenever a corresponding database change occurs:</p>
 
 <ol>
-<li><a href="#set_callback">Set the sync adapter callbacks</a> in your service application:
-<pre class="prettyprint">
-#include &lt;sync_adapter.h&gt;
-
-int result;
-result = sync_adapter_set_callbacks(on_start_cb, on_cancel_cb);
-</pre>
-</li>
-
-<li>To use the functions and data types of the Sync Manager API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYNC__MANAGER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYNC__MANAGER__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;sync_manager.h&gt;</span> header file in your UI application:
-<pre class="prettyprint">
-#include &lt;sync_manager.h&gt;
-</pre>
-</li>
-
 <li>If you want to use an account, create the account and obtain the parameters that are used to call the <span style="font-family: Courier New,Courier,monospace">sync_manager_add_data_change_sync_job()</span> function.
 <p>For more information, see <a href="account_tutorial_n.htm#add">Creating and Managing an Account</a> and <a href="../app_framework/bundle_tutorial_n.htm#manage">Managing and Using the Bundle Content</a>.</p>
 
@@ -387,17 +384,11 @@ sync_adapter_unset_callbacks();
 </li>
 </ol>
 
-<h2 id="foreach_sync" name="set_callback">Initializing the ForEach Sync</h2>
+<h2 id="foreach_sync" name="set_callback">Defining a ForEach Sync Job</h2>
 
 <p>To iterate all registered sync jobs to manage them more efficiently:</p>
 
 <ol>
-<li>To use the functions and data types of the Sync Manager API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYNC__MANAGER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYNC__MANAGER__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;sync_manager.h&gt;</span> header file in your UI application:
-<pre class="prettyprint">
-#include &lt;sync_manager.h&gt;
-</pre>
-</li>
-
 <li>Set the callback to be invoked and call the iterate function at the same time:
 <pre class="prettyprint">
 int result;
@@ -420,16 +411,9 @@ sync_job_cb(account_h account, const char *sync_job_name, const char *sync_capab
 
 <h2 id="set_callback" name="set_callback">Setting the Callback Functions</h2>
 
-<p>To set callbacks to receive notifications about sync operations:</p>
+<p>To set callbacks in the service application to receive notifications about sync operations:</p>
 
 <ol>
-<li>To use the functions and data types of the Sync Adapter API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYNC__ADAPTER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYNC__ADAPTER__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;sync_adapter.h&gt;</span> header file in your service application:
-
-<pre class="prettyprint">
-#include &lt;sync_adapter.h&gt;
-</pre>
-</li>
-
 <li>Subscribe to the callback functions to receive notifications for the sync operation when a specific event or condition is detected on the device:
 <pre class="prettyprint">
 int result;
index bc0ee83..d8afbe9 100644 (file)
@@ -65,7 +65,9 @@
 &lt;privileges&gt;
 &nbsp;&nbsp;&nbsp;&lt;!--To add the image viewer, camera, or voice recorder UI gadget in the attach panel--&gt;
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/mediastorage&lt;/privilege&gt;
+&nbsp;&nbsp;&nbsp;&lt;!--To add the camera UI gadget in the attach panel--&gt;
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/camera&lt;/privilege&gt;
+&nbsp;&nbsp;&nbsp;&lt;!--To add the voice recorder UI gadget in the attach panel--&gt;
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/recorder&lt;/privilege&gt;
 &nbsp;&nbsp;&nbsp;&lt;!--To launch apps from the More tab--&gt;
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/appmanager.launch&lt;/privilege&gt;
index 74f8706..1fb88a4 100644 (file)
@@ -26,7 +26,7 @@
                        <li><a href="#prerequisites">Prerequisites</a></li>
                        <li><a href="#map1">Working with Map-type Data Controls</a></li>
                        <li><a href="#map2">Working with SQL-type Data Controls</a></li>
-                       <li><a href="#map3">Working with Data Change Notification</a></li>
+                       <li><a href="#map3">Monitoring Data Changes</a></li>
                </ul>
                <p class="toc-title">Related Info</p>
                <ul class="toc">
    </li>
    <li><a href="#map2">Working with SQL-type Data Controls</a>
     <p>Work with SQL-type data controls.</p></li>
-   <li><a href="#map3">Working with Data Change Notification</a>
-    <p>Work with Data Change Notification.</p></li>
-  </ul>
+   <li><a href="#map3">Monitoring Data Changes</a>
+    <p>Monitor data changes with the provider application, and send notifications to the consumer application.</p></li>
+  </ul> 
 
 <h2 id="prerequisites">Prerequisites</h2>
 
+<p>The data control use cases run 2 applications. Each application plays a different role: one for the consumer, another for the provider.</p>
+
 <p>To enable your application to use the data control functionality:</p>
 <ol>
 <li>
@@ -73,7 +75,6 @@
 </pre>
 </li>
 <li>
-<p>The data control use cases run 2 applications. Each application plays a different role: one for the consumer, another for the provider.</p>
 <p>For the provider application, in the IDE, double-click <strong>tizen-manifest.xml</strong>, and in the Tizen Manifest Editor, go to <strong>Advanced &gt; Data Control &gt; Add</strong>. Add the <strong>Read</strong> and <strong>Write</strong> access rights to both <strong>SQL</strong> and <strong>Map</strong> types.</p>
 </li>
 <li>
 </pre>
 <p>To execute this application, the <span style="font-family: Courier New,Courier,monospace">&lt;sqlite3.h&gt;</span>, <span style="font-family: Courier New,Courier,monospace">&lt;stdlib.h&gt;</span>, <span style="font-family: Courier New,Courier,monospace">&lt;glib.h&gt;</span>, and <span style="font-family: Courier New,Courier,monospace">&lt;string.h&gt;</span> header files have to be included too.</p>
 </li>
-
-<li>
-<p>The data control use cases run 2 applications. Each application plays a different role: one for the consumer, another for the provider.</p>
-<ul>
-<li>For the consumer application, add the <span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/datasharing</span> and <span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/appmanager.launch</span> privileges to the manifest file of the application.</li>
-<li>For the provider application, in the IDE, double-click <strong>tizen-manifest.xml</strong>, and in the Tizen Manifest Editor, go to <strong>Advanced &gt; Data Control &gt; Add</strong>. Add the <strong>Read</strong> and <strong>Write</strong> access rights to both <strong>SQL</strong> and <strong>Map</strong> types.
-</li></ul>
-</li>
 </ol>
 
  <h2 id="map1" name="map1">Working with Map-type Data Controls</h2>
@@ -717,167 +710,156 @@ app_create(void *data)
 </li>
 </ol>
 
+<h2 id="map3" name="map3">Monitoring Data Changes</h2>
 
-
-
-<h2 id="map3" name="map3">Working with Data Change Notification</h2>
-
-<p>To notify and listen data change notification using the Data Control API:</p>
+<p>To monitor data changes and send notifications using the Data Control API:</p>
 
 <ol>
 <li id="provider3">Implement the provider application.
-<p>When provider's data has been changed, provider application can notify information about changed data to consumers who register data change notification callback.</p>
-<p>The provider application can decide who can or can not listen data change notfication when consumer application try to register data change notification callback.</p>
+<p>When the provider&#39;s data changes, the provider application can send information about the changed data to the consumers who have registered a data change notification callback.</p>
+<p>When a consumer application attempts to register a data change notification callback, the provider application can decide whether to allow it.</p>
 
 <pre class="prettyprint">
+bool
+change_noti_consumer_list_cb(data_control_h provider, char *consumer_appid, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;Added change noti consumer appid: %s&quot;, consumer_appid);
 
-bool change_noti_consumer_list_cb(
-&nbsp;&nbsp;&nbsp;data_control_h provider,
-&nbsp;&nbsp;&nbsp;char *consumer_appid,
-&nbsp;&nbsp;&nbsp;void *user_data)
-{
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;Added change noti consumer appid: %s&quot;, consumer_appid);
-&nbsp;&nbsp;&nbsp;return true;
-}
-
-bool consumer_filter_cb_1(
-&nbsp;&nbsp;&nbsp;data_control_h provider,
-&nbsp;&nbsp;&nbsp;char *consumer_appid,
-&nbsp;&nbsp;&nbsp;void *user_data)
-{
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;consumer appid %s try to add data change callback&quot;, consumer_appid);
-&nbsp;&nbsp;&nbsp;if (strcmp(consumer_appid, &quot;org.tizen.helloworld_consumer2&quot;) == 0) {
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Invalid appid : %s&quot;, consumer_appid);
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;
-&nbsp;&nbsp;&nbsp;}
-&nbsp;&nbsp;&nbsp;data_control_provider_foreach_data_change_consumer(
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;provider,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;change_noti_consumer_list_cb,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL);
-&nbsp;&nbsp;&nbsp;return true;
-}
-
-bool consumer_filter_cb_2(
-&nbsp;&nbsp;&nbsp;data_control_h provider,
-&nbsp;&nbsp;&nbsp;char *consumer_appid,
-&nbsp;&nbsp;&nbsp;void *user_data)
-{
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;consumer appid %s try to add data change callback&quot;, consumer_appid);
-&nbsp;&nbsp;&nbsp;if (strcmp(consumer_appid, &quot;org.tizen.helloworld_consumer3&quot;) == 0) {
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Invalid appid : %s&quot;, consumer_appid);
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;
-&nbsp;&nbsp;&nbsp;}
-&nbsp;&nbsp;&nbsp;return true;
+&nbsp;&nbsp;&nbsp;&nbsp;return true;
 }
 
+bool
+consumer_filter_cb_1(data_control_h provider, char *consumer_appid, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;consumer appid %s try to add data change callback&quot;, consumer_appid);
+&nbsp;&nbsp;&nbsp;&nbsp;if (strcmp(consumer_appid, &quot;org.tizen.helloworld_consumer2&quot;) == 0) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Invalid appid : %s&quot;, consumer_appid);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;
+&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;data_control_provider_foreach_data_change_consumer(provider, &amp;change_noti_consumer_list_cb, NULL);
+
+&nbsp;&nbsp;&nbsp;&nbsp;return true;
+}
+
+bool
+consumer_filter_cb_2(data_control_h provider, char *consumer_appid, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;consumer appid %s try to add data change callback&quot;, consumer_appid);
+&nbsp;&nbsp;&nbsp;&nbsp;if (strcmp(consumer_appid, &quot;org.tizen.helloworld_consumer3&quot;) == 0) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Invalid appid : %s&quot;, consumer_appid);
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;
+&nbsp;&nbsp;&nbsp;&nbsp;}
+
+&nbsp;&nbsp;&nbsp;&nbsp;return true;
+}
+
+/* Add the filter for the accepted callback registration */
 int filter_callback_id_1;
 int filter_callback_id_2;
-void add_consumer_filter_cb_func(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+void
+add_consumer_filter_cb_func(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
 {
-&nbsp;&nbsp;&nbsp;data_control_provider_add_data_change_consumer_filter_cb(consumer_filter_cb_1, NULL, &amp;filter_callback_id_1);
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;filter_callback_id_1 id: %d&quot;, filter_callback_id_1);
+&nbsp;&nbsp;&nbsp;&nbsp;data_control_provider_add_data_change_consumer_filter_cb(consumer_filter_cb_1, NULL, &amp;filter_callback_id_1);
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;filter_callback_id_1 id: %d&quot;, filter_callback_id_1);
 
-&nbsp;&nbsp;&nbsp;data_control_provider_add_data_change_consumer_filter_cb(consumer_filter_cb_2, NULL, &amp;filter_callback_id_2);
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;filter_callback_id_2 id: %d&quot;, filter_callback_id_2);
+&nbsp;&nbsp;&nbsp;&nbsp;data_control_provider_add_data_change_consumer_filter_cb(consumer_filter_cb_2, NULL, &amp;filter_callback_id_2);
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;filter_callback_id_2 id: %d&quot;, filter_callback_id_2);
 }
 
-void remove_consumer_filter_cb_func(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+/* Remove the filter */
+void
+remove_consumer_filter_cb_func(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
 {
-&nbsp;&nbsp;&nbsp;data_control_provider_remove_data_change_consumer_filter_cb(filter_callback_id_1);
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;remove callback %d&quot;, filter_callback_id_1);
+&nbsp;&nbsp;&nbsp;&nbsp;data_control_provider_remove_data_change_consumer_filter_cb(filter_callback_id_1);
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;remove callback %d&quot;, filter_callback_id_1);
 
-&nbsp;&nbsp;&nbsp;data_control_provider_remove_data_change_consumer_filter_cb(filter_callback_id_2);
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;remove callback %d&quot;, filter_callback_id_2);
+&nbsp;&nbsp;&nbsp;&nbsp;data_control_provider_remove_data_change_consumer_filter_cb(filter_callback_id_2);
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;remove callback %d&quot;, filter_callback_id_2);
 }
 
-void update_request_cb(int request_id, data_control_h provider, bundle *update_data, const char *where, void *user_data)
+/* Send a data change notification */
+void
+update_request_cb(int request_id, data_control_h provider, bundle *update_data, const char *where, void *user_data)
 {
-&nbsp;&nbsp;&nbsp;char* command = data_control_provider_create_update_statement(
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;provider, update_data, where);
-&nbsp;&nbsp;&nbsp;int ret = sqlite3_exec(db, command, NULL, NULL, NULL);
-&nbsp;&nbsp;&nbsp;if (ret != SQLITE_OK) {
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data_control_provider_send_error(request_id, sqlite3_errmsg(db));
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;free(command);
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
-&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;char* command = data_control_provider_create_update_statement(provider, update_data, where);
+&nbsp;&nbsp;&nbsp;&nbsp;int ret = sqlite3_exec(db, command, NULL, NULL, NULL);
+&nbsp;&nbsp;&nbsp;&nbsp;if (ret != SQLITE_OK) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data_control_provider_send_error(request_id, sqlite3_errmsg(db));
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;free(command);
 
-&nbsp;&nbsp;&nbsp;ret = data_control_provider_send_update_result(request_id);
-&nbsp;&nbsp;&nbsp;if (ret != DATA_CONTROL_ERROR_NONE)  {
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;update_send_result failed with error: %d&quot;,ret);
-&nbsp;&nbsp;&nbsp;}
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;[update_request_cb] send result success&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
+&nbsp;&nbsp;&nbsp;&nbsp;}
 
-&nbsp;&nbsp;&nbsp;data_control_provider_send_data_change_noti(provider, DATA_CONTROL_DATA_CHANGE_SQL_UPDATE, update_data);
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;[send data change notification] Notify data change&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;ret = data_control_provider_send_update_result(request_id);
+&nbsp;&nbsp;&nbsp;&nbsp;if (ret != DATA_CONTROL_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;update_send_result failed with error: %d&quot;, ret);
+&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;[update_request_cb] send result success&quot;);
 
-&nbsp;&nbsp;&nbsp;free(command);
-}
+&nbsp;&nbsp;&nbsp;&nbsp;data_control_provider_send_data_change_noti(provider, DATA_CONTROL_DATA_CHANGE_SQL_UPDATE, update_data);
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;[send data change notification] Notify data change&quot;);
 
+&nbsp;&nbsp;&nbsp;&nbsp;free(command);
+}
 </pre>
 </li>
 
 <li id="consumer3">Implement the consumer application.
-<p>The consumer application requests the add/remove data change callback to the provider application and receives the result from the provider application.</p>
+<p>The consumer application requests the provider application to add or remove the data change callback, and receives the result from the provider application.</p>
 
 <pre class="prettyprint">
-
-void data_change_cb(data_control_h provider,
-&nbsp;&nbsp;&nbsp;data_control_data_change_type_e type,
-&nbsp;&nbsp;&nbsp;bundle *data,
-&nbsp;&nbsp;&nbsp;void *user_data)
+/* Triggered when the data change notification arrives */
+void
+data_change_cb(data_control_h provider, data_control_data_change_type_e type,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bundle *data, void *user_data)
 {
-&nbsp;&nbsp;&nbsp;char *word;
-&nbsp;&nbsp;&nbsp;char *word_desc;
-&nbsp;&nbsp;&nbsp;char *word_num;
+&nbsp;&nbsp;&nbsp;&nbsp;char *word;
+&nbsp;&nbsp;&nbsp;&nbsp;char *word_desc;
+&nbsp;&nbsp;&nbsp;&nbsp;char *word_num;
 
-&nbsp;&nbsp;&nbsp;bundle_get_str(data, &quot;WORD&quot;, &amp;word);
-&nbsp;&nbsp;&nbsp;bundle_get_str(data, &quot;WORD_DESC&quot;, &amp;word_desc);
-&nbsp;&nbsp;&nbsp;bundle_get_str(data, &quot;WORD_NUM&quot;, &amp;word_num);
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;%d type noti, changed data : %s, %s, %s&quot;, type, word, word_desc, word_num);
+&nbsp;&nbsp;&nbsp;&nbsp;bundle_get_str(data, &quot;WORD&quot;, &amp;word);
+&nbsp;&nbsp;&nbsp;&nbsp;bundle_get_str(data, &quot;WORD_DESC&quot;, &amp;word_desc);
+&nbsp;&nbsp;&nbsp;&nbsp;bundle_get_str(data, &quot;WORD_NUM&quot;, &amp;word_num);
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;%d type noti, changed data : %s, %s, %s&quot;, type, word, word_desc, word_num);
 }
 
-void result_cb(
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data_control_h provider,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data_control_error_e result,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int callback_id,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void *user_data) {
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;Add data change callback RESULT : %d&quot;, result);
+/* Triggered when the provider has accepted the callback registration */
+void
+result_cb(data_control_h provider, data_control_error_e result, int callback_id, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;Add data change callback RESULT : %d&quot;, result);
 }
 
+/* Register the callback */
 int cb_id;
-void add_data_change_cb_func(void *data, Evas_Object *obj, void *event_info)
+void
+add_data_change_cb_func(void *data, Evas_Object *obj, void *event_info)
 {
-&nbsp;&nbsp;&nbsp;appdata_s *ad = (appdata_s *)data;
-&nbsp;&nbsp;&nbsp;int ret = data_control_add_data_change_cb(ad->provider_h,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data_change_cb,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result_cb,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;cb_id);
-&nbsp;&nbsp;&nbsp;if (ret != DATA_CONTROL_ERROR_NONE) {
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;add data change callback is failed with error: %d&quot;, ret);
-&nbsp;&nbsp;&nbsp;}
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;add data change callback done: %d&quot;, cb_id);
+&nbsp;&nbsp;&nbsp;&nbsp;appdata_s *ad = (appdata_s *)data;
+&nbsp;&nbsp;&nbsp;&nbsp;int ret = data_control_add_data_change_cb(ad-&gt;provider_h, data_change_cb, NULL, result_cb, NULL, &amp;cb_id);
+&nbsp;&nbsp;&nbsp;&nbsp;if (ret != DATA_CONTROL_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;add data change callback failed with error: %d&quot;, ret);
+&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;add data change callback done: %d&quot;, cb_id);
 }
 
-void remove_data_change_cb_func(void *data, Evas_Object *obj, void *event_info)
+/* Remove the callback */
+void
+remove_data_change_cb_func(void *data, Evas_Object *obj, void *event_info)
 {
-&nbsp;&nbsp;&nbsp;appdata_s *ad = (appdata_s *)data;
-&nbsp;&nbsp;&nbsp;data_control_remove_data_change_cb(ad->provider_h, cb_id);
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;remove data change callback done: %d&quot;, cb_id);
+&nbsp;&nbsp;&nbsp;&nbsp;appdata_s *ad = (appdata_s *)data;
+&nbsp;&nbsp;&nbsp;&nbsp;data_control_remove_data_change_cb(ad-&gt;provider_h, cb_id);
+&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;remove data change callback done: %d&quot;, cb_id);
 }
-
 </pre>
 </li>
-
-
 </ol>
-
   
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
 <script type="text/javascript" src="../../scripts/showhide.js"></script>
index c26453f..7082269 100644 (file)
@@ -66,9 +66,7 @@
 <p>To enable your application to use the message port functionality:</p>
 <ol>
 <li><p>You need 2 applications to communicate with each other through the message port.</p></li>
-<li><p>To use trusted message port communication, create an author certificate and register it.</p>
-  <p>You can create and register certificate in Help -> Preferences -> Tizen Sdk -> Security profiles menu. </p>
-  <p>Both applications must have a same certificate for trusted message port communication.</p>
+<li><p>To use trusted message port communication, both applications must have the same certificate. To create and register an author certificate, go to the IDE menu and select <strong>Preferences &gt; Tizen SDK &gt; Security Profiles</strong>. For more information. see <a href="../../../../org.tizen.devtools/html/common_tools/certificate_registration.htm">Certificate Registration</a>.</p>
 </li>
 <li>
 <p>To use the functions and data types of the Message Port API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MESSAGE__PORT__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MESSAGE__PORT__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;message_port.h&gt;</span> header file in your application:</p>
index 0af3564..d067d66 100644 (file)
 
                        
 <p>To enable your application to use the notification functionality:</p>
-<ol><li>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__NOTIFICATION__MODULE.html">Notification</a> API, include the <span style="font-family: Courier New,Courier,monospace">&lt;notification.h&gt;</span> header file in your application:
+<ol>
+
+<li>To use the <a href="../../../../org.tizen.native.mobile.apireference/group__NOTIFICATION__MODULE.html">Notification</a> API, the application has to request permission by adding the following privilege to the <span style="font-family: Courier New,Courier,monospace">tizen-manifest.xml</span> file:
+<pre class="prettyprint">
+&lt;privileges&gt;
+&nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/notification&lt;/privilege&gt;
+&lt;/privileges&gt;
+</pre>
+</li>
+<li>To use the functions and data types of the Notification API, include the <span style="font-family: Courier New,Courier,monospace">&lt;notification.h&gt;</span> header file in your application:
 <pre class="prettyprint">
 #include &lt;notification.h&gt;
 </pre>
index 2edf396..1e9a166 100644 (file)
        
        <h2 id="prerequisites">Prerequisites</h2>
        
-<p>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__SHORTCUT__MODULE.html">Shortcut</a> API, include the <span style="font-family: Courier New,Courier,monospace">&lt;shortcut_manager.h&gt;</span> header file in your application:</p>
+       <p>To enable your application to use the shortcut functionality:</p>
+<ol>   
+<li>To use the <a href="../../../../org.tizen.native.mobile.apireference/group__SHORTCUT__MODULE.html">Shortcut</a> API, the application has to request permission by adding the following privilege to the <span style="font-family: Courier New,Courier,monospace">tizen-manifest.xml</span> file:
+<pre class="prettyprint">
+&lt;privileges&gt;
+&nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/shortcut&lt;/privilege&gt;
+&lt;/privileges&gt;
+</pre>
+</li>
+<li>To use the functions and data types of the Shortcut API, include the <span style="font-family: Courier New,Courier,monospace">&lt;shortcut_manager.h&gt;</span> header file in your application:
 <pre class="prettyprint">
 #include &lt;shortcut_manager.h&gt;
 </pre>
+</li>
+</ol>
 
  <h2 id="add" name="add">Adding a Shortcut</h2>
 
index 7e9b3e1..09b682c 100644 (file)
@@ -118,7 +118,7 @@ cairo = cairo_create(cairo_surface);
 <h2 id="gl_backend">Creating Cairo with the GL Backend</h2>
 
 <p>For the Cairo GL backend in Tizen, you must know OpenGL. For more information, see the <a href="../../../../org.tizen.guides/html/native/graphics/opengles_n.htm">OpenGL ES guide</a>.</p>
-<p>To create Cairo with the GL backend:</p>
+<p>To create a Cairo context, surface, and device with the GL backend:</p>
 <ol>
 <li>Create the window, <span style="font-family: Courier New,Courier,monospace">Evas_Object</span> image, and Evas GL.
 <p>Place an <span style="font-family: Courier New,Courier,monospace">Evas_Object</span> image in the application&#39;s main window, and create and initialize Evas GL. Call the <span style="font-family: Courier New,Courier,monospace">evas_object_image_pixels_get_callback_set()</span> function to initialize the Evas GL handle. The <span style="font-family: Courier New,Courier,monospace">cairo_drawing()</span> function must be set as the input parameter. For more information about creating and initializing Evas GL, see <a href="../../../../org.tizen.tutorials/html/native/graphics/opengl_tutorial_n.htm#creating">Creating the Elm Window and EvasGL</a>.</p>
@@ -137,7 +137,7 @@ evas_object_image_native_surface_set(img, &amp;ns);
 evas_object_image_pixels_get_callback_set(img, cairo_drawing, 0);
 </pre>
 </li>
-<li>Create the Cairo context and surface.
+<li>Create the Cairo context, surface, and device.
 <p>Use the <span style="font-family: Courier New,Courier,monospace">Evas_Object</span> image and Evas GL context to create the Cairo context and surface. Cairo can be used in a multi-threaded environment. By default, Cairo switches out the current GL context after each draw finishes. If no other thread uses Cairo for rendering, Cairo can use the non-thread-aware mode with the <span style="font-family: Courier New,Courier,monospace">cairo_gl_device_set_thread_aware()</span> function&#39;s second parameter set to 0.</p>
 <pre class="prettyprint">
 setenv(&quot;CAIRO_GL_COMPOSITOR&quot;, &quot;msaa&quot;, 1);
index 261f27e..e65dfc1 100644 (file)
                                <li><a href="#place">Recognizing the Place Information</a></li>
                                <li><a href="#route">Recognizing the Route Information</a></li>
                                <li><a href="#preference">Customizing the Service Requests</a></li>
-                               <li><a href="#maps_view">Using the Maps View</a></li>
-                               <li><a href="#maps_object">Using the Maps View Object</a></li>
-                               <li><a href="#maps_event">Using the Maps View Event</a></li>
+                               <li>Map view
+                               <ul class="toc">
+                                       <li><a href="#maps_view">Using the Map View</a></li>
+                                       <li><a href="#maps_object">Creating Map View Objects</a></li>
+                                       <li><a href="#maps_event">Managing Map View Events</a></li>
+                               </ul>
+                               </li>
                        </ul>
                        <p class="toc-title">Related Info</p>
                        <ul class="toc">
                                <li><a href="../../../../org.tizen.guides/html/native/location/maps_n.htm">Maps Service Guide</a></li>
-                               <li><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MAPS__SERVICE__MODULE.html">Maps Service API for Mobile Native</a></li>
+                               <li><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MAPS__SERVICE__MODULE.html">Maps Service API for Mobile Native</a></li>
                        </ul>
-               </div>
+               </div>
        </div>
 </div>
 
 
        <li><a href="#preference">Customizing the Service Requests</a>
        <p>Prepare and send a set of extra preferences through a map service request to allow the map provider to generate a more accurate result.</p></li>
-
-       <li><a href="#maps_view">Using the Maps View</a>
-       <p>Create the Maps View instance, change the setting values and destroy the instance when no longer needed.</p></li>
-
-       <li><a href="#maps_object">Using the Maps View Object</a>
-       <p>Create a polyline, polygon or marker instance, add it to Maps View and remove it from Maps View when no longer needed.</p></li>
-
-       <li><a href="#maps_event">Using the Maps View Event</a>
-       <p>Set a callback for Maps View Event, get various datas of Maps View event and unset the callback when no longer needed.</p></li>
+       
+       <li>Map view
+       <ul>
+               <li><a href="#maps_view">Using the Map View</a>
+               <p>Create the map view instance and define its settings.</p></li>
+       
+               <li><a href="#maps_object">Creating Map View Objects</a>
+               <p>Create a polyline, polygon, or marker instance, and add it to the map view.</p></li>
+       
+               <li><a href="#maps_event">Managing Map View Events</a>
+               <p>Set a callback for map view events, and get various data from the events.</p></li>
+       </ul>
+       </li>
 </ul>
 
 <h2 id="prerequisites">Prerequisites</h2>
 <pre class="prettyprint">
 &lt;privileges&gt;
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/internet&lt;/privilege&gt;
+&nbsp;&nbsp;&nbsp;&lt;!--To use the map view--&gt;
+&nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/network.get&lt;/privilege&gt;
 &lt;/privileges&gt;
 </pre>
 </li>
 #include &lt;maps_service.h&gt;
 </pre>
 </li>
+<li><p>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MAPS__VIEW__MODULE.html">View</a> API, include the <span style="font-family: Courier New,Courier,monospace;">&lt;maps_view.h&gt;</span> header file in your application:</p>
+<pre class="prettyprint">
+#include &lt;maps_view.h&gt;
+</pre>
+</li>
 </ol>
 
 <h2 id="start" name="start">Starting the Map Service</h2>
@@ -598,16 +613,19 @@ free(street);
 
 <p>The result of the <a href="#search_place">place search request</a> (<span style="font-family: Courier New,Courier,monospace;">maps_service_search_place()</span>, <span style="font-family: Courier New,Courier,monospace;">maps_service_search_place_by_area()</span>, or <span style="font-family: Courier New,Courier,monospace;">maps_service_search_place_by_address()</span>) is retrieved from the map service using multiple iterations of the <span style="font-family: Courier New,Courier,monospace;">maps_service_search_place_cb()</span> callback. The result is an instance of place data.</p>
 
-<table class="note"><tbody>
-<tr>
-       <th class="note">Note</th>
-</tr>
-<tr>
-       <td class="note">Different map providers are capable of providing different sets of place data features. Some map providers can extend the place data features with extra properties that are not specified in the Maps Service API. Such properties are organized as a key-value storage where the keys are the names of the properties.
-       <p>If your map provider does not support a specific feature, the get function for the feature returns an error. To prevent problems, you can <a href="#start">check which data features are available</a> in your map provider using the <span style="font-family: Courier New,Courier,monospace;">maps_service_provider_is_data_supported()</span> function.</p>
-       </td>
-</tr>
-</tbody></table>
+       <table class="note"> 
+<tbody> 
+    <tr> 
+     <th class="note">Note</th> 
+    </tr> 
+    <tr> 
+     <td class="note">Different map providers are capable of providing different sets of place data features. Some map providers can extend the place data features with extra properties that are not specified in the Maps Service API. Such properties are organized as a key-value storage where the keys are the names of the properties.
+        
+        <p>If your map provider does not support a specific feature, the get function for the feature returns an error. To prevent problems, you can <a href="#start">check which data features are available</a> in your map provider using the <span style="font-family: Courier New,Courier,monospace;">maps_service_provider_is_data_supported()</span> function.</p>
+        </td> 
+    </tr> 
+   </tbody> 
+  </table>
 
 <p>To parse place data:</p>
 
@@ -738,21 +756,24 @@ __maps_place_properties_cb(int index, int total, char* key, void* value, void* u
 
 <p>The result of the <a href="#search_route">route calculation request</a> (<span style="font-family: Courier New,Courier,monospace;">maps_service_search_route()</span> or <span style="font-family: Courier New,Courier,monospace;">maps_service_search_route_waypoints()</span>) is retrieved from the map service using multiple iterations of the <span style="font-family: Courier New,Courier,monospace;">maps_service_search_route_cb()</span> callback. The result is an instance of route data.</p>
 
-<table class="note"><tbody>
-<tr>
-       <th class="note">Note</th>
-</tr>
-<tr>
-       <td class="note">Different map providers are capable of providing different sets of route data features. Some map providers can extend the route data features with extra properties that are not specified in the Maps Service API. Such properties are organized as a key-value storage where the keys are the names of the properties.
-       <p>If your map provider does not support a specific feature, the get function for the feature returns an error. To prevent problems, you can <a href="#start">check which data features are available</a> in your map provider using the <span style="font-family: Courier New,Courier,monospace;">maps_service_provider_is_data_supported()</span> function.</p>
-       </td>
-</tr>
-</tbody></table>
-
-
+       <table class="note"> 
+<tbody> 
+    <tr> 
+     <th class="note">Note</th> 
+    </tr> 
+    <tr> 
+     <td class="note">Different map providers are capable of providing different sets of route data features. Some map providers can extend the route data features with extra properties that are not specified in the Maps Service API. Such properties are organized as a key-value storage where the keys are the names of the properties.
+        
+        <p>If your map provider does not support a specific feature, the get function for the feature returns an error. To prevent problems, you can <a href="#start">check which data features are available</a> in your map provider using the <span style="font-family: Courier New,Courier,monospace;">maps_service_provider_is_data_supported()</span> function.</p>
+        </td> 
+    </tr> 
+   </tbody> 
+  </table>
+
+  
 <p>To parse route data:</p>
 
-<ol><li><p>To get the route information features, such as route ID, origin, destination, and total distance, use the following functions with a <span style="font-family: Courier New,Courier,monospace;">maps_route_h</span> place handle:</p>
+<ol><li><p>To get the route information features, such as route ID, origin, destination, and total distance, use the following functions with a <span style="font-family: Courier New,Courier,monospace;">maps_route_h</span> place handle:</p>  
 <ul>
 <li>To obtain the route ID, use the <span style="font-family: Courier New,Courier,monospace;">maps_route_get_route_id()</span> function:
 <pre class="prettyprint">
@@ -968,40 +989,29 @@ maps_preference_destroy(preference);
 <p>If your map provider requires any specific preferences, use the <span style="font-family: Courier New,Courier,monospace;">maps_preference_set_property()</span> function with key-value pairs defined in the appropriate map provider documentation.</p>
 
 
-<h2 id="maps_view" name="maps_view">Using the Maps View</h2>
+<h2 id="maps_view" name="maps_view">Using the Map View</h2>
 
-<p>To start using the maps view:</p>
+<p>To use the map view:</p>
 <ol>
-<li>Make sure that your application has the <span style="font-family: Courier New,Courier,monospace;">http://tizen.org/privilege/internet</span> privilege and <span style="font-family: Courier New,Courier,monospace;">http://tizen.org/privilege/network.get</span> privilege.
-</li>
-
-<li><p>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MAPS__SERVICE__MODULE.html">Maps View</a> API, include the <span style="font-family: Courier New,Courier,monospace;"> &lt;maps_view.h&gt; </span> header file in your application:</p>
-<pre class="prettyprint">
-#include &lt;maps_view.h&gt;
-</pre>
-</li>
-
-<li>Before you use the Maps View API, create a Maps View instance using the <span style="font-family: Courier New,Courier,monospace;">maps_view_create()</span> function:
+<li>Before you use the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MAPS__VIEW__MODULE.html">View</a> API, create a map view instance using the <span style="font-family: Courier New,Courier,monospace;">maps_view_create()</span> function:
 <pre class="prettyprint">
 maps_view_h maps_view = NULL;
-Evas_Object *evas_object_image = evas_object_image_filled_add(evas_object_evas_get(window));   //Create an Image Object for Maps View
+/* Create an image object for the map view */
+Evas_Object *evas_object_image = evas_object_image_filled_add(evas_object_evas_get(window));
 
 error = maps_view_create(maps, evas_object_image, &amp;maps_view);
 if (error != MAPS_ERROR_NONE)
-{
-   // Error handling
-}
+&nbsp;&nbsp;&nbsp;&nbsp;/* Error handling */
 </pre>
 </li>
 
-<li>Set the properties of Maps View:
-<ul><li>Use the <span style="font-family: Courier New,Courier,monospace;">maps_view_set_type()</span> function for a type of Maps View:
+<li>Set the map view properties:
+<ul><li>Set the map view type with the <span style="font-family: Courier New,Courier,monospace;">maps_view_set_type()</span> function.
+<p>For other available types, see the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MAPS__VIEW__MODULE.html#ga379898d515d81cf500a814571524f106">_maps_view_type_e</a> enumerator.</p>
 <pre class="prettyprint">
 error = maps_view_set_type(maps_view, MAPS_VIEW_TYPE_NORMAL);
 if (error != MAPS_ERROR_NONE)
-{
-   // Error handling
-}
+&nbsp;&nbsp;&nbsp;&nbsp;/* Error handling */
 </pre>
 
 <p>You can also use the <span style="font-family: Courier New,Courier,monospace;">maps_view_set_type()</span> function with the following types:</p>
@@ -1011,110 +1021,89 @@ if (error != MAPS_ERROR_NONE)
 <li><span style="font-family: Courier New,Courier,monospace;">MAPS_VIEW_TYPE_HYBRID</span></li></ul>
 </li>
 
-<li>Use the <span style="font-family: Courier New,Courier,monospace;">maps_view_set_buildings_enabled()</span> function for the 3D building of Maps View:
+<li>Set the 3D building of the map view with the <span style="font-family: Courier New,Courier,monospace;">maps_view_set_buildings_enabled()</span> function:
 <pre class="prettyprint">
 error = maps_view_set_buildings_enabled(maps_view, true);
 if (error != MAPS_ERROR_NONE)
-{
-   // Error handling
-}
+&nbsp;&nbsp;&nbsp;&nbsp;/* Error handling */
 </pre>
 </li>
 
-<li>Use the <span style="font-family: Courier New,Courier,monospace;">maps_view_set_traffic_enabled()</span> function for the traffic information of Maps View:
+<li>Set the map view traffic information with the <span style="font-family: Courier New,Courier,monospace;">maps_view_set_traffic_enabled()</span> function:
 <pre class="prettyprint">
 error = maps_view_set_traffic_enabled(maps_view, true);
 if (error != MAPS_ERROR_NONE)
-{
-   // Error handling
-}
+&nbsp;&nbsp;&nbsp;&nbsp;/* Error handling */
 </pre>
 </li>
 
-<li>Use the <span style="font-family: Courier New,Courier,monospace;">maps_view_set_scalebar_enabled()</span> function for the scalebar of Maps View:
+<li>Set the map view scalebar with the <span style="font-family: Courier New,Courier,monospace;">maps_view_set_scalebar_enabled()</span> function:
 <pre class="prettyprint">
 error = maps_view_set_scalebar_enabled(maps_view, true);
 if (error != MAPS_ERROR_NONE)
-{
-   // Error handling
-}
+&nbsp;&nbsp;&nbsp;&nbsp;/* Error handling */
 </pre>
 </li>
 
-<li>Use the <span style="font-family: Courier New,Courier,monospace;">maps_view_set_language()</span> function for the language of Maps View:
+<li>Set the map view language with the <span style="font-family: Courier New,Courier,monospace;">maps_view_set_language()</span> function:
 <pre class="prettyprint">
-error = maps_view_set_language(maps_view, "eng");
+error = maps_view_set_language(maps_view, &quot;eng&quot;);
 if (error != MAPS_ERROR_NONE)
-{
-   // Error handling
-}
+&nbsp;&nbsp;&nbsp;&nbsp;/* Error handling */
 </pre>
 </li></ul></li>
 
-<li>Set the location and size of Maps View:
-<ul><li>Use the <span style="font-family: Courier New,Courier,monospace;">maps_view_set_screen_location()</span> function:
+<li>Set the map view location and size:
+<p>Set the map view location with the <span style="font-family: Courier New,Courier,monospace;">maps_view_set_screen_location()</span> function:</p>
 <pre class="prettyprint">
 error = maps_view_set_screen_location(maps_view, 0, 100, 500, 1000);
 if (error != MAPS_ERROR_NONE)
-{
-   // Error handling
-}
+&nbsp;&nbsp;&nbsp;&nbsp;/* Error handling */
 </pre>
-</li>
 
-<li>Or, use the <span style="font-family: Courier New,Courier,monospace;">maps_view_move()</span> and <span style="font-family: Courier New,Courier,monospace;">maps_view_resize()</span>function:
+<p>You can also set the location with the <span style="font-family: Courier New,Courier,monospace;">maps_view_move()</span> and <span style="font-family: Courier New,Courier,monospace;">maps_view_resize()</span> functions:</p>
 <pre class="prettyprint">
 error = maps_view_move(0, 100);
 if (error != MAPS_ERROR_NONE)
-{
-   // Error handling
-}
+&nbsp;&nbsp;&nbsp;&nbsp;/* Error handling */
 
 error = maps_view_resize(500, 1000);
 if (error != MAPS_ERROR_NONE)
-{
-   // Error handling
-}
+&nbsp;&nbsp;&nbsp;&nbsp;/* Error handling */
 </pre>
-</li></ul></li>
+</li>
 
-<li>Set the visivility of Maps View using the <span style="font-family: Courier New,Courier,monospace;">maps_view_set_visibility()</span> function:
+<li>Set the map view visibility with the <span style="font-family: Courier New,Courier,monospace;">maps_view_set_visibility()</span> function:
 <pre class="prettyprint">
 error = maps_view_set_visibility(maps_view, true);
 if (error != MAPS_ERROR_NONE)
-{
-   // Error handling
-}
+&nbsp;&nbsp;&nbsp;&nbsp;/* Error handling */
 </pre>
 </li>
 
-<li>Set the center of Maps View using the <span style="font-family: Courier New,Courier,monospace;">maps_view_set_center()</span> function:
+<li>Set the map view center with the <span style="font-family: Courier New,Courier,monospace;">maps_view_set_center()</span> function:
 <pre class="prettyprint">
 maps_coordinates_h maps_coord = NULL;
 
-maps_coordinates_create(28.64362, 77.19865, &maps_coord);
+maps_coordinates_create(28.64362, 77.19865, &amp;maps_coord);
 
 error = maps_view_set_center(maps_view, maps_coord);
 if (error != MAPS_ERROR_NONE)
-{
-   // Error handling
-}
+&nbsp;&nbsp;&nbsp;&nbsp;/* Error handling */
 
 maps_coordinates_destroy(maps_coord);
 </pre>
 </li>
 
-<li>Set the zoom level of Maps View using the <span style="font-family: Courier New,Courier,monospace;">maps_view_set_zoom_level()</span> function:
+<li>Set the map view zoom level with the <span style="font-family: Courier New,Courier,monospace;">maps_view_set_zoom_level()</span> function:
 <pre class="prettyprint">
 error = maps_view_set_zoom_level(maps_view, 12);
 if (error != MAPS_ERROR_NONE)
-{
-   // Error handling
-}
+&nbsp;&nbsp;&nbsp;&nbsp;/* Error handling */
 </pre>
 </li>
 
-<li>Destroy the Maps View instance using the <span style="font-family: Courier New,Courier,monospace;">maps_view_destroy()</span> function when no longer needed:
+<li>When no longer needed, destroy the map view instance with the <span style="font-family: Courier New,Courier,monospace;">maps_view_destroy()</span> function:
 <pre class="prettyprint">
 maps_view_destroy(maps_view);
 </pre>
@@ -1122,86 +1111,83 @@ maps_view_destroy(maps_view);
 </ol>
 
 
-<h2 id="maps_object" name="maps_object">Using the Maps View Object</h2>
+<h2 id="maps_object" name="maps_object">Creating Map View Objects</h2>
 
-<p>You can also use 3 kinds of Maps View Objects.</p>
-<ul>
-<li><span style="font-family: Courier New,Courier,monospace;">MAPS_VIEW_OBJECT_POLYLINE</span></li>
-<li><span style="font-family: Courier New,Courier,monospace;">MAPS_VIEW_OBJECT_POLYGON</span></li>
-<li><span style="font-family: Courier New,Courier,monospace;">MAPS_VIEW_OBJECT_MARKER</span></li>
-</ul>
+<p>You can create polyline, polygon, and marker objects for the map view.</p>
+  <table class="note"> 
+   <tbody> 
+    <tr> 
+     <th class="note">Note</th> 
+    </tr> 
+    <tr> 
+     <td class="note">Before you use the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MAPS__VIEW__OBJECT__MODULE.html">View Object</a> API, create a map view object instance.</td> 
+    </tr> 
+   </tbody> 
+  </table> 
 
-<p>To start using the maps view object:</p>
-<ol><li>Before you use the Maps View Object API, create a instance of Maps View Object.
-<ul><li>Use the <span style="font-family: Courier New,Courier,monospace;">maps_view_object_create_polyline()</span> function for creating a polyline:
+<p>To create a map view object:</p>
+
+<ol><li>Create a map view object:
+<ul><li>To create a polyline:
 <pre class="prettyprint">
 maps_view_object_h object = NULL;
 maps_coordinates_h coord1 = NULL, coord2 = NULL;
 maps_coordinates_list_h coord_list = NULL;
 
-maps_coordinates_list_create(&coord_list);
-maps_coordinates_create(28.64362, 77.19865, &coord1);
+maps_coordinates_list_create(&amp;coord_list);
+maps_coordinates_create(28.64362, 77.19865, &amp;coord1);
 maps_coordinates_list_append(coord_list, coord1);
-maps_coordinates_create(28.634418, 77.169080, &coord2);
+maps_coordinates_create(28.634418, 77.169080, &amp;coord2);
 maps_coordinates_list_append(coord_list, coord2);
 
-error = maps_view_object_create_polyline(coord_list, 255, 0, 0, 0, 5, &object);
+error = maps_view_object_create_polyline(coord_list, 255, 0, 0, 0, 5, &amp;object);
 if (error != MAPS_ERROR_NONE)
-{
-   // Error handling
-}
+&nbsp;&nbsp;&nbsp;&nbsp;/* Error handling */
 </pre></li>
 
-<li>Use the <span style="font-family: Courier New,Courier,monospace;">maps_view_object_create_polygon()</span> function for creating a polygon:
+<li>To create a polygon:
 <pre class="prettyprint">
 maps_view_object_h object = NULL;
 maps_coordinates_h coord1 = NULL, coord2 = NULL, coord3 = NULL;
 maps_coordinates_list_h coord_list = NULL;
 
-maps_coordinates_list_create(&coord_list);
-maps_coordinates_create(28.64362, 77.19865, &coord1);
+maps_coordinates_list_create(&amp;coord_list);
+maps_coordinates_create(28.64362, 77.19865, &amp;coord1);
 maps_coordinates_list_append(coord_list, coord1);
-maps_coordinates_create(28.63441, 77.16908, &coord2);
+maps_coordinates_create(28.63441, 77.16908, &amp;coord2);
 maps_coordinates_list_append(coord_list, coord2);
-maps_coordinates_create(28.65344, 77.22803, &coord3);
+maps_coordinates_create(28.65344, 77.22803, &amp;coord3);
 maps_coordinates_list_append(coord_list, coord3);
 
-error = maps_view_object_create_polyline(coord_list, 255, 0, 0, 0, 5, &object);
+error = maps_view_object_create_polyline(coord_list, 255, 0, 0, 0, 5, &amp;object);
 if (error != MAPS_ERROR_NONE)
-{
-   // Error handling
-}
+&nbsp;&nbsp;&nbsp;&nbsp;/* Error handling */
 </pre></li>
 
-<li>Use the <span style="font-family: Courier New,Courier,monospace;">maps_view_object_create_marker()</span> function for creating a marker:
+<li>To create a marker with the <span style="font-family: Courier New,Courier,monospace;">MAPS_VIEW_MARKER_PIN</span> type:
 <pre class="prettyprint">
 maps_view_object_h object = NULL;
 maps_coordinates_h coord = NULL;
 
-maps_coordinates_create(28.64362, 77.19865, &coord);
+maps_coordinates_create(28.64362, 77.19865, &amp;coord);
 
-error = maps_view_object_create_marker(coord, "image/marker_icon.png", MAPS_VIEW_MARKER_PIN, &object);
+error = maps_view_object_create_marker(coord, &quot;image/marker_icon.png&quot;, MAPS_VIEW_MARKER_PIN, &amp;object);
 if (error != MAPS_ERROR_NONE)
-{
-   // Error handling
-}
-</pre></li>
-
-<p>You can also use the <span style="font-family: Courier New,Courier,monospace;">maps_view_object_create_marker()</span> function with the following marker types:</p>
-<ul><li><span style="font-family: Courier New,Courier,monospace;">MAPS_VIEW_MARKER_PIN</span></li>
-<li><span style="font-family: Courier New,Courier,monospace;">MAPS_VIEW_MARKER_STICKER</span></li></ul>
+&nbsp;&nbsp;&nbsp;&nbsp;/* Error handling */
+</pre>
+<p>You can also create the <span style="font-family: Courier New,Courier,monospace;">MAPS_VIEW_MARKER_STICKER</span> type marker.</p>
+</li>
 </ul>
+</li>
 
-<li>Add the instance to Maps View using the <span style="font-family: Courier New,Courier,monospace;">maps_view_add_object()</span> function:
+<li>Add the object instance to the map view with the <span style="font-family: Courier New,Courier,monospace;">maps_view_add_object()</span> function:
 <pre class="prettyprint">
 error = maps_view_add_object(maps_view, object);
 if (error != MAPS_ERROR_NONE)
-{
-   // Error handling
-}
+&nbsp;&nbsp;&nbsp;&nbsp;/* Error handling */
 </pre></li>
 
-<li>Remove the instance from Maps View using the <span style="font-family: Courier New,Courier,monospace;">maps_view_remove_object()</span> function when no longer needed:
+<li>When no longer needed, remove the instance with the <span style="font-family: Courier New,Courier,monospace;">maps_view_remove_object()</span> function:
 <pre class="prettyprint">
 maps_view_remove_object(maps_view, object);
 </pre></li>
@@ -1209,9 +1195,11 @@ maps_view_remove_object(maps_view, object);
 
 
 
-<h2 id="maps_event" name="maps_event">Using the Maps View Event</h2>
+<h2 id="maps_event" name="maps_event">Managing Map View Events</h2>
 
-<p>You can also use 4 kinds of Maps View Events.</p>
+<p>To handle map view events:</p>
+<ol><li>Register an event callback with the <span style="font-family: Courier New,Courier,monospace;">maps_view_set_event_cb()</span> function.
+<p>In the second parameter, define the type of the event you want to receive:</p>
 <ul>
 <li><span style="font-family: Courier New,Courier,monospace;">MAPS_VIEW_EVENT_GESTURE</span></li>
 <li><span style="font-family: Courier New,Courier,monospace;">MAPS_VIEW_EVENT_ACTION</span></li>
@@ -1224,41 +1212,26 @@ maps_view_remove_object(maps_view, object);
 <pre class="prettyprint">
 error = maps_view_set_event_cb(maps_view, MAPS_VIEW_EVENT_GESTURE, __main_view_event_cb, NULL);
 if (error != MAPS_ERROR_NONE)
-{
-   // Error handling
-}
+&nbsp;&nbsp;&nbsp;&nbsp;/* Error handling */
 
 static void
 __main_view_event_cb(const maps_view_event_type_e type, maps_view_event_data_h event_data, void *user_data)
 {
-   // Handle the obtained event
+   /* Handle the obtained event */
 }
-</pre>
+</pre></li>
 
-<p>To obtain a data of Maps View Event, follow the same approach using the following functions:</p>
-<ul>
-<li><span style="font-family: Courier New,Courier,monospace;">maps_view_event_data_get_type()</span></li>
-<li><span style="font-family: Courier New,Courier,monospace;"> maps_view_event_data_get_gesture_type()</span></li>
-<li><span style="font-family: Courier New,Courier,monospace;">maps_view_event_data_get_action_type()</span></li>
-<li><span style="font-family: Courier New,Courier,monospace;">maps_view_event_data_get_center()</span></li>
-<li><span style="font-family: Courier New,Courier,monospace;">maps_view_event_data_get_delta()</span></li>
-<li><span style="font-family: Courier New,Courier,monospace;">maps_view_event_data_get_position()</span></li>
-<li><span style="font-family: Courier New,Courier,monospace;">maps_view_event_data_get_zoom_factor()</span></li>
-<li><span style="font-family: Courier New,Courier,monospace;">maps_view_event_data_get_rotation_angle()</span></li>
-<li><span style="font-family: Courier New,Courier,monospace;">maps_view_event_data_get_object()</span></li>
-</ul></li>
+<li>Within the callback, access the event data with various <span style="font-family: Courier New,Courier,monospace;">maps_view_event_data_get_XXX()</span> functions of the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MAPS__VIEW__EVENT__DATA__MODULE.html">View Event Data</a> API.
+</li>
 
-<li>Unset the callback <span style="font-family: Courier New,Courier,monospace;">maps_view_unset_event_cb()</span> function when no longer needed:
+<li>When no longer needed, unset the callback with the <span style="font-family: Courier New,Courier,monospace;">maps_view_unset_event_cb()</span> function:
 <pre class="prettyprint">
 error = maps_view_unset_event_cb(maps_view, MAPS_VIEW_EVENT_GESTURE);
 if (error != MAPS_ERROR_NONE)
-{
-   // Error handling
-}
+&nbsp;&nbsp;&nbsp;&nbsp;/* Error handling */
 </pre></li>
 </ol>
 
-
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
 <script type="text/javascript" src="../../scripts/showhide.js"></script>
 
@@ -1276,7 +1249,7 @@ if (error != MAPS_ERROR_NONE)
 var _gaq = _gaq || [];
 _gaq.push(['_setAccount', 'UA-25976949-1']);
 _gaq.push(['_trackPageview']);
-(function()
+(function() 
 {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
index e7d744f..bcbc367 100644 (file)
 <li>Package ID
 <p>When you create a project in the Tizen SDK, you are given the package ID (randomly generated by the SDK or entered by yourself). The Tizen push server identifies your applications using the package ID.</p></li>
 <li id="permission" name="permission">Permission to Tizen push servers
-<p>To use the push messaging service, the application needs the permission to access the Tizen push server. Request the permission from the Tizen push service team by <a href="mailto:push.tizen@samsung.com">email</a>, including the following information. When the team approves the request, you receive a push app ID corresponding to your package ID.</p></li>
-<p>By sending the application you agree to the <b>Terms of Service</b> and<b> Privacy Policy</b>.</p>
-<ul>
-<li>Terms of Service : <a href="https://www.tizen.org/about/terms-service">https://www.tizen.org/about/terms-service</a></li>
-<li>Privacy Policy : <a href="https://www.tizen.org/about/privacy-policy">https://www.tizen.org/about/privacy-policy</a></li>
-</ul>
+<p>To use the push messaging service, the application needs the permission to access the Tizen push server. Request the permission from the Tizen push service team by <a href="mailto:push.tizen@samsung.com">email</a>, including the following information. When the team approves the request, you receive a push app ID corresponding to your package ID.</p>
+<p>By sending the application, you agree to the <a href="https://www.tizen.org/about/terms-service" target="_blank">Terms of Service</a> and <a href="https://www.tizen.org/about/privacy-policy" target="_blank">Privacy Policy</a>.</p>
+</li>
 </ol>
 
 <table id="request_form">
@@ -706,4 +703,4 @@ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga
 </script>
 
  </body>
-</html>
+</html>
\ No newline at end of file
index 57eb32f..6ac8b17 100644 (file)
@@ -22,7 +22,8 @@
     <div id="toc_border"><div id="toc">
          <p class="toc-title">Content</p>
         <ul class="toc">
-                <li><a href="#init">Initializing the Barcode Engines</a></li>
+                               <li><a href="#prerequisites">Prerequisites</a></li>
+                <li><a href="#prepare">Preparing the Barcode Engines</a></li>
                 <li><a href="#generate">Generating Barcodes</a></li>
                 <li><a href="#detect">Detecting Barcodes</a></li>
         </ul>
@@ -47,7 +48,9 @@
 <p>Become familiar with the Media Vision API basics by learning about:</p>
 
 <ul>
-    <li><a href="#init">Initializing the Barcode Engines</a>
+       <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the media vision functionality.</p></li>
+    <li><a href="#prepare">Preparing the Barcode Engines</a>
         <p>Initialize the barcode generation and detection engines for use.</p></li>
     <li><a href="#generate">Generating Barcodes</a>
         <p>Generate a barcode into memory or a file.</p></li>
         <p>Detect barcodes in the camera preview.</p></li>
 </ul>
 
-<h2 id="init" name="init">Initializing the Barcode Engines</h2>
 
-<p>To initialize the barcode generation and detection engines for use:</p>
 
-<ol>
+<h2 id="prerequisites">Prerequisites</h2>
 
+<p>To enable your application to use the media vision functionality:</p>
+<ol>
 <li>
-
 <p>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__VISION__MODULE.html">Media Vision</a> API, include the <span style="font-family: Courier New,Courier,monospace;">&lt;mv_barcode.h&gt;</span> header file in your application:</p>
-
 <pre class="prettyprint">
 #include &lt;mv_barcode.h&gt;
 </pre>
-
 </li>
+<li>
+<p>To handle camera preview images in barcode detection, include the <span style="font-family: Courier New,Courier,monospace;">&lt;camera.h&gt;</span> header file in your application:</p>
+<pre class="prettyprint">
+#include &lt;camera.h&gt;
+</pre>
+</li>
+</ol>
+<h2 id="prepare">Preparing the Barcode Engines</h2>
+
+<p>To initialize the barcode generation and detection engines for use:</p>
+
+<ol>
 
 <li>
 
@@ -134,16 +146,6 @@ if (error_code != MEDIA_VISION_ERROR_NONE)
 
 <li>
 
-<p>To handle camera preview images, include the <span style="font-family: Courier New,Courier,monospace;">&lt;camera.h&gt;</span> header file:</p>
-
-<pre class="prettyprint">
-#include &lt;camera.h&gt;
-</pre>
-
-</li>
-
-<li>
-
 <p>Create a structure for storing the data required for barcode detection engine configuration:</p>
 
 <pre class="prettyprint">
index 2e0f2d9..73eddb2 100644 (file)
@@ -22,7 +22,7 @@
     <div id="toc_border"><div id="toc">
         <p class="toc-title">Content</p>
         <ul class="toc">
-            <li><a href="#init_metadata">Initializing the Metadata Editor</a></li>
+                       <li><a href="#prerequisites">Prerequisites</a></li>
             <li><a href="#edit_metadata">Editing Metadata and Artwork</a></li>
         </ul>
         <p class="toc-title">Related Info</p>
@@ -46,8 +46,8 @@
 <p>Become familiar with the Metadata Editor API basics by learning about:</p>
 
 <ul>
-    <li><a href="#init_metadata">Initializing the Metadata Editor</a>
-        <p>Initialize the metadata editor for use.</p></li>
+    <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the metadata editor functionality.</p></li>
     <li><a href="#edit_metadata">Editing Metadata and Artwork</a>
         <p>Create a metadata editor handle, bind the handle with an audio file, edit the metadata and artwork, and apply the edits to the file.</p></li>
 </ul>
@@ -63,9 +63,9 @@
     </tbody>
 </table>
 
-<h2 id="init_metadata" name="init_metadata">Initializing the Metadata Editor</h2>
+<h2 id="prerequisites">Prerequisites</h2>
 
-<p>To initialize the metadata editor for use:</p>
+<p>To enable your application to use the metadata editor functionality:</p>
 
 <ol>
 
index db25e77..be4c47c 100644 (file)
@@ -22,7 +22,7 @@
     <div id="toc_border"><div id="toc">
         <p class="toc-title">Content</p>
         <ul class="toc">
-            <li><a href="#init_metadata">Initializing the Metadata Extractor</a></li>
+            <li><a href="#prerequisites">Prerequisites</a></li>
             <li><a href="#get_metadata">Retrieving Metadata</a></li>
         </ul>
         <p class="toc-title">Related Info</p>
@@ -45,8 +45,8 @@
 <p>Become familiar with the Metadata Extractor API basics by learning about:</p>
 
 <ul>
-    <li><a href="#init_metadata">Initializing the Metadata Extractor</a>
-        <p>Initialize the metadata extractor for use.</p></li>
+    <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the metadata extractor functionality.</p></li>
     <li><a href="#get_metadata">Retrieving Metadata</a>
         <p>Create a metadata extractor handle, bind the handle with a media file, and retrieve the metadata, artwork, lyrics, and frames.</p></li>
 </ul>
@@ -62,9 +62,9 @@
     </tbody>
 </table>
 
-<h2 id="init_metadata" name="init_metadata">Initializing the Metadata Extractor</h2>
+<h2 id="prerequisites">Prerequisites</h2>
 
-<p>To initialize the metadata extractor for use:</p>
+<p>To enable your application to use the metadata extractor functionality:</p>
 
 <ol>
 
index 572ee66..c4b0fe3 100644 (file)
@@ -22,7 +22,7 @@
     <div id="toc_border"><div id="toc">
         <p class="toc-title">Content</p>
         <ul class="toc">
-            <li><a href="#init">Initializing OpenAL</a></li>
+            <li><a href="#prerequisites">Prerequisites</a></li>
             <li><a href="#request">Requesting a Source and Audio Buffer</a></li>
             <li><a href="#play">Controlling Audio Stream Playback</a></li>
             <li><a href="#buffer">Using Buffer Queuing for Stream Playback</a></li>
@@ -48,8 +48,8 @@
 <p>Become familiar with the OpenAL API basics by learning about:</p>
 
 <ul>
-    <li><a href="#init">Initializing OpenAL</a>
-        <p>Initialize OpenAL for use.</p></li>
+    <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the OpenAL functionality.</p></li>
     <li><a href="#request">Requesting a Source and Audio Buffer</a>
         <p>Request a source, and request and prepare an audio buffer.</p></li>
     <li><a href="#play">Controlling Audio Stream Playback</a>
@@ -58,9 +58,9 @@
         <p>Queue one or more buffers to be used for a streamed audio source.</p></li>
 </ul>
 
-<h2 id="init" name="init">Initializing OpenAL</h2>
+<h2 id="prerequisites">Prerequisites</h2>
 
-<p>To initialize OpenAL for use:</p>
+<p>To enable your application to use the OpenAL functionality:</p>
 <ol>
 <li>
 <p>To use the functions and data types of the OpenAL API (in <a href="../../../../org.tizen.native.mobile.apireference/group__OPENSRC__OPENAL__FRAMEWORK.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__OPENSRC__OPENAL__FRAMEWORK.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;AL/al.h&gt;</span> and <span style="font-family: Courier New,Courier,monospace;">&lt;AL/alc.h&gt;</span> header files in your application:</p>
index 037460d..f5d8c70 100644 (file)
     <div id="toc_border"><div id="toc">
         <p class="toc-title">Content</p>
         <ul class="toc">
+                       <li><a href="#prerequisites">Prerequisites</a></li>
+                       <li><a href="#prepare">Preparing the Player</a></li>
             <li>Player
                 <ul class="toc">
-                    <li><a href="#init">Initializing the Player</a></li>
                     <li><a href="#play_audio">Playing an Audio File</a></li>
                     <li><a href="#play_video">Playing a Video File</a></li>
                     <li><a href="#release">Stopping the Player and Releasing Resources</a></li>
@@ -32,7 +33,6 @@
             </li>
             <li>Multi-player
                 <ul class="toc">
-                    <li><a href="#init_multiplayer">Initializing Multiple Players</a></li>
                     <li><a href="#play">Playing Multiple Files Simultaneously</a></li>
                 </ul>
             </li>
 <p>Become familiar with the Player API basics by learning about:</p>
 
 <ul>
+       <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the player functionality.</p></li>
+               <li><a href="#prepare">Preparing the Player</a>
+                <p>Initialize the player for use.</p></li>
     <li>Player
         <ul>
-            <li><a href="#init">Initialing the Player</a>
-                <p>Initialize the player for use.</p></li>
             <li><a href="#play_audio">Playing an Audio File</a>
                 <p>Play an audio file.</p></li>
             <li><a href="#play_video">Playing a Video File</a>
@@ -78,8 +80,6 @@
     </li>
     <li>Multi-player
         <ul>
-            <li><a href="#init_multiplayer">Initializing Multiple Players</a>
-                <p>Initialize multiple players for use.</p></li>
             <li><a href="#play">Playing Multiple Files Simultaneously</a>
                 <p>Play multiple files simultaneously.</p></li>
         </ul>
     </li>
 </ul>
 
-<h2 id="init" name="init">Initializing the Player</h2>
-
-<p>To initialize the player for use:</p>
+<h2 id="prerequisites">Prerequisites</h2>
 
+<p>To enable your application to use the player functionality:</p>
 <ol>
-
 <li>
 <p>To use the functions and data types of the Player API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__PLAYER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__PLAYER__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;player.h&gt;</span> header file in your application:</p>
 <pre class="prettyprint">
 </pre>
 <p>In this tutorial, you also need the <span style="font-family: Courier New,Courier,monospace">&lt;Elementary.h&gt;</span> and <span style="font-family: Courier New,Courier,monospace">&lt;glib.h&gt;</span> header files to set the display and use the Glib library functions.</p>
 </li>
-
 <li>
 <p>Retrieve the default internal storage paths for audio and video files, and define the specific paths for the audio and video files to play. To access and use internal storage, include the <span style="font-family: Courier New,Courier,monospace;">storage.h</span> header file in your application.</p>
 <pre class="prettyprint">
@@ -185,7 +182,13 @@ _set_test_path()
 }
 </pre>
 </li>
+</ol>
+
+<h2 id="prepare" name="prepare">Preparing the Player</h2>
 
+<p>To initialize the player for use:</p>
+
+<ol>
 <li id="init_handle" name="init_handle">
 <p>Define a variable for the player handle, and create the handle by passing the variable to the <span style="font-family: Courier New,Courier,monospace;">player_create()</span> function. You need the handle for defining which file to play and with what playback settings. The following example code also creates buttons for the UI to control the playback.</p>
 <pre class="prettyprint">
@@ -463,26 +466,19 @@ dlog_print(DLOG_ERROR, LOG_TAG, &quot;player_destroy = %d&quot;, error_code);
 
 </ol>
 
-<h2 id="init_multiplayer" name="init_multiplayer">Initializing Multiple Players</h2>
 
-<p>To initialize multiple players for use:</p>
+<h2 id="play" name="play">Playing Multiple Files Simultaneously</h2>
+
+<p>To play multiple files simultaneously:</p>
 
 <ol>
-
 <li>
-<p>To use the functions and data types of the Player API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__PLAYER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__PLAYER__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;player.h&gt;</span> header file in your application:</p>
+<p>Define the variables for player handlers, player states, file paths, playback time, and return value.</p>
+<p>In this tutorial, you also need the <span style="font-family: Courier New,Courier,monospace">&lt;stdio.h&gt;</span> and <span style="font-family: Courier New,Courier,monospace">&lt;unistd.h&gt;</span> header files to use standard file input and output functions and system calls.</p>
 <pre class="prettyprint">
-#include &lt;player.h&gt;
 #include &lt;stdio.h&gt;
 #include &lt;unistd.h&gt;
-</pre>
-<p>In this tutorial, you also need the <span style="font-family: Courier New,Courier,monospace">&lt;stdio.h&gt;</span> and <span style="font-family: Courier New,Courier,monospace">&lt;unistd.h&gt;</span> header files to use standard file input and output functions and system calls.</p>
-<p>To ensure that a Player function has been executed properly, make sure that the return value is equal to <span style="font-family: Courier New,Courier,monospace">PLAYER_ERROR_NONE</span>.</p>
-</li>
 
-<li>
-<p>Define the variables for player handlers, player states, file paths, playback time, and return value:</p>
-<pre class="prettyprint">
 static player_h player_1;
 static player_h player_2;
 static player_h player_3;
@@ -504,15 +500,6 @@ free(resource_path);
 static const int PLAYBACK_TIME = 6;
 </pre>
 </li>
-
-</ol>
-
-<h2 id="play" name="play">Playing Multiple Files Simultaneously</h2>
-
-<p>To play multiple files simultaneously:</p>
-
-<ol>
-
 <li>
 <p>Create a player handle for each file using the <span style="font-family: Courier New,Courier,monospace">player_create()</span> function:</p>
 <pre class="prettyprint">
index c679a4c..58c45f8 100644 (file)
@@ -22,7 +22,7 @@
     <div id="toc_border"><div id="toc">
         <p class="toc-title">Content</p>
         <ul class="toc">
-            <li><a href="#init">Initializing the Radio</a></li>
+            <li><a href="#prerequisites">Prerequisites</a></li>
             <li><a href="#scan">Scanning for Radio Frequencies</a></li>
             <li><a href="#tune">Tuning the Radio</a></li>
             <li><a href="#seek">Searching for an Adjacent Channel</a></li>
@@ -47,8 +47,8 @@
 <p>Become familiar with the Radio API basics by learning about:</p>
 
 <ul>
-    <li><a href="#init">Initializing the Radio</a>
-        <p>Initialize the radio for use.</p></li>
+    <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the radio functionality.</p></li>
     <li><a href="#scan">Scanning for Radio Frequencies</a>
         <p>Scan for all available radio frequencies.</p></li>
     <li><a href="#tune">Tuning the Radio</a>
         <p>Search for and tune in to an adjacent channel.</p></li>
 </ul>
 
-<h2 id="init" name="init">Initializing the Radio</h2>
+<h2 id="prerequisites">Prerequisites</h2>
 
-<p>To initialize the radio for use:</p><ol>
+<p>To enable your application to use the radio functionality:</p>
+<ol>
 <li><p>To use the functions and data types of the Radio API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__RADIO__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__RADIO__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;radio.h&gt;</span> header file in your application:</p>
 <pre class="prettyprint">
 #include &lt;radio.h&gt;
index 546425c..5e40acb 100644 (file)
     <div id="toc_border"><div id="toc">
         <p class="toc-title">Content</p>
         <ul class="toc">
+                       <li><a href="#prerequisites">Prerequisites</a></li>
             <li>Audio recorder
                 <ul class="toc">
-                    <li><a href="#init_audio">Initializing the Audio Recorder</a></li>
+                    <li><a href="#prepare_audio">Preparing the Audio Recorder</a></li>
                     <li><a href="#record_audio">Recording Audio</a></li>
                 </ul>
             </li>
             <li>Video recorder
                 <ul class="toc">
-                    <li><a href="#init_video">Initializing the Video Recorder</a></li>
+                    <li><a href="#prepare_video">Preparing the Video Recorder</a></li>
                     <li><a href="#record_video">Recording a Video</a></li>
                 </ul>
             </li>
 <p>Become familiar with the Recorder and Camera API basics by learning about:</p>
 
 <ul>
+       <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the recorder functionality.</p></li>
     <li>Audio recorder
         <ul>
-            <li><a href="#init_audio">Initializing the Audio Recorder</a>
+            <li><a href="#prepare_audio">Preparing the Audio Recorder</a>
                 <p>Initialize the audio recorder for use.</p></li>
             <li><a href="#record_audio">Recording Audio</a>
                 <p>Record audio and save the recording.</p></li>
@@ -67,7 +70,7 @@
     </li>
     <li>Video recorder
         <ul>
-            <li><a href="#init_video">Initializing the Video Recorder</a>
+            <li><a href="#prepare_video">Preparing the Video Recorder</a>
                 <p>Initialize the video recorder for use.</p></li>
             <li><a href="#record_video">Recording a Video</a>
                 <p>Record video and save the recording.</p></li>
     </li>
 </ul>
 
-<h2 id="init_audio" name="init_audio">Initializing the Audio Recorder</h2>
 
-<p>To initialize the audio recorder for use:</p>
+<h2 id="prerequisites">Prerequisites</h2>
 
-<ol>
 
-<li>
-<p>To use the functions and data types of the Recorder API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__RECORDER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__RECORDER__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;recorder.h&gt;</span> header file in your application:</p>
+<p>To use the functions and data types of the Recorder (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__RECORDER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__RECORDER__MODULE.html">wearable</a> applications) and Camera (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__CAMERA__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__CAMERA__MODULE.html">wearable</a> applications) APIs, include the <span style="font-family: Courier New,Courier,monospace;">&lt;camera.h&gt;</span> and <span style="font-family: Courier New,Courier,monospace;">&lt;recorder.h&gt;</span> header files in your application:</p>
 <pre class="prettyprint">
 #include &lt;recorder.h&gt;
+#include &lt;camera.h&gt;
+
+#include &lt;stdio.h&gt;
+#include &lt;unistd.h&gt;
 </pre>
-</li>
+<p>In this tutorial, you also need the <span style="font-family: Courier New,Courier,monospace;">&lt;stdio.h&gt;</span> and <span style="font-family: Courier New,Courier,monospace;">&lt;unistd.h&gt;</span> header files to use standard file input and output functions and system calls.</p>
+
+
+<h2 id="prepare_audio" name="prepare_audio">Preparing the Audio Recorder</h2>
+
+<p>To initialize the audio recorder for use:</p>
+
+<ol>
 
 <li>
 <p>To create a handle for the audio recorder, use the <span style="font-family: Courier New,Courier,monospace">recorder_create_audiorecorder()</span> function:</p>
@@ -345,24 +356,13 @@ error_code = recorder_destroy(g_recorder);
 
 </ol>
 
-<h2 id="init_video" name="init_video">Initializing the Video Recorder</h2>
+<h2 id="prepare_video" name="prepare_video">Preparing the Video Recorder</h2>
 
 <p>To initialize the video recorder for use:</p>
 
 <ol>
 
 <li>
-<p>To use the functions and data types of the Camera (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__CAMERA__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__CAMERA__MODULE.html">wearable</a> applications) and Recorder (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__RECORDER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__RECORDER__MODULE.html">wearable</a> applications) APIs, include the <span style="font-family: Courier New,Courier,monospace;">&lt;camera.h&gt;</span> and <span style="font-family: Courier New,Courier,monospace;">&lt;recorder.h&gt;</span> header files in your application:</p>
-<pre class="prettyprint">
-#include &lt;camera.h&gt;
-#include &lt;recorder.h&gt;
-#include &lt;stdio.h&gt;
-#include &lt;unistd.h&gt;
-</pre>
-<p>In this tutorial, you also need the <span style="font-family: Courier New,Courier,monospace;">&lt;stdio.h&gt;</span> and <span style="font-family: Courier New,Courier,monospace;">&lt;unistd.h&gt;</span> header files to use standard file input and output functions and system calls.</p>
-</li>
-
-<li>
 <p>Define a structure for storing the camera and video recorder handles and a Boolean variable specifying whether the video recorder is switched off:</p>
 <pre class="prettyprint">
 struct recdata {
index 319f285..12fa60f 100644 (file)
@@ -22,7 +22,7 @@
     <div id="toc_border"><div id="toc">
         <p class="toc-title">Content</p>
         <ul class="toc">
-            <li><a href="#init">Initializing the Screen Mirroring Sink</a></li>
+            <li><a href="#prerequisites">Prerequisites</a></li>
             <li><a href="#prepare">Preparing the Screen Mirroring Sink</a></li>
             <li><a href="#connect">Connecting and Starting the Screen Mirroring Sink</a></li>
             <li><a href="#release">Releasing Resources</a></li>
@@ -48,8 +48,8 @@
 <p>Become familiar with Screen Mirroring API basics by learning about:</p>
 
 <ul>
-    <li><a href="#init">Initializing the Screen Mirroring Sink</a>
-        <p>Initialize the screen mirroring sink for use.</p></li>
+    <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the screen mirroring functionality.</p></li>
     <li><a href="#prepare">Preparing the Screen Mirroring Sink</a>
         <p>Set a callback and display object, and prepare the screen mirroring sink.</p></li>
     <li><a href="#connect">Connecting and Starting the Screen Mirroring Sink</a>
@@ -60,9 +60,9 @@
         <p>Handle exceptions in the screen mirroring sink processes.</p></li>
 </ul>
 
-<h2 id="init" name="init">Initializing the Screen Mirroring Sink</h2>
+<h2 id="prerequisites">Prerequisites</h2>
 
-<p>To initialize the screen mirroring sink for use:</p>
+<p>To enable your application to use the screen mirroring functionality:</p>
 
 <ol>
 
index c82e182..f5d8c66 100644 (file)
@@ -22,6 +22,7 @@
     <div id="toc_border"><div id="toc">
         <p class="toc-title">Content</p>
         <ul class="toc">
+                       <li><a href="#prerequisites">Prerequisites</a></li>
             <li><a href="#set">Setting the Sound Session Type</a></li>
             <li><a href="#manage">Controlling the Volume</a></li>
             <li><a href="#query">Querying Sound Devices</a></li>
@@ -46,6 +47,8 @@
 
 <p>Become familiar with the Sound Manager API basics by learning about:</p>
 <ul>
+       <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the sound manager functionality.</p></li>
     <li><a href="#set">Setting the Sound Session Type</a>
         <p>Set the sound session type for your application, and monitor sound session interruptions.</p></li>
     <li><a href="#manage">Controlling the Volume</a>
         <p>Retrieve and set basic sound session parameters.</p></li>
 </ul>
 
-<h2 id="set" name="set">Setting the Sound Session Type</h2>
-
-<p>To set the sound session type for your application and monitor sound session interruptions:</p>
 
-<ol>
+<h2 id="prerequisites">Prerequisites</h2>
 
-<li>
 <p>To use the functions and data types of the Sound Manager API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__SOUND__MANAGER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__SOUND__MANAGER__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;sound_manager.h&gt;</span> header file in your application:</p>
 <pre class="prettyprint">
 #include &lt;sound_manager.h&gt;
 </pre>
-</li>
 
+<h2 id="set" name="set">Setting the Sound Session Type</h2>
+
+<p>To set the sound session type for your application and monitor sound session interruptions:</p>
+
+<ol>
 <li>
 <p>Set the sound session type using the <span style="font-family: Courier New,Courier,monospace">sound_manager_set_session_type()</span> function. The parameter defines the sounds session type using the <span style="font-family: Courier New,Courier,monospace">sound_session_type_e</span> enumeration (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__SOUND__MANAGER__SESSION__MODULE.html#ga125699870d48881ea153a4fce7140958">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__SOUND__MANAGER__SESSION__MODULE.html#ga125699870d48881ea153a4fce7140958">wearable</a> applications).</p>
 <pre class="prettyprint">
@@ -123,13 +126,6 @@ error_code = sound_manager_unset_session_interrupted_cb();
 <ol>
 
 <li>
-<p>To use the functions and data types of the Sound Manager API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__SOUND__MANAGER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__SOUND__MANAGER__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;sound_manager.h&gt;</span> header file in your application:</p>
-<pre class="prettyprint">
-#include &lt;sound_manager.h&gt;
-</pre>
-</li>
-
-<li>
 <p>To receive a notification whenever the volume changes:</p>
 <ol type="a">
 <li>
@@ -204,13 +200,6 @@ ret = sound_manager_set_volume(type, value);
 <ol>
 
 <li>
-<p>To use the functions and data types of the Sound Manager API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__SOUND__MANAGER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__SOUND__MANAGER__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;sound_manager.h&gt;</span> header file in your application:</p>
-<pre class="prettyprint">
-#include &lt;sound_manager.h&gt;
-</pre>
-</li>
-
-<li>
 <p>To access the sound device information:</p>
 <ol type="a">
 <li>
@@ -367,13 +356,6 @@ _sound_device_information_changed_cb(sound_device_h device,
 <ol>
 
 <li>
-<p>To use the functions and data types of the Sound Manager API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__SOUND__MANAGER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__SOUND__MANAGER__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;sound_manager.h&gt;</span> header file in your application:</p>
-<pre class="prettyprint">
-#include &lt;sound_manager.h&gt;
-</pre>
-</li>
-
-<li>
 <p>To receive a notification whenever the sound session is interrupted:</p>
 <ol type="a">
 <li>
index 00dcc58..cc59f9c 100644 (file)
@@ -22,7 +22,7 @@
     <div id="toc_border"><div id="toc">
         <p class="toc-title">Content</p>
         <ul class="toc">
-            <li><a href="#init_thumbnail">Initializing the Thumbnail Utility</a></li>
+            <li><a href="#prerequisites">Prerequisites</a></li>
             <li><a href="#get_thumbnail">Extracting a Thumbnail</a></li>
         </ul>
         <p class="toc-title">Related Info</p>
 <p>Become familiar with the Thumbnail Util API basics by learning about:</p>
 
 <ul>
-    <li><p><a href="#init_thumbnail">Initializing the Thumbnail Utility</a></p>
-        <p>Initialize the thumbnail utility for use.</p></li>
+    <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the thumbnail util functionality.</p></li>
     <li><p><a href="#get_thumbnail">Extracting a Thumbnail</a></p>
         <p>Extract a thumbnail from a file.</p></li>
 </ul>
 
-<h2 id="init_thumbnail" name="init_thumbnail">Initializing the Thumbnail Utility</h2>
+<h2 id="prerequisites">Prerequisites</h2>
 
-<p>To initialize the thumbnail utility for use:</p>
+<p>To enable your application to use the thumbnail util functionality:</p>
 
 <ol>
 
index b2eb8e8..3f07816 100644 (file)
@@ -22,7 +22,7 @@
     <div id="toc_border"><div id="toc">
         <p class="toc-title">Content</p>
         <ul class="toc">
-            <li><a href="#init">Initializing the Tone Player</a></li>
+            <li><a href="#prerequisites">Prerequisites</a></li>
             <li><a href="#play">Playing a Tone</a></li>
             <li><a href="#duration">Playing a Tone for a Specified Duration</a></li>
         </ul>
 <p>Become familiar with the Tone Player API basics by learning about:</p>
 
 <ul>
-    <li><p><a href="#init">Initializing the Tone Player</a></p>
-        <p>Initialize the tone player for use.</p></li>
+    <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the tone player functionality.</p></li>
     <li><p><a href="#play">Playing a Tone</a></p>
         <p>Start and stop playing a tone.</p></li>
     <li><p><a href="#duration">Playing a Tone for a Specified Duration</a></p>
         <p>Play a tone for a specified duration.</p></li>
 </ul>
 
-<h2 id="init" name="init">Initializing the Tone Player</h2>
+<h2 id="prerequisites">Prerequisites</h2>
 
-<p>To initialize the tone player for use:</p>
+<p>To enable your application to use the tone player functionality:</p>
 
 <ol>
 
index 84129ac..edafd7c 100644 (file)
@@ -22,7 +22,8 @@
     <div id="toc_border"><div id="toc">
         <p class="toc-title">Content</p>
         <ul class="toc">
-            <li><a href="#init">Initializing the Video Utilities</a></li>
+                       <li><a href="#prerequisites">Prerequisites</a></li>
+            <li><a href="#prepare">Preparing the Video Utilities</a></li>
             <li><a href="#manage">Managing Transcoding</a></li>
             <li><a href="#set">Setting Parameters</a></li>
             <li><a href="#get">Monitoring the Transcoding Progress</a></li>
@@ -48,7 +49,9 @@
 <p>Become familiar with the Video Util API basics by learning about:</p>
 
 <ul>
-    <li><p><a href="#init">Initializing the Video Utilities</a></p>
+       <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the video utilities.</p></li>
+    <li><p><a href="#prepare">Preparing the Video Utilities</a></p>
         <p>Initialize the video utilities for use.</p></li>
     <li><p><a href="#manage">Managing Transcoding</a></p>
         <p>Manage and monitor the transcoding process.</p></li>
         <p>Retrieve progress information about the transcoding process.</p></li>
 </ul>
 
-<h2 id="init" name="init">Initializing the Video Utilities</h2>
+<h2 id="prerequisites">Prerequisites</h2>
 
-<p>To initialize the video utilities for use:</p>
-
-<ol>
-
-<li>
 <p>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__VIDEO__UTIL__MODULE.html">Video Util</a> API, include the <span style="font-family: Courier New,Courier,monospace">&lt;video_util.h&gt;</span> header file in your application:</p>
 <pre class="prettyprint">
 #include &lt;video_util.h&gt;
 </pre>
-</li>
 
+<h2 id="prepare" name="prepare">Preparing the Video Utilities</h2>
+
+<p>To initialize the video utilities for use:</p>
+
+<ol>
 <li>
 <p>Create a video util handle for managing the transcoding:</p>
 <pre class="prettyprint">
@@ -204,7 +206,7 @@ ret = video_util_destroy(video_h);
 
 <h2 id="set" name="set">Setting Parameters</h2>
 
-<p>To set parameters for the video utilities (for other parameters, see <a href="#init">Initializing the Video Utilities</a>):</p>
+<p>To set parameters for the video utilities (for other parameters, see <a href="#prepare">Preparing the Video Utilities</a>):</p>
 
 <ol>
 <li>Set the file format:
@@ -335,7 +337,7 @@ int error_code = video_util_set_fps(handle, 25);
 
 <ol>
 
-<li><p><a href="#init">Initialize the video utilities.</a></p></li>
+<li><p><a href="#prepare">Prepare the video utilities.</a></p></li>
 
 <li>
 <p>Start the transcoding using the <span style="font-family: Courier New,Courier,monospace;">video_util_start_transcoding()</span> function:</p>
index 20e437c..09d9695 100644 (file)
@@ -22,6 +22,7 @@
     <div id="toc_border"><div id="toc">
         <p class="toc-title">Content</p>
         <ul class="toc">
+                       <li><a href="#prerequisites">Prerequisites</a></li>
             <li><a href="#start">Starting and Stopping the WAV Player</a></li>
         </ul>
         <p class="toc-title">Related Info</p>
 <p>Become familiar with the WAV Player API basics by learning about:</p>
 
 <ul>
+       <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the WAV player functionality.</p></li>
     <li><p><a href="#start">Starting and Stopping the WAV Player</a></p>
         <p>Start and stop the WAV player.</p></li>
 </ul>
 
-<h2 id="start" name="start">Starting and Stopping the WAV Player</h2>
-
-<p>To start and stop the WAV player:</p>
+<h2 id="prerequisites">Prerequisites</h2>
 
-<ol>
-
-<li>
 <p>To use the functions and data types of the WAV Player API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__WAV__PLAYER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__WAV__PLAYER__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;wav_player.h&gt;</span> header file in your application:</p>
 <pre class="prettyprint">
 #include &lt;wav_player.h&gt;
 #include &lt;stdio.h&gt;
 #include &lt;sound_manager.h&gt;
 </pre>
-<p>In this use case, you also need the <span style="font-family: Courier New,Courier,monospace">&lt;stdio.h&gt;</span> and <span style="font-family: Courier New,Courier,monospace">&lt;sound_manager.h&gt;</span> header files to use standard file input and output functions and the Sound Manager API functions (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__SOUND__MANAGER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__SOUND__MANAGER__MODULE.html">wearable</a> applications).</p>
-</li>
+<p>In this tutorial, you also need the <span style="font-family: Courier New,Courier,monospace">&lt;stdio.h&gt;</span> and <span style="font-family: Courier New,Courier,monospace">&lt;sound_manager.h&gt;</span> header files to use standard file input and output functions and the Sound Manager API functions (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__SOUND__MANAGER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__MEDIA__SOUND__MANAGER__MODULE.html">wearable</a> applications).</p>
+
+
+<h2 id="start" name="start">Starting and Stopping the WAV Player</h2>
+
+<p>To start and stop the WAV player:</p>
+
+<ol>
 
 <li>
 <p>To start the WAV player, use the <span style="font-family: Courier New,Courier,monospace">wav_player_start()</span> function.</p>
index 03959b2..1b9ea57 100755 (executable)
@@ -24,7 +24,6 @@
                <p class="toc-title">Content</p>
                <ul class="toc">
                        <li><a href="#prerequisites">Prerequisites</a></li>
-                       <li><a href="#init">Initializing Bluetooth</a></li>
                        <li><a href="#enable">Enabling and Disabling Bluetooth</a></li>
                        <li><a href="#state">Checking the Bluetooth Adapter State</a></li>
                        <li><a href="#find">Finding Other Devices</a></li>
@@ -79,9 +78,7 @@
  <p>Become familiar with the Bluetooth API basics by learning about:</p>
                        <ul>
                                <li><a href="#prerequisites">Prerequisites</a>
-                               <p>Set the required permissions.</p></li>
-                               <li><a href="#init">Initializing Bluetooth</a>
-                               <p>Initialize Bluetooth for use.</p></li>
+                               <p>Prepare your application to use the Bluetooth functionality.</p></li>
                                <li><a href="#enable">Enabling and Disabling Bluetooth</a>
                                <p>Enable or disable Bluetooth.</p></li>
                                <li><a href="#state">Checking the Bluetooth Adapter State</a>
 
 <h2 id="prerequisites">Prerequisites</h2>
 
-<p>To use the Bluetooth API, the application has to request permission by adding the following privilege to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>
+<p>To enable your application to use the Bluetooth functionality:</p>
+<ol>
+<li>
+<p>To use the Bluetooth API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__BLUETOOTH__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__BLUETOOTH__MODULE.html">wearable</a> applications), the application has to request permission by adding the following privilege to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>
 <pre class="prettyprint">
 &lt;privileges&gt;
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/bluetooth&lt;/privilege&gt;
 &lt;/privileges&gt;
 </pre>
-
- <h2 id="init" name="init">Initializing Bluetooth</h2>
-                       
-<p>To initialize Bluetooth:</p>
-<ol>
+</li>
 <li>                   
-<p>To use the functions and data types of the Bluetooth API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__BLUETOOTH__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__BLUETOOTH__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;bluetooth.h&gt;</span> header file in your application:</p>
+<p>To use the functions and data types of the Bluetooth API, include the <span style="font-family: Courier New,Courier,monospace">&lt;bluetooth.h&gt;</span> header file in your application:</p>
 <pre class="prettyprint">
 #include &lt;bluetooth.h&gt;
-</pre></li>
+</pre>
+</li>
 <li>
 <p>Initialize Bluetooth:</p>
 <pre class="prettyprint">
@@ -230,7 +227,6 @@ if (adapter_state == BT_ADAPTER_DISABLED)
 
 <li>To monitor changes in the Bluetooth adapter state, define and register the Bluetooth adapter state callback function:
 <pre class="prettyprint">
-#include &lt;bluetooth.h&gt;
 #include &lt;dlog.h&gt;
 
 bt_error_e ret;
index 90c7f6b..ed73074 100644 (file)
@@ -23,8 +23,7 @@
     <div id="toc_border"><div id="toc">
                <p class="toc-title">Content</p>
                <ul class="toc">
-                       <li><a href="#prerequisites">Prerequisites</a></li>             
-                  <li><a href="#init">Initializing Connections</a></li>
+                       <li><a href="#prerequisites">Prerequisites</a></li>
                   <li><a href="#detail">Getting Network Connection Details</a></li>
                   <li><a href="#info">Getting Connection Information</a></li>
                   <li><a href="#register">Registering Property Change Callbacks</a></li>
@@ -57,9 +56,7 @@
  <p>Become familiar with the Connection API basics by learning about:</p>
         <ul>
                  <li><a href="#prerequisites">Prerequisites</a>
-                 <p>Set the required permissions.</p></li>
-                 <li><a href="#init">Initializing Connections</a>
-                 <p>Initialize the connection module for use.</p></li>
+                 <p>Prepare your application to use the connection functionality.</p></li>
                  <li><a href="#detail">Getting Network Connection Details</a>
                  <p>Get the current connection type, IP address, and proxy information.</p></li>
                  <li><a href="#info">Getting Connection Information</a>
 
 <h2 id="prerequisites">Prerequisites</h2>
 
-<p>To use the Connection API, the application has to request permission by adding the following privileges to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>
+<p>To enable your application to use the connection functionality:</p>
+<ol>
+<li>
+<p>To use the Connection API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__CONNECTION__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__CONNECTION__MODULE.html">wearable</a> applications), the application has to request permission by adding the following privileges to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>
 <pre class="prettyprint">
 &lt;privileges&gt;
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/network.get&lt;/privilege&gt;
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/network.profile&lt;/privilege&gt;
 &lt;/privileges&gt;
 </pre>   
-
- <h2 id="init" name="init">Initializing Connections</h2>
- <p>To initialize connections:</p>
- <ol>
+</li>
 <li> 
-<p>To use the functions and data types of the Connection API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__CONNECTION__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__CONNECTION__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;net_connection.h&gt;</span> header file in your application:</p>
+<p>To use the functions and data types of the Connection API, include the <span style="font-family: Courier New,Courier,monospace">&lt;net_connection.h&gt;</span> header file in your application:</p>
 <pre class="prettyprint">
 #include &lt;net_connection.h&gt;
 </pre>
@@ -373,7 +369,7 @@ main(int argc, char **argv)
 &nbsp;&nbsp;&nbsp;&nbsp;connection_h connection = NULL;
 &nbsp;&nbsp;&nbsp;&nbsp;connection_profile_h profile_h = NULL;
 </pre></li>
-<li><a href="#init">Include the required header file and create a connection handle</a>.
+<li><a href="#prerequisites">Include the required header file and create a connection handle</a>.
 </li>
 <li>Check whether the default connection is available:
 <pre class="prettyprint">
index 7e06e79..e0a4994 100644 (file)
@@ -23,8 +23,7 @@
     <div id="toc_border"><div id="toc">
                <p class="toc-title">Content</p>
                <ul class="toc">
-                       <li><a href="#prerequisites">Prerequisites</a></li>             
-                       <li><a href="#init">Initializing Curl</a></li>
+                       <li><a href="#prerequisites">Prerequisites</a></li>
                        <li><a href="#manage">Managing the Proxy Address</a></li>
                        <li><a href="#request">Transferring HTTP Requests</a></li>
                </ul>        
@@ -47,9 +46,7 @@
 <p>Become familiar with the Curl API basics by learning about:</p>
                <ul>
                        <li><a href="#prerequisites">Prerequisites</a>
-                   <p>Set the required permissions.</p></li>
-                       <li><a href="#init">Initializing Curl</a>
-                       <p>Initialize Curl for use, and deinitialize it after use.</p></li>
+                   <p>Prepare your application to use the Curl functionality.</p></li>
                        <li><a href="#manage">Managing the Proxy Address</a>
                        <p>Get and set the proxy address for the HTTP request.</p></li>
                        <li><a href="#request">Transferring HTTP Requests</a>
                </ul>
 
 <h2 id="prerequisites">Prerequisites</h2>
-
-<p>To use the Curl API and the libcurl library, the application has to request permission by adding the following privilege to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>
+<p>To enable your application to use the Curl functionality:</p>
+<ol>
+<li>
+<p>To use the Curl API (in <a href="../../../../org.tizen.native.mobile.apireference/group__OPENSRC__CURL__FRAMEWORK.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__OPENSRC__CURL__FRAMEWORK.html">wearable</a> applications) and the libcurl library, the application has to request permission by adding the following privilege to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>
 <pre class="prettyprint">
 &lt;privileges&gt;
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/internet&lt;/privilege&gt;
 &lt;/privileges&gt;
 </pre>
-       
- <h2 id="init" name="init">Initializing Curl</h2>
-<p>To initialize Curl for use:</p>
-<ol>
+</li>
 <li>
-<p>To use the functions and data types of the Curl API (in <a href="../../../../org.tizen.native.mobile.apireference/group__OPENSRC__CURL__FRAMEWORK.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__OPENSRC__CURL__FRAMEWORK.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;curl.h&gt;</span> header file in your application. You must also add the <span style="font-family: Courier New,Courier,monospace">&lt;net_connection.h&gt;</span> header file to get the proxy address.</p>
+<p>To use the functions and data types of the Curl API, include the <span style="font-family: Courier New,Courier,monospace">&lt;curl.h&gt;</span> header file in your application. You must also add the <span style="font-family: Courier New,Courier,monospace">&lt;net_connection.h&gt;</span> header file to get the proxy address.</p>
 <pre class="prettyprint">
 #include &lt;curl.h&gt;
 #include &lt;net_connection.h&gt;
index 1993fa7..64d46f4 100644 (file)
@@ -23,8 +23,7 @@
     <div id="toc_border"><div id="toc">
         <p class="toc-title">Content</p>
         <ul class="toc">
-            <li><a href="#prerequisites">Prerequisites</a></li>                
-            <li><a href="#init">Initializing IoT Connectivity</a></li>
+            <li><a href="#prerequisites">Prerequisites</a></li>
             <li><a href="#register">Registering Resources</a></li>
             <li><a href="#find">Finding Resources</a></li>
             <li><a href="#send_get">Sending GET Requests</a></li>
@@ -51,8 +50,8 @@
 <p>Become familiar with the Iotcon API basics by learning about:</p>
 
 <ul>
-       <li><a href="#init">Initializing IoT Connectivity</a>
-       <p>Initialize Internet of Things (IoT) connectivity for use.</p></li>
+       <li><a href="#prerequisites">Prerequisites</a>
+       <p>Prepare your application to use the IoT functionality.</p></li>
        <li><a href="#register">Registering Resources</a>
        <p>Create and register resources.</p></li>
        <li><a href="#find">Finding Resources</a>
 
 <h2 id="prerequisites">Prerequisites</h2>
 
-<p>To use the Iotcon API, the application has to request permission by adding the following privileges to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>
+<p>To enable your application to use the IoT functionality:</p>
+<ol>
+<li>
+<p>To use the Iotcon API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__IOT__CONNECTIVITY__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__IOT__CONNECTIVITY__MODULE.html">wearable</a> applications), the application has to request permission by adding the following privileges to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>
 <pre class="prettyprint">
 &lt;privileges&gt;
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/network.get&lt;/privilege&gt;
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/d2d.datasharing&lt;/privilege&gt;
 &lt;/privileges&gt;
 </pre>
-
-<h2 id="init" name="init">Initializing IoT Connectivity</h2>
-
-<p>To initialize IoT connectivity for use:</p>
-<ol>
-<li>To use the functions and data types of the Iotcon API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__IOT__CONNECTIVITY__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__IOT__CONNECTIVITY__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;iotcon.h&gt;</span> header file in your application:
+</li>
+<li>To use the functions and data types of the Iotcon API, include the <span style="font-family: Courier New,Courier,monospace">&lt;iotcon.h&gt;</span> header file in your application:
 <pre class="prettyprint">
 #include &lt;iotcon.h&gt;
 </pre>
-<p>To ensure that an iotcon function has been executed properly, make sure that the return is equal to <span style="font-family: Courier New,Courier,monospace">IOTCON_ERROR_NONE</span>.</p>
+<p>To ensure that an Iotcon function has been executed properly, make sure that the return is equal to <span style="font-family: Courier New,Courier,monospace">IOTCON_ERROR_NONE</span>.</p>
 </li>
 <li>To connect the application with the IoT, use the <span style="font-family: Courier New,Courier,monospace">iotcon_connect()</span> function:
 <pre class="prettyprint">
index 8f897fa..6d86995 100644 (file)
@@ -24,7 +24,6 @@
         <p class="toc-title">Content</p>
         <ul class="toc">
             <li><a href="#prerequisites">Prerequisites</a></li>
-                       <li><a href="#init">Initializing the MTP</a></li>
             <li><a href="#device_list">Getting the MTP Device List</a></li>
             <li><a href="#device_info">Getting MTP Device Information</a></li>
             <li><a href="#storages">Getting the MTP Storages</a></li>
@@ -54,8 +53,8 @@
 <p>Become familiar with the MTP API basics by learning about:</p>
 
 <ul>
-    <li><p><a href="#init">Initializing the MTP</a></p>
-        <p>Initialize the MTP for use.</p></li>
+    <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the MTP functionality.</p></li>
     <li><p><a href="#device_list">Getting the MTP Device List</a></p>
         <p>Retrieve a list of MTP devices connected to the MTP initiator.</p></li>
     <li><p><a href="#device_info">Getting MTP Device Information</a></p>
 
 <h2 id="prerequisites">Prerequisites</h2>
 
-<p>To use the MTP API, the application has to request permission by adding the following privileges to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>
+<p>To enable your application to use the MTP functionality:</p>
+<ol>
+<li>
+<p>To use the MTP API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__MTP__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__MTP__MODULE.html">wearable</a> applications), the application has to request permission by adding the following privileges to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>
 <pre class="prettyprint">
 &lt;privileges&gt;
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/mtp&lt;/privilege&gt;
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/externalstorage&lt;/privilege&gt;
 &lt;/privileges&gt;
 </pre>
-
-<h2 id="init" name="init">Initializing the MTP</h2>
-
-<p>To initialize the MTP for use:</p>
-
-<ol>
+</li>
 <li>
-<p>To use the functions and data types of the MTP API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__MTP__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__MTP__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;mtp.h&gt;</span> header file in your application:</p>
+<p>To use the functions and data types of the MTP API, include the <span style="font-family: Courier New,Courier,monospace">&lt;mtp.h&gt;</span> header file in your application:</p>
 <pre class="prettyprint">
 #include &lt;mtp.h&gt;
 </pre>
index bd33eee..b2bbbee 100644 (file)
@@ -41,7 +41,8 @@
                   <li><a href="bluetooth_tutorial_n.htm">Bluetooth: Managing Bluetooth Devices</a> <p>Demonstrates how you can enable Bluetooth, connect to other devices, and exchange data.</p></li>
                   <li><a href="curl_tutorial_n.htm">Curl: Setting the Proxy Address</a> <p>Demonstrates how you can set the proxy address and handle HTTP and HTTPS requests.</p></li>
                   <li><a href="iotcon_tutorial_n.htm">Iotcon: Registering and Querying Resources</a><p>Demonstrates how you can use IoTivity in Tizen.</p></li>                   
-                  <li><a href="mtp_tutorial_n.htm">MTP: Transferring Files with Media Transfer Protocol</a> <p>Demonstrates how you can manage the Media Transfer Protocol (MTP) and get files from the MTP responder.</p></li>                   
+                  <li><a href="mtp_tutorial_n.htm">MTP: Transferring Files with Media Transfer Protocol</a> <p>Demonstrates how you can manage the Media Transfer Protocol (MTP) and get files from the MTP responder.</p></li>
+                  <li><a href="nsd_tutorial_n.htm">Network Service Discovery: Using Local and Remote Services</a><p>Enables you to perform network service discoveries to announce local services and search for remote services.</p></li>                
                   <li><a href="nfc_tutorial_n.htm">NFC: Managing Near Field Radio Communication</a> <p>Demonstrates how you can activate NFC and get cached NFC messages and send and receive NDEF messages using the NFC P2P mode.</p></li>
                   <li><a href="smartcard_tutorial_n.htm">Smartcard: Accessing Secure Elements</a> <p>Demonstrates how you can access secure elements (SE) through smart card features.</p></li>
                   <li><a href="wifi_tutorial_n.htm">Wi-Fi: Managing Wi-Fi and Monitoring Its State</a> <p>Demonstrates how you can manage Wi-Fi connections and monitor the Wi-Fi state.</p></li>
index 70190a5..26005c3 100644 (file)
@@ -26,7 +26,6 @@
                        <li><a href="#prerequisites">Prerequisites</a></li>
                        <li>NFC
                                <ul class="toc">
-                                       <li><a href="#init">Initializing NFC</a></li>
                                        <li><a href="#enable">Enabling and Disabling NFC</a></li>
                                        <li><a href="#work">Working with NFC Connections and Messages</a></li>
                                        <li><a href="#get">Getting a Cached NFC Message</a></li>
@@ -36,7 +35,7 @@
                        </li>
                        <li>NFC P2P bump
                                <ul class="toc">
-                                       <li><a href="#init_p2p">Initializing NFC P2P</a></li>
+                                       <li><a href="#prepare_p2p">Preparing NFC P2P</a></li>
                                        <li><a href="#send">Sending and Receiving a Message through NFC P2P</a></li>
                                </ul>
                        </li>                   
 <h2>Warm-up</h2>
 <p>Become familiar with the NFC API basics by learning about:</p>
        <ul>
+               <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the NFC functionality.</p></li>
                <li>NFC
                        <ul>
-                               <li><a href="#init">Initializing NFC</a>
-                               <p>Check whether NFC is supported in the device and initialize NFC for use.</p></li>
                                <li><a href="#enable">Enabling and Disabling NFC</a>
                                <p>Open the NFC settings application to allow the user to enable or disable NFC.</p></li>
                                <li><a href="#work">Working with NFC Connections and Messages</a>
@@ -77,8 +76,8 @@
                </li>
                <li>NFC P2P bump
                        <ul>
-                               <li><a href="#init_p2p">Initializing NFC P2P</a>
-                               <p>Initialize NFC P2P for use.</p></li>
+                               <li><a href="#prepare_p2p">Preparing NFC P2P</a>
+                               <p>Prepare NFC P2P for use.</p></li>
 
                                <li><a href="#send">Sending and Receiving a Message through NFC P2P</a>
                                <p>Exchange NDEF messages using NFC P2P between 2 devices.</p></li>
 
 <h2 id="prerequisites">Prerequisites</h2>
 
-<p>To use the NFC API, the application has to request permission by adding the following privileges to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>
+<p>To enable your application to use the NFC functionality:</p>
+<ol>
+<li>
+<p>To use the NFC API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__NFC__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__NFC__MODULE.html">wearable</a> applications), the application has to request permission by adding the following privileges to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>
 <pre class="prettyprint">
 &lt;privileges&gt;
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/nfc&lt;/privilege&gt;
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/nfc.cardemulation&lt;/privilege&gt;
 &lt;/privileges&gt;
 </pre>
-       
- <h2 id="init" name="init">Initializing NFC</h2>
-
-<p>To initialize NFC:</p>
-<ol><li>
-<p>To use the functions and data types of the NFC API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__NFC__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__NFC__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;nfc.h&gt;</span> header file in your application:</p>
+</li>
+<li>
+<p>To use the functions and data types of the NFC API, include the <span style="font-family: Courier New,Courier,monospace">&lt;nfc.h&gt;</span> header file in your application:</p>
 <pre class="prettyprint">
 #include &lt;nfc.h&gt;
-</pre></li>
+</pre>
+<p>To enable and disable NFC in the device, the <span style="font-family: Courier New,Courier,monospace">&lt;app_control.h&gt;</span> and <span style="font-family: Courier New,Courier,monospace">&lt;dlog.h&gt;</span> header files have to be included.</p>
+</li>
 
 <li><p>Check whether the device you want to work with supports NFC. This can be done by calling the <span style="font-family: Courier New,Courier,monospace;">nfc_manager_is_supported()</span> function. It takes no parameters and returns <span style="font-family: Courier New,Courier,monospace;">true</span> if NFC is supported on the device.</p>
 <pre class="prettyprint">
@@ -1170,9 +1171,9 @@ main(int argc, char* argv[])
 </ol>
 
 
- <h2 id="init_p2p" name="init_p2p">Initializing NFC P2P</h2>
+ <h2 id="prepare_p2p" name="prepare_p2p">Preparing NFC P2P</h2>
 
-<p>To initialize NFC P2P:</p>
+<p>To prepare NFC P2P:</p>
 <ol>
 <li><p>Make sure you have 2 target devices that support the NFC P2P mode.</p>
 
@@ -1187,10 +1188,6 @@ main(int argc, char* argv[])
    </tbody> 
   </table> 
 </li>
-<li><p>To use the functions and data types of the NFC API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__NFC__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__NFC__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;nfc.h&gt;</span> header file in your application:</p>
-<pre class="prettyprint">
-#include &lt;nfc.h&gt;
-</pre></li>
 <li>To start using the NFC API, initialize the API by calling the <span style="font-family: Courier New,Courier,monospace">nfc_manager_initialize()</span> function:
 <pre class="prettyprint">
 nfc_manager_initialize();
diff --git a/org.tizen.tutorials/html/native/network/nsd_tutorial_n.htm b/org.tizen.tutorials/html/native/network/nsd_tutorial_n.htm
new file mode 100644 (file)
index 0000000..db26eab
--- /dev/null
@@ -0,0 +1,465 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
+    <script type="text/javascript" src="../../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
+
+    <title>Network Service Discovery: Using Local and Remote Services</title>
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/> <img alt="Wearable native" src="../../images/wearable_s_n.png"/></p>
+    </div>
+    <div id="toc_border"><div id="toc">
+               <p class="toc-title">Content</p>
+               <ul class="toc">
+                       <li><a href="#prerequisites">Prerequisites</a></li>
+                       <li>DNSSD
+                       <ul class="toc">
+                       <li><a href="#dnssd_service">Managing a Local Service with DNSSD</a></li>
+                       <li><a href="#dnssd_search">Browsing Remote Services with DNSSD</a></li>
+                       </ul>
+                       </li>                   
+                       <li>SSDP
+                       <ul class="toc">
+                       <li><a href="#ssdp_service">Managing a Local Service with SSDP</a></li>
+                       <li><a href="#ssdp_search">Browsing Remote Services with SSDP</a></li>
+                       </ul>
+                       </li>
+               </ul>        
+        <p class="toc-title">Related Info</p>
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.guides/html/native/network/nsd_n.htm">Network Service Discovery Guide</a></li>
+                       <li><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__DNSSD__MODULE.html">DNSSD API for Mobile Native</a></li>
+                       <li><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__SSDP__MODULE.html">SSDP API for Mobile Native</a></li>
+                       <li><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__DNSSD__MODULE.html">DNSSD API for Wearable Native</a></li>
+                       <li><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__SSDP__MODULE.html">SSDP API for Wearable Native</a></li>
+        </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+<h1>Network Service Discovery: Using Local and Remote Services</h1>
+
+<p>This tutorial demonstrates how you can register local services and browse remote services on networks using the DNS Service Discovery (DNS-SD) or Simple Service Discovery Protocol (SSDP).</p>  
+
+<h2>Warm-up</h2>
+<p>Become familiar with the DNSSD and SSDP API basics by learning about:</p>
+               <ul>
+                       <li><a href="#prerequisites">Prerequisites</a>
+                   <p>Prepare your application to use the network service discovery functionality.</p></li>
+                       <li>DNSSD
+                       <ul>
+                       <li><a href="#dnssd_service">Managing a Local Service with DNSSD</a>
+                   <p>Create and register a local service, and announce it on a network.</p></li>
+                       <li><a href="#dnssd_search">Browsing Remote Services with DNSSD</a>
+                   <p>Search for services on a network with a service type or target information.</p></li>
+                       </ul>
+                       </li>                   
+                       <li>SSDP
+                       <ul>
+                       <li><a href="#ssdp_service">Managing a Local Service with SSDP</a>
+                   <p>Create and register a local service, and announce it on a network.</p></li>
+                       <li><a href="#ssdp_search">Browsing Remote Services with SSDP</a>
+                   <p>Search for services on a network with a service type or target information.</p></li>
+                       </ul>
+                       </li>
+               </ul>
+
+<h2 id="prerequisites">Prerequisites</h2>
+<p>To enable your application to use the network service discovery functionality:</p>
+<ul>
+<li>To use the DNS-SD protocol:
+<ol>
+<li>
+<p>To use the functions and data types of the DNSSD API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__DNSSD__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__DNSSD__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;dnssd.h&gt;</span> header file in your application:</p>
+<pre class="prettyprint">
+#include &lt;dnssd.h&gt;
+</pre>
+</li>
+<li>
+<p>Initialize DNS-SD using the <span style="font-family: Courier New,Courier,monospace;">dnssd_initialize()</span> function:</p>
+<pre class="prettyprint">
+int error_code;
+
+error_code = dnssd_initialize();
+if (error_code != DNSSD_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;return;
+</pre>
+
+<p>When no longer needed, release the DNS-SD:</p> 
+<pre class="prettyprint">
+dnssd_deinitialize();
+</pre>
+</li>
+</ol>
+</li>
+<li>To use the SSDP protocol:
+<ol>
+<li>
+<p>To use the functions and data types of the SSDP API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__SSDP__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__SSDP__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;ssdp.h&gt;</span> header file in your application:</p>
+<pre class="prettyprint">
+#include &lt;ssdp.h&gt;
+</pre>
+</li>
+<li>
+<p>Initialize SSDP using the <span style="font-family: Courier New,Courier,monospace;">ssdp_initialize()</span> function:</p>
+<pre class="prettyprint">
+int error_code;
+
+error_code = ssdp_initialize();
+if (error_code != SSDP_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;return;
+</pre>
+
+<p>When no longer needed, release the SSDP:</p> 
+<pre class="prettyprint">
+ssdp_deinitialize();
+</pre>
+</li>
+</ol>
+</li>
+</ul>
+
+ <h2 id="dnssd_service" name="dnssd_service">Managing a Local Service with DNSSD</h2>
+
+<p>To manage a local service, you must create and register the service:</p>
+
+<ol>
+<li>Create the local service:
+<ol type="a">
+<li>To provide a local service on a network, you must create a handle containing information about the service.
+<p>At the beginning, define a <span style="font-family: Courier New,Courier,monospace">dnssd_service_h</span> variable to store the service handle. The target is used to create the handle, which represents a DNS-SD service to be advertised through a network. To set the service type, see <a href="http://www.dns-sd.org/ServiceTypes.html" target="_blank">http://www.dns-sd.org/ServiceTypes.html</a>.</p>
+
+<pre class="prettyprint">
+dnssd_service_h service_handle;
+char *service_type = &quot;_http._tcp&quot;;
+int error_code;
+
+error_code = dnssd_create_local_service(service_type, &amp;service_handle);
+if (error_code == DNSSD_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;prinf(&quot;Success in creating a service handle.&quot;);
+</pre>
+</li>
+
+<li>Set a unique service name and a port number for the created service:
+<pre class="prettyprint">
+char* service_name = &quot;SamsungTest&quot;;
+int port = 80;
+
+if (dnssd_service_set_name(service_handle, service_name) == DNSSD_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Success in setting service name&quot;);
+if (dnssd_service_set_port(service_handle, port) == DNSSD_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Success in setting port&quot;);
+</pre>
+</li>
+<li>You can add a TXT record, which gives additional information about the created service. The TXT record is stored in a structured form using key-value pairs.
+<p>For more information, see section 6 of <a href="http://files.dns-sd.org/draft-cheshire-dnsext-dns-sd.txt" target="_blank">http://files.dns-sd.org/draft-cheshire-dnsext-dns-sd.txt</a>. The TXT record of the known service types can be found at <a href="http://www.dns-sd.org/ServiceTypes.html" target="_blank">http://www.dns-sd.org/ServiceTypes.html</a>.</p>
+
+<pre class="prettyprint">
+char* key = &quot;path&quot;;
+char* value = &quot;http://www.samsung.com&quot;;
+int length = 30;
+
+if (dnssd_service_add_txt_record_value(service_handle, key, length, value) == DNSSD_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Success in setting service TXT&quot;);
+</pre>
+
+<p>When no longer needed, you can remove the TXT record from the created service:</p> 
+
+<pre class="prettyprint">
+char* key = &quot;path&quot;;
+
+if (dnssd_service_remove_txt_record_value(service_handle, key) == DNSSD_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Success in removing service TXT&quot;);
+</pre>
+</li>
+<li>When the service is no longer provided, destroy the created service handle:
+<pre class="prettyprint">
+dnssd_destroy_local_service(service_handle);
+</pre>
+</li>
+</ol>
+</li>
+<li>Register the local service:
+<ol type="a">
+<li>Register the service to announce its availability on a network:
+
+<pre class="prettyprint">
+error_code = dnssd_register_local_service(service_handle, __registered_cb, NULL);
+if (error_code == DNSSD_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;prinf(&quot;Success in registering a local service.&quot;);
+</pre>
+</li>
+<li>The callback defined in the <span style="font-family: Courier New,Courier,monospace">dnssd_register_local_service()</span> function is called when the service registration is finished:
+<pre class="prettyprint">
+void
+__registered_cb(dnssd_error_e result, dnssd_service_h dnssd_service, void* user_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;if (result == DNSSD_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Service is registered successfully */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Registered&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;} else if (result == DNSSD_NAME_CONFLICT) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Name conflict exists */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Name conflict&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;} else if (result == DNSSD_ALREADY_REGISTERED) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Service is already registered */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Already registered&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;} else {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Result is unknown */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Unknown result&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;}
+}
+</pre>
+</li>
+</ol>
+</li>
+</ol>
+
+ <h2 id="dnssd_search" name="dnssd_search">Browsing Remote Services with DNSSD</h2>
+
+<p>To search for available services on a network, use a service type or target information:</p>
+
+<ol>
+<li>To start searching, use the <span style="font-family: Courier New,Courier,monospace">dnssd_start_browsing_service()</span> function.
+<p>The DNS-SD browser handle is stored in a <span style="font-family: Courier New,Courier,monospace">dnssd_browser_h</span> variable. For more information on the service types, see <a href="http://www.dns-sd.org/ServiceTypes.html" target="_blank">http://www.dns-sd.org/ServiceTypes.html</a>.</p>
+
+<pre class="prettyprint">
+dnssd_browser_h browser_handle;
+char *service_type = &quot;_ftp._tcp&quot;;
+int error_code;
+
+error_code = dnssd_start_browsing_service(service_type, &amp;browser_handle, __found_cb, NULL);
+if (error_code == DNSSD_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;prinf(&quot;Start browsing&quot;);
+</pre>
+</li>
+<li>The callback defined in the <span style="font-family: Courier New,Courier,monospace">dnssd_start_browsing_service()</span> function is called when the remote service becomes available or unavailable:
+<pre class="prettyprint">
+void
+__dnssd_print_found(dnssd_service_h dnssd_remote_service)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;/* Handling the found service */
+&nbsp;&nbsp;&nbsp;&nbsp;char *service_name = NULL;
+&nbsp;&nbsp;&nbsp;&nbsp;char *service_type = NULL;
+&nbsp;&nbsp;&nbsp;&nbsp;char *ip_v4_address = NULL
+&nbsp;&nbsp;&nbsp;&nbsp;char *ip_v6_address = NULL;
+&nbsp;&nbsp;&nbsp;&nbsp;char *txt_record_value = NULL;
+&nbsp;&nbsp;&nbsp;&nbsp;int length = 0;
+&nbsp;&nbsp;&nbsp;&nbsp;int port = 0;
+&nbsp;&nbsp;&nbsp;&nbsp;error_code = dnssd_service_get_name(dnssd_remote_service, &amp;service_name);
+&nbsp;&nbsp;&nbsp;&nbsp;if (error_code == DNSSD_ERROR_NONE &amp;&amp; service_ name!= NULL)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Service name [%s]&quot;, service_ name);
+
+&nbsp;&nbsp;&nbsp;&nbsp;error_code = dnssd_service_get_type(dnssd_remote_service, &amp;service_type);
+&nbsp;&nbsp;&nbsp;&nbsp;if (error_code == DNSSD_ERROR_NONE &amp;&amp; service_type != NULL)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Service type [%s]&quot;, service_type);
+
+&nbsp;&nbsp;&nbsp;&nbsp;error_code = dnssd_service_get_ip(dnssd_remote_service, &amp;ip_v4_address, &amp;ip_v6_address)
+&nbsp;&nbsp;&nbsp;&nbsp;if (error_code == DNSSD_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(ip_v4_address)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;IPV4 address [%s]&quot;, ip_v4_address);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(ip_v6_address)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;IPV6 address [%s]&quot;, ip_v6_address);
+&nbsp;&nbsp;&nbsp;&nbsp;}
+
+&nbsp;&nbsp;&nbsp;&nbsp;error_code = dnssd_service_get_port(dnssd_remote_service, &amp;port)
+&nbsp;&nbsp;&nbsp;&nbsp;if (error_code == DNSSD_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Service port [%d]&quot;, port);
+&nbsp;&nbsp;&nbsp;&nbsp;error_code = dnssd_service_get_txt_record_value(dnssd_remote_service, &amp;txt_record_value, &amp;value);
+&nbsp;&nbsp;&nbsp;&nbsp;if (error_code == DNSSD_ERROR_NONE &amp;&amp; txt_record_value!= NULL)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Service TXT [%s]&quot;, txt_record_value);
+
+&nbsp;&nbsp;&nbsp;&nbsp;if(service_name)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;free(service_name);
+&nbsp;&nbsp;&nbsp;&nbsp;if(service_type)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;free(service_type);
+&nbsp;&nbsp;&nbsp;&nbsp;if(ip_v4_address)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;free(ip_v4_address);
+&nbsp;&nbsp;&nbsp;&nbsp;if(ip_v6_address)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;free(ip_v6_address);
+&nbsp;&nbsp;&nbsp;&nbsp;if(txt_record_value)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;free(txt_record_value);
+}
+
+void
+__found_cb(dnssd_service_h dnssd_remote_service, dnssd_service_state_e state, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Browse Service Callback\n&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Handler       : %u\n&quot;, dnssd_remote_service);
+&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;State      : &quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;switch (browse_state) {
+&nbsp;&nbsp;&nbsp;&nbsp;case DNSSD_SERVICE_STATE_AVAILABLE:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* DNS-SD service found */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__dnssd_print_found(dnssd_remote_service);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Available\n&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
+&nbsp;&nbsp;&nbsp;&nbsp;case DNSSD_SERVICE_STATE_UNAVAILABLE:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* DNS-SD service becomes unavailable */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Un-Available\n&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
+&nbsp;&nbsp;&nbsp;&nbsp;case DNSSD_SERVICE_STATE_NAME_LOOKUP_FAILED:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Browsing failed */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Browse Failure\n&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
+&nbsp;&nbsp;&nbsp;&nbsp;case DNSSD_SERVICE_STATE_HOST_NAME_LOOKUP_FAILED:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Resolving service name failed */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Resolve Service Name Failure\n&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
+&nbsp;&nbsp;&nbsp;&nbsp;case DNSSD_SERVICE_STATE_ADDRESS_LOOKUP_FAILED:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Resolving service address failed */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Resolve Service Address\n&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
+&nbsp;&nbsp;&nbsp;&nbsp;default:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Unknown Browse State\n&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
+&nbsp;&nbsp;&nbsp;&nbsp;}
+}
+</pre>
+</li>
+
+<li>When the services no longer interest you, stop the search using the browser handle:
+<pre class="prettyprint">
+dnssd_stop_browsing_service(browser_handle);
+</pre>
+</li></ol>
+
+
+ <h2 id="ssdp_service" name="ssdp_service">Managing a Local Service with SSDP</h2>
+
+<p>To manage a local service, you must create and register the service:</p>
+
+<ol>
+<li>Create the local service:
+<ol type="a">
+<li>To provide a local service on a network, you must create a handle containing information about the service.
+<p>At the beginning, define an <span style="font-family: Courier New,Courier,monospace">ssdp_service_h</span> variable to store the service handle. The target is used to create the handle, which represents a device or service type specified in the <a href="http://upnp.org" target="_blank">UPnP forum</a>.</p>
+
+<pre class="prettyprint">
+ssdp_service_h service_handle;
+char *target = &quot;upnp:rootdevice&quot;;
+int error_code;
+
+error_code = ssdp_create_local_service(target, &amp;service_handle);
+if (error_code == SSDP_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;prinf(&quot;Success in creating a service handle.&quot;);
+</pre>
+</li>
+
+<li>Set a USN (Unique Service Name) and a URL (Uniform Resource Locator) for the created service.
+<p>The USN format is also specified in the UPnP forum. For the URL, see the RFC 3986.</p>
+<pre class="prettyprint">
+char* usn = &quot;uuid:1234abcd-12ab-12ab-12ab-1234567abc12::upnp:rootdevice&quot;;
+char* url = &quot;192.168.0.2:1234&quot;;
+
+if (ssdp_service_set_usn(service_handle, usn) == SSDP_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Success in setting USN&quot;);
+if (ssdp_service_set_url(service_handle, url) == SSDP_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Success in setting URL&quot;);
+</pre>
+</li>
+<li>When the service is no longer provided, destroy the created service handle:
+<pre class="prettyprint">
+ssdp_destroy_local_service(service_handle);
+</pre>
+</li>
+</ol>
+</li>
+<li>Register the local service:
+<ol type="a">
+<li>Register the service to announce its availability on a network.
+<p>The target can be a device or service type specified in the UPnP forum.</p>
+
+<pre class="prettyprint">
+error_code = ssdp_register_local_service(service_handle, __registered_cb, NULL);
+if (error_code == SSDP_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;prinf(&quot;Success in registering a local service.&quot;);
+</pre>
+</li>
+<li>The callback defined in the <span style="font-family: Courier New,Courier,monospace">ssdp_register_local_service()</span> function is called when the service registration is finished:
+<pre class="prettyprint">
+void
+__registered_cb(ssdp_error_e result, ssdp_service_h ssdp_service, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Register result: %d\n&quot;, result);
+}
+</pre>
+</li>
+</ol>
+</li>
+</ol>
+
+ <h2 id="ssdp_search" name="ssdp_search">Browsing Remote Services with SSDP</h2>
+
+<p>To search for available services on a network, use a service type or target information:</p>
+
+<ol>
+<li>To start searching, use the <span style="font-family: Courier New,Courier,monospace">ssdp_start_browsing_service()</span> function.
+<p>The SSDP browser handle is stored in an <span style="font-family: Courier New,Courier,monospace">ssdp_browser_h</span> variable.</p>
+
+<pre class="prettyprint">
+ssdp_browser_h browser_handle;
+char *target = &quot;upnp:rootdevice&quot;;
+int error_code;
+
+error_code = ssdp_start_browsing_service(target, &amp;browser_handle, __found_cb, NULL);
+if (error_code == SSDP_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;prinf(&quot;Start browsing&quot;);
+</pre>
+</li>
+<li>The callback defined in the <span style="font-family: Courier New,Courier,monospace">ssdp_start_browsing_service()</span> function is called when the remote service becomes available or unavailable:
+<pre class="prettyprint">
+void
+__found_cb(ssdp_service_h ssdp_remote_service, ssdp_service_state_e state, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;char *usn;
+&nbsp;&nbsp;&nbsp;&nbsp;char *url;
+&nbsp;&nbsp;&nbsp;&nbsp;ssdp_service_get_usn(ssdp_remote_service, &amp;usn);
+&nbsp;&nbsp;&nbsp;&nbsp;ssdp_service_get_url(ssdp_remote_service, &amp;url);
+&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;state: %s\n&quot;, state==SSDP_SERVICE_STATE_AVAILABLE ? &quot;AVAILABLE&quot;:&quot;UNAVAILABLE&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;usn: %s\n&quot;, usn);
+&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;url: %s\n&quot;, url);
+}
+</pre>
+</li>
+
+<li>When the services no longer interest you, stop the search using the browser handle:
+<pre class="prettyprint">
+ssdp_stop_browsing_service(browser_handle);
+</pre>
+</li></ol>
+
+<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../../scripts/showhide.js"></script>
+
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+  <script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+ </body>
+</html>
\ No newline at end of file
index dc6df36..c7bc042 100644 (file)
@@ -48,6 +48,8 @@
 <h2>Warm-up</h2>
 <p>Become familiar with the Smartcard API basics by learning about:</p>
        <ul>
+               <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the smart card functionality.</p></li>
                <li><a href="#service">Using the SE Service</a>
                <p>Initialize the SE service and retrieve available readers.</p></li>
                <li><a href="#reader">Managing the Reader</a>
 
 <h2 id="prerequisites">Prerequisites</h2>
 
-<p>To use the Smartcard API, the application has to request permission by adding the following privilege to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>
+<p>To enable your application to use the smart card functionality:</p>
+<ol>
+<li>
+<p>To use the Smartcard API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__SMARTCARD__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__SMARTCARD__MODULE.html">wearable</a> applications), the application has to request permission by adding the following privilege to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>
 <pre class="prettyprint">
 &lt;privileges&gt;
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/secureelement&lt;/privilege&gt;
 &lt;/privileges&gt;
-</pre> 
+</pre>
+</li>
+<li>
+<p>To use the functions and data types of the Smartcard API, include the <span style="font-family: Courier New,Courier,monospace">&lt;smartcard.h&gt;</span> header file in your application:</p>
+<pre class="prettyprint">
+#include &lt;smartcard.h&gt;
+</pre>
+</li>
+</ol>
 
  <h2 id="service" name="service">Using the SE Service</h2>
 
 <p>To use the SE service:</p>
 <ol>
-<li>
-<p>To use the functions and data types of the Smartcard API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__SMARTCARD__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__SMARTCARD__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;smartcard.h&gt;</span> header file in your application:</p>
-<pre class="prettyprint">
-#include &lt;smartcard.h&gt;
-</pre></li>
+
 <li>
 <p>Initialize the smart card service for use:</p>
 <pre class="prettyprint">
index a43ebd6..8b3ab12 100644 (file)
@@ -23,7 +23,7 @@
     <div id="toc_border"><div id="toc">
         <p class="toc-title">Content</p>
         <ul class="toc">
-            <li><a href="#init">Initializing the VPN Connection</a></li>
+            <li><a href="#prerequisites">Prerequisites</a></li>
             <li><a href="#get_param">Getting Interface Parameters</a></li>
             <li><a href="#set_param">Setting Interface Parameters</a></li>
             <li><a href="#config">Configuring the Interface</a></li>
@@ -51,8 +51,8 @@
 <p>Become familiar with the VPN Service API basics by learning about:</p>
 
 <ul>
-       <li><a href="#init">Initializing the VPN Connection</a>
-       <p>Create a handle for maintaining the tunnel information.</p></li>
+       <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the VPN service functionality.</p></li>
        <li><a href="#get_param">Getting Interface Parameters</a>
        <p>Pass the handle and get the required interface parameter details.</p></li>
        <li><a href="#set_param">Setting Interface Parameters</a>
        <p>Set a timeout interval for reading and writing.</p></li>
 </ul>
 
-<h2 id="init" name="init">Initializing the VPN Connection</h2>
+<h2 id="prerequisites">Prerequisites</h2>
 
-<p>To initialize the VPN service for use:</p>
+<p>To enable your application to use the VPN service functionality:</p>
 
 <ol>
-<li>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__VPN__SERVICE__MODULE.html">VPN Service</a> API, include the <span style="font-family: Courier New,Courier,monospace">&lt;vpn_service.h&gt;</span> header file in your application:
+
+<li>To use the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__VPN__SERVICE__MODULE.html">VPN Service</a> API, the application has to request permission by adding the following privilege to the <span style="font-family: Courier New,Courier,monospace">tizen-manifest.xml</span> file:
+<pre class="prettyprint">
+&lt;privileges&gt;
+&nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://developer.samsung.com/tizen/vpnservice&lt;/privilege&gt;
+&lt;/privileges&gt;
+</pre>
+</li>
+<li>To use the functions and data types of the VPN Service API, include the <span style="font-family: Courier New,Courier,monospace">&lt;vpn_service.h&gt;</span> header file in your application:
 <pre class="prettyprint">
 #include &lt;vpn_service.h&gt;
 </pre>
index adb2f3a..cec34ef 100644 (file)
@@ -23,8 +23,7 @@
     <div id="toc_border"><div id="toc">
                <p class="toc-title">Content</p>
                <ul class="toc">
-                       <li><a href="#prerequisites">Prerequisites</a></li>             
-                       <li><a href="#initialization">Initializing Wi-Fi Direct&trade;</a></li>         
+                       <li><a href="#prerequisites">Prerequisites</a></li>
                        <li><a href="#activating">Activating Wi-Fi Direct&trade;</a></li>       
                        <li>Peers and groups
                        <ul class="toc">
@@ -54,9 +53,7 @@
 <p>Become familiar with the Wi-Fi Direct API basics by learning about:</p>
                <ul>
                        <li><a href="#prerequisites">Prerequisites</a>
-                   <p>Set the required permissions.</p></li>
-                       <li><a href="#initialization">Initializing Wi-Fi Direct&trade;</a>
-                       <p>Initialize Wi-Fi Direct&trade; for using all Wi-Fi Direct&trade; functions.</p></li>                 
+                   <p>Prepare your application to use the Wi-Fi Direct&trade; functionality.</p></li>  
                        <li><a href="#activating">Activating Wi-Fi Direct&trade;</a>
                        <p>Activate the Wi-Fi Direct&trade; local device asynchronously.</p></li>       
                        <li>Peers and groups
 
 <h2 id="prerequisites">Prerequisites</h2>
 
-<p>To use the Wi-Fi Direct API, the application has to request permission by adding the following privilege to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>
+<p>To enable your application to use the Wi-Fi Direct&trade; functionality:</p>
+<ol>
+<li>
+<p>To use the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__WIFI__DIRECT__MODULE.html">Wi-Fi Direct</a> API, the application has to request permission by adding the following privilege to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>
 <pre class="prettyprint">
 &lt;privileges&gt;
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/wifidirect&lt;/privilege&gt;
 &lt;/privileges&gt;
 </pre>
-
- <h2 id="initialization" name="initialization">Initializing Wi-Fi Direct&trade;</h2>
-
-<p>To be able to use all Wi-Fi Direct&trade; functions, initialize Wi-Fi Direct&trade;:</p>
-
-<ol>
-
-<li><p>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__WIFI__DIRECT__MODULE.html">Wi-Fi Direct</a> API, include the <span style="font-family: Courier New,Courier,monospace">&lt;wifi_direct.h&gt;</span> header file in your application:</p>
+</li>
+<li><p>To use the functions and data types of the Wi-Fi Direct API, include the <span style="font-family: Courier New,Courier,monospace">&lt;wifi_direct.h&gt;</span> header file in your application:</p>
 <pre class="prettyprint">
 #include &lt;wifi_direct.h&gt;
 </pre></li>
index fa4f037..75644fe 100644 (file)
@@ -23,8 +23,7 @@
     <div id="toc_border"><div id="toc">
                <p class="toc-title">Content</p>
                <ul class="toc">
-                       <li><a href="#prerequisites">Prerequisites</a></li>             
-                       <li><a href="#init">Initializing Wi-Fi</a></li>
+                       <li><a href="#prerequisites">Prerequisites</a></li>
                        <li><a href="#activate">Activating a Wi-Fi Device</a></li>
                        <li><a href="#scan">Scanning for Access Points</a></li>
                        <li><a href="#connect">Connecting to a Specific Access Point</a></li>
@@ -47,8 +46,7 @@
 <h2>Warm-up</h2>
 <p>Become familiar with the Wi-Fi API basics by learning about: </p>
                <ul>
-                       <li><a href="#prerequisites">Prerequisites</a><p>Set the required permissions.</p></li>
-                       <li><a href="#init">Initializing Wi-Fi</a><p>Initialize Wi-Fi for use.</p></li>
+                       <li><a href="#prerequisites">Prerequisites</a><p>Prepare your application to use the Wi-Fi functionality.</p></li>
                        <li><a href="#activate">Activating a Wi-Fi Device</a><p>Activate the Wi-Fi device asynchronously.</p></li>
                        <li><a href="#scan">Scanning for Access Points</a><p>Scan the nearby access points and retrieve information about them.</p></li>
                        <li><a href="#connect">Connecting to a Specific Access Point</a><p>Connect to a specific access point after scanning.</p></li>
 
 <h2 id="prerequisites">Prerequisites</h2>
 
-<p>To use the Wi-Fi API, the application has to request permission by adding the following privileges to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>
+<p>To enable your application to use the Wi-Fi functionality:</p>
+<ol>
+<li>
+<p>To use the Wi-Fi API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__WIFI__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__WIFI__MODULE.html">wearable</a> applications), the application has to request permission by adding the following privileges to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>
 <pre class="prettyprint">
 &lt;privileges&gt;
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/network.get&lt;/privilege&gt;
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/network.profile&lt;/privilege&gt;
 &lt;/privileges&gt;
 </pre>         
-               
- <h2 id="init" name="init">Initializing Wi-Fi</h2>
-<p>To initialize Wi-Fi:</p>
-<ol>
+</li>
 <li>
-<p>To use the functions and data types of the Wi-Fi API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__WIFI__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__WIFI__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;wifi.h&gt;</span> header file in your application:</p>
+<p>To use the functions and data types of the Wi-Fi API, include the <span style="font-family: Courier New,Courier,monospace">&lt;wifi.h&gt;</span> header file in your application:</p>
 <pre class="prettyprint">
 #include &lt;wifi.h&gt;
 </pre>
@@ -94,6 +92,17 @@ wifi_deinitialize();
 </li>
 </ol>
 
+<table class="note">
+<tbody>
+<tr>
+<th class="note">Note</th>
+</tr>
+<tr>
+<td class="note">The Wi-Fi feature is not thread-safe and depends on the ecore main loop. Implement Wi-Fi within the ecore main loop, and do not use it in a thread.</td>
+</tr>
+</tbody>
+</table>
+
  <h2 id="activate" name="activate">Activating a Wi-Fi Device</h2>
 
 <p>To activate and deactivate a local Wi-Fi device, and to check that Wi-Fi is activated:</p>
index 59575e0..7ca69d5 100644 (file)
@@ -23,7 +23,6 @@
         <p class="toc-title">Content</p>\r
                <ul class="toc">\r
                        <li><a href="#prerequisites">Prerequisites</a></li>\r
-                       <li><a href="#initialize">Initializing the Key Manager</a></li>\r
                        <li>Repository management\r
                                <ul class="toc">\r
                                        <li><a href="#savingkey">Saving, Getting, or Removing a Key</a></li>\r
@@ -56,8 +55,8 @@
        <h2>Warm-up</h2>\r
        <p>Become familiar with the Key Manager API basics by learning about:</p>\r
 <ul>\r
-<li><a href="#initialize">Initializing the Key Manager</a>\r
-<p>Define the header file required to use the key manager.</p></li>\r
+<li><a href="#prerequisites">Prerequisites</a>\r
+<p>Prepare your application to use the key manager functionality.</p></li>\r
 \r
 <li>Repository management\r
        <ul>\r
 \r
 <h2 id="prerequisites">Prerequisites</h2>\r
 \r
-<p>To use the Key Manager API, the application has to request permission by adding the following privilege to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>\r
+<p>To enable your application to use the key manager functionality:</p>\r
+\r
+<ol>\r
+<li>\r
+<p>To use the Key Manager API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__KEY__MANAGER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__KEY__MANAGER__MODULE.html">wearable</a> applications), the application has to request permission by adding the following privilege to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>\r
 <pre class="prettyprint">\r
 &lt;privileges&gt;\r
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/keymanager&lt;/privilege&gt;\r
 &lt;/privileges&gt;\r
 </pre>\r
-\r
-<h2 id="initialize" name="initialize">Initializing the Key Manager</h2>\r
-\r
-<p>To define the header file required to use the key manager:</p>\r
-<ol>           \r
-<li><p>To use the functions and data types of the Key Manager API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__KEY__MANAGER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__KEY__MANAGER__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;ckmc/ckmc-manager.h&gt;</span> header file in your application:</p>\r
+</li>\r
+               \r
+<li><p>To use the functions and data types of the Key Manager API, include the <span style="font-family: Courier New,Courier,monospace">&lt;ckmc/ckmc-manager.h&gt;</span> header file in your application:</p>\r
 <pre class="prettyprint">\r
 #include &lt;ckmc/ckmc-manager.h&gt;\r
 </pre></li></ol>\r
index b64818f..761cde3 100644 (file)
@@ -22,6 +22,7 @@
        <div id="toc_border"><div id="toc">\r
         <p class="toc-title">Content</p>\r
         <ul class="toc">\r
+                       <li><a href="#prerequisites">Prerequisites</a></li>             \r
             <li><a href="#get">Getting Privilege Information</a></li>\r
         </ul>          \r
                <p class="toc-title">Related Info</p>\r
        <p>\r
        Become familiar with the Privilege Info API basics by learning about:</p>\r
        <ul>\r
+               <li><a href="#prerequisites">Prerequisites</a>\r
+               <p>Prepare your application to use the privilege info functionality.</p></li>   \r
                <li><a href="#get">Getting Privilege Information</a>\r
                <p>Get privilege information, such as the display name and description of a privilege.</p></li>\r
        </ul>  \r
 \r
-<h2 id="get" name="get">Getting Privilege Information</h2>\r
-\r
-<p>To get privilege information:</p>\r
-\r
-<ol>\r
-<li><p>To use the functions and data types of the Privilege Info API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SECURITY__FRAMEWORK__PRIVILEGE__INFO__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SECURITY__FRAMEWORK__PRIVILEGE__INFO__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;privilege_information.h&gt;</span> header file in your application:</p>\r
+<h2 id="prerequisites">Prerequisites</h2>\r
+<p>To use the functions and data types of the Privilege Info API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SECURITY__FRAMEWORK__PRIVILEGE__INFO__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SECURITY__FRAMEWORK__PRIVILEGE__INFO__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;privilege_information.h&gt;</span> header file in your application:</p>\r
 <pre class="prettyprint">\r
 #include &lt;privilege_information.h&gt;\r
-</pre></li>\r
-<li>To get various privilege information:\r
+</pre> \r
+       \r
+<h2 id="get" name="get">Getting Privilege Information</h2>\r
+\r
+<p>To get various privilege information:</p>\r
 <ul>\r
 \r
 <li>Get the privilege display name using the <span style="font-family: Courier New,Courier,monospace;">privilege_info_get_display_name()</span> function:\r
@@ -101,8 +103,6 @@ int retVal = privilege_info_get_description_by_pkgtype(&quot;PRVINFO_PACKAGE_TYP
 </ul>\r
 <p>The above functions return a <span style="font-family: Courier New,Courier,monospace;">privilege_info_error_e</span> enum value (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SECURITY__FRAMEWORK__PRIVILEGE__INFO__MODULE.html#gae50b814d4efe1b1d7218b6d68cdcadd6">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SECURITY__FRAMEWORK__PRIVILEGE__INFO__MODULE.html#gae50b814d4efe1b1d7218b6d68cdcadd6">wearable</a> applications) that indicates the value retrieval result. They also store the requested privilege display name or description in their last parameter.</p>\r
 \r
-</li></ol>\r
-\r
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>\r
 <script type="text/javascript" src="../../scripts/showhide.js"></script>\r
 \r
index 37f33c9..349f7b3 100644 (file)
@@ -22,7 +22,6 @@
         <p class="toc-title">Content</p>\r
         <ul class="toc">\r
             <li><a href="#prerequisites">Prerequisites</a></li>\r
-                       <li><a href="#init">Initializing the Calendar</a></li>\r
             <li>Events\r
                 <ul class="toc">\r
                     <li><a href="#create_event">Creating an Event</a></li>\r
@@ -72,9 +71,7 @@
 \r
 <ul>\r
     <li><a href="#prerequisites">Prerequisites</a>\r
-               <p>Set the required permissions.</p></li>\r
-       <li><p><a href="#init">Initializing the Calendar</a></p>\r
-        <p>Initialize the calendar service for use.</p></li>\r
+               <p>Prepare your application to use the calendar functionality.</p></li>\r
     <li><p>Events</p>\r
         <ul>\r
             <li><p><a href="#create_event">Creating an Event</a></p>\r
 \r
 <h2 id="prerequisites">Prerequisites</h2>\r
 \r
-<p>To use the Calendar API, the application has to request permission by adding the following privileges to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>\r
+<p>To enable your application to use the calendar functionality:</p>\r
+<ol>\r
+<li>\r
+<p>To use the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SOCIAL__CALENDAR__SVC__MODULE.html">Calendar</a> API, the application has to request permission by adding the following privileges to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>\r
 <pre class="prettyprint">\r
 &lt;privileges&gt;\r
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/calendar.read&lt;/privilege&gt;\r
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/calendar.write&lt;/privilege&gt;\r
 &lt;/privileges&gt;\r
 </pre>\r
-\r
-<h2 id="init" name="init">Initializing the Calendar</h2>\r
-\r
-<p>To initialize the calendar service for use:</p>\r
-\r
-<ol>\r
+</li>\r
 \r
 <li>\r
-<p>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SOCIAL__CALENDAR__SVC__MODULE.html">Calendar</a> API, include the <span style="font-family: Courier New,Courier,monospace">&lt;calendar.h&gt;</span> header file in your application:</p>\r
+<p>To use the functions and data types of the Calendar API, include the <span style="font-family: Courier New,Courier,monospace">&lt;calendar.h&gt;</span> header file in your application:</p>\r
 <pre class="prettyprint">\r
 #include &lt;calendar.h&gt;\r
 </pre>\r
@@ -146,10 +141,8 @@ error_code = calendar_connect();
 if (error_code != CALENDAR_ERROR_NONE)\r
 &nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;calendar_connect failed: %x\n&quot;, error_code);\r
 </pre>\r
-</li>\r
 \r
-<li>\r
-<p>After you have finished working with the calendar service, disconnect from the service using the <span style="font-family: Courier New,Courier,monospace">calendar_disconnect()</span> function:</p>\r
+<p>When the calendar service is no longer needed, disconnect from the service using the <span style="font-family: Courier New,Courier,monospace">calendar_disconnect()</span> function:</p>\r
 <pre class="prettyprint">\r
 error_code = calendar_disconnect();\r
 if (error_code != CALENDAR_ERROR_NONE)\r
index 32bdd43..3a6f541 100644 (file)
@@ -22,7 +22,6 @@
         <p class="toc-title">Content</p>\r
         <ul class="toc">\r
             <li><a href="#prerequisites">Prerequisites</a></li>\r
-                       <li><a href="#init">Initializing Contacts</a></li>\r
             <li>Contacts\r
                 <ul class="toc">\r
                     <li><a href="#create_contact">Creating a Contact</a></li>\r
 \r
 <ul>\r
     <li><a href="#prerequisites">Prerequisites</a>\r
-               <p>Set the required permissions.</p></li>\r
-       <li><p><a href="#init">Initializing Contacts</a></p>\r
-        <p>Initialize the contacts service for use.</p></li>\r
+               <p>Prepare your application to use the contact functionality.</p></li>\r
     <li><p>Contacts</p>\r
         <ul>\r
             <li><p><a href="#create_contact">Creating a Contact</a></p>\r
 \r
 <h2 id="prerequisites">Prerequisites</h2>\r
 \r
-<p>To use the Contacts API, the application has to request permission by adding the following privileges to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>\r
+<p>To enable your application to use the contact functionality:</p>\r
+<ol>\r
+<li>\r
+<p>To use the Contacts API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SOCIAL__CONTACTS__SVC__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SOCIAL__CONTACTS__SVC__MODULE.html">wearable</a> applications), the application has to request permission by adding the following privileges to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>\r
 <pre class="prettyprint">\r
 &lt;privileges&gt;\r
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/contact.read&lt;/privilege&gt;\r
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/callhistory.write&lt;/privilege&gt;\r
 &lt;/privileges&gt;\r
 </pre>\r
-\r
-<h2 id="init" name="init">Initializing Contacts</h2>\r
-\r
-<p>To initialize the contacts service for use:</p>\r
-\r
-<ol>\r
+</li>\r
 \r
 <li>\r
-<p>To use the functions and data types of the Contacts API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SOCIAL__CONTACTS__SVC__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SOCIAL__CONTACTS__SVC__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;contacts.h&gt;</span> header file in your application:</p>\r
+<p>To use the functions and data types of the Contacts API, include the <span style="font-family: Courier New,Courier,monospace">&lt;contacts.h&gt;</span> header file in your application:</p>\r
 <pre class="prettyprint">\r
 #include &lt;contacts.h&gt;\r
 </pre>\r
 int error_code;\r
 error_code = contacts_connect();\r
 </pre>\r
-</li>\r
 \r
-<li>\r
-<p>After you have finished working with the contacts service, disconnect from the service using the <span style="font-family: Courier New,Courier,monospace">contacts_disconnect()</span> function:</p>\r
+<p>When the contacts service is no longer needed, disconnect from the service using the <span style="font-family: Courier New,Courier,monospace">contacts_disconnect()</span> function:</p>\r
 <pre class="prettyprint">\r
 error_code = contacts_disconnect();\r
 </pre>\r
index da1256d..9c8ab3d 100644 (file)
@@ -22,7 +22,8 @@
     <div id="toc_border"><div id="toc">
         <p class="toc-title">Content</p>
         <ul class="toc">
-            <li><a href="#Starting_up">Initializing the Service Adaptor</a></li>
+            <li><a href="#prerequisites">Prerequisites</a></li>
+                       <li><a href="#Starting_up">Retrieving Available Service Plugins</a></li>
             <li><a href="#Files_listing">Retrieving Files</a></li>
             <li><a href="#File_upload">Uploading Files</a></li>
             <li><a href="#File_download">Downloading Files</a></li>
 <p>Become familiar with the Service Adaptor API basics by learning about:</p>
 
 <ul>
-    <li><p><a href="#Starting_up">Initializing the Service Adaptor</a></p>
-        <p>Initialize the Service Adaptor for use.</p></li>
+       <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the Service Adaptor functionality.</p></li>
+    <li><p><a href="#Starting_up">Retrieving Available Service Plugins</a></p>
+        <p>Retrieve available service plugins and store handles to them.</p></li>
     <li><p><a href="#Files_listing">Retrieving Files</a></p>
         <p>Retrieve information about all the files in the storage.</p></li>
     <li><p><a href="#File_upload">Uploading Files</a></p>
         <p>Remove a file from the storage.</p></li>
 </ul>
 
-<h2 id="Starting_up" name="Starting_up">Initializing the Service Adaptor</h2>
-
-<p>To initialize the Service Adaptor for use:</p>
+<h2 id="prerequisites">Prerequisites</h2>
 
+<p>To enable your application to use the Service Adaptor functionality:</p>
 <ol>
-
 <li>
 <p>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__SERVICE__ADAPTOR__MODULE.html">Service Adaptor</a> API, include the <span style="font-family: Courier New,Courier,monospace">&lt;service_adaptor_client.h&gt;</span> header file in your application:</p>
 <pre class="prettyprint">
@@ -89,7 +90,28 @@ service_adaptor_init()
 }
 </pre>
 </li>
+<li>
+<p>When no longer needed, destroy the Service Adaptor handle and release all its resources with the <span style="font-family: Courier New,Courier,monospace">service_adaptor_destroy()</span> function:</p>
+
+<pre class="prettyprint">
+static void
+service_adaptor_deinit(int result, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;&nbsp;int ret = service_adaptor_destroy(service_adaptor);
+
+&nbsp;&nbsp;&nbsp;&nbsp;if (ret != SERVICE_ADAPTOR_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Error handling */
+}
+</pre>
+</li>
+</ol>
+
 
+<h2 id="Starting_up" name="Starting_up">Retrieving Available Service Plugins</h2>
+
+<p>To retrieve available service plugins:</p>
+
+<ol>
 <li>
 <p>Create a data structure for storing the service plugin handles:</p>
 <pre class="prettyprint">
@@ -144,20 +166,6 @@ plugin_lookup()
 }
 </pre>
 </li>
-<li>
-<p>When no longer needed, destroy the Service Adaptor handle and release all its resources with the <span style="font-family: Courier New,Courier,monospace">service_adaptor_destroy()</span> function:</p>
-
-<pre class="prettyprint">
-static void
-service_adaptor_deinit(int result, void *user_data)
-{
-&nbsp;&nbsp;&nbsp;&nbsp;int ret = service_adaptor_destroy(service_adaptor);
-
-&nbsp;&nbsp;&nbsp;&nbsp;if (ret != SERVICE_ADAPTOR_ERROR_NONE)
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Error handling */
-}
-</pre>
-</li>
 </ol>
 
 <h2 id="Files_listing" name="Files_listing">Retrieving Files</h2>
index 2d931d1..9ab0e5a 100644 (file)
@@ -54,6 +54,8 @@
   <h2>Warm-up</h2>
     <p>Become familiar with the Device API basics by learning about:</p> 
        <ul>
+       <li><a href="#prerequisites">Prerequisites</a>
+       <p>Prepare your application to use the device functionality.</p></li>   
        <li><a href="#battery">Retrieving Battery Information</a>
        <p>Get battery information.</p></li>
        <li>Device control
 
 <h2 id="prerequisites">Prerequisites</h2>
 
-<p>To use the Device API, the application has to request permission by adding the following privileges to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>
+<p>To enable your application to use the device functionality:</p>
+<ol>
+<li>
+<p>To use the Device API submodules (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__DEVICE__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__DEVICE__MODULE.html">wearable</a> applications), the application has to request permission by adding the following privileges to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>
 <pre class="prettyprint">
 &lt;privileges&gt;
 &nbsp;&nbsp;&nbsp;&lt;!--To use the Display API--&gt;
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/led&lt;/privilege&gt;
 &lt;/privileges&gt;
 </pre>
-
-       
-<h2 id="battery" name="battery">Retrieving Battery Information</h2>
-
-               <p>To retrieve battery information:</p>                 
-       <ol>
+</li>
        <li>
-       <p>To use the functions and data types of the Battery API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__DEVICE__BATTERY__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__DEVICE__BATTERY__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;device/battery.h&gt;</span> header file in your application:</p>
+       <p>To use the functions and data types of the Device API submodules, include the related header files in your application:</p>
+<ul>
+<li>For the Battery API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__DEVICE__BATTERY__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__DEVICE__BATTERY__MODULE.html">wearable</a> applications), include <span style="font-family: Courier New,Courier,monospace;">&lt;device/battery.h&gt;</span>.</li>
+<li>For the Display API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__DEVICE__DISPLAY__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__DEVICE__DISPLAY__MODULE.html">wearable</a> applications), include <span style="font-family: Courier New,Courier,monospace;">&lt;device/display.h&gt;</span>.</li>
+<li>For the Haptic API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__DEVICE__HAPTIC__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__DEVICE__HAPTIC__MODULE.html">wearable</a> applications), include <span style="font-family: Courier New,Courier,monospace;">&lt;device/haptic.h&gt;</span>.</li>
+<li>For the IR API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__DEVICE__IR__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__DEVICE__IR__MODULE.html">wearable</a> applications), include <span style="font-family: Courier New,Courier,monospace;">&lt;device/ir.h&gt;</span>.</li>
+<li>For the Led API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__DEVICE__LED__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__DEVICE__LED__MODULE.html">wearable</a> applications), include <span style="font-family: Courier New,Courier,monospace;">&lt;device/led.h&gt;</span>.</li>
+<li>For the Power API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__DEVICE__POWER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__DEVICE__POWER__MODULE.html">wearable</a> applications), include <span style="font-family: Courier New,Courier,monospace;">&lt;device/power.h&gt;</span>.</li>
+<li>For the Callback API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__DEVICE__CALLBACK__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__DEVICE__CALLBACK__MODULE.html">wearable</a> applications), include <span style="font-family: Courier New,Courier,monospace;">&lt;device/callback.h&gt;</span>.</li>
+</ul>
+       
 <pre class="prettyprint">
+/* To retrieve battery information */
 #include &lt;device/battery.h&gt;
+/* To control the display */
+#include &lt;device/display.h&gt;
+/* To control haptic devices */
+#include &lt;device/haptic.h&gt;
+/* To control IR devices */
+#include &lt;device/ir.h&gt;
+/* To control LED devices */
+#include &lt;device/led.h&gt;
+/* To control the power state */
+#include &lt;device/power.h&gt;
+/* To monitor device changes */
+#include &lt;device/callback.h&gt;
 </pre>
-               </li>
+</li>
+</ol>
+       
+<h2 id="battery" name="battery">Retrieving Battery Information</h2>
 
-               <li>To get the battery details:
+               <p>To retrieve battery information:</p>                 
                        <ul>
                                <li>Get the battery percentage with the <span style="font-family: Courier New,Courier,monospace;">device_battery_get_percent()</span> function.
                                <p>The function returns the current battery percentage as an integer value from 0 to 100 that indicates the remaining battery charge as a percentage of the maximum level.</p>
@@ -127,20 +153,11 @@ device_battery_level_e level;
 error = device_battery_get_level_status(&amp;level);
 </pre>
                </li>
-               </ul></li>
-       </ol> 
+               </ul>
 
        <h2 id="display" name="display">Controlling the Display</h2>
 
-                       <p>To control the display:</p>
-               <ol>
-               <li>
-               <p>To use the functions and data types of the Display API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__DEVICE__DISPLAY__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__DEVICE__DISPLAY__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;device/display.h&gt;</span> header file in your application:</p>
-<pre class="prettyprint">
-#include &lt;device/display.h&gt;
-</pre>
-</li>
-               <li>To retrieve and set display properties:
+<p>To retrieve and set display properties:</p>
                <ul>
                <li>Get the number of display devices with the <span style="font-family: Courier New,Courier,monospace;">device_display_get_numbers()</span> function:
 <pre class="prettyprint">
@@ -183,19 +200,12 @@ error = device_display_change_state(DISPLAY_STATE_NORMAL);
 
 
                </li>
-               </ul></li></ol>
+               </ul>
                
 <h2 id="haptic" name="haptic">Controlling Haptic Devices</h2>
 
 <p>To control haptic devices:</p>
-               <ol>
-               <li>
-<p>To use the functions and data types of the Haptic API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__DEVICE__HAPTIC__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__DEVICE__HAPTIC__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;device/haptic.h&gt;</span> header file in your application:</p>
-<pre class="prettyprint">
-#include &lt;device/haptic.h&gt;
-</pre>
-</li>
-
+<ol>
 <li>Get the number of haptic devices with the <span style="font-family: Courier New,Courier,monospace;">device_haptic_get_count()</span> function:
 
 <pre class="prettyprint">
@@ -240,17 +250,8 @@ error = device_haptic_close(0, handle);
 
 <h2 id="ir" name="ir">Controlling IR Devices</h2>
 
-<p>To control IR devices:</p>
+<p>To control an IR device:</p>
 <ol>
-<li>
-<p>To use the functions and data types of the IR API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__DEVICE__IR__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__DEVICE__IR__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;device/ir.h&gt;</span> header file in your application:</p>
-<pre class="prettyprint">
-#include &lt;device/ir.h&gt;
-</pre>
-</li>
-
-<li>To manage an IR device:
-<ol type="a">
 <li>Determine whether IR is available in the device using the <span style="font-family: Courier New,Courier,monospace;">device_ir_is_available()</span> function:
 <pre class="prettyprint">
 bool avail;
@@ -268,20 +269,11 @@ error = device_ir_transmit(carrier_frequency, pattern, size);
 </pre>
 </li>
 </ol>
-</li>
-</ol>
+
 
 <h2 id="led" name="led">Controlling LED Devices</h2>
 
-<p>To control LED devices:</p>
-               <ol>
-               <li>
-<p>To use the functions and data types of the Led API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__DEVICE__LED__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__DEVICE__LED__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;device/led.h&gt;</span> header file in your application:</p>
-<pre class="prettyprint">
-#include &lt;device/led.h&gt;
-</pre>
-</li>
-<li>To manage a LED device:
+<p>To control a LED device:</p>
 <ul>
 <li>Get the maximum brightness value of a torch LED with the <span style="font-family: Courier New,Courier,monospace;">device_flash_get_max_brightness()</span> function.
 <p>The function returns the maximum brightness value of the torch LED located next to the camera.</p>
@@ -315,20 +307,10 @@ error = device_led_stop_custom();
 </pre>
 </li>
 </ul>
-</li>
-</ol>
 
 <h2 id="power" name="power">Controlling the Power State</h2>
 
-<p>To control the device power state:</p>
-               <ol>
-               <li>
-<p>To use the functions and data types of the Power API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__DEVICE__POWER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__DEVICE__POWER__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;device/power.h&gt;</span> header file in your application:</p>
-<pre class="prettyprint">
-#include &lt;device/power.h&gt;
-</pre>
-</li>
-<li>To lock and unlock the power state:
+<p>To lock and unlock the power state:</p>
 <ul>
 <li>Lock the power state with the <span style="font-family: Courier New,Courier,monospace;">device_power_request_lock()</span> function.
 <p>The function locks the specific lock type for a specified time. After the given timeout, the lock type is unlocked automatically. If the process is destroyed, every lock is removed.</p>
@@ -349,20 +331,11 @@ error = device_power_release_lock(POWER_LOCK_CPU);
 </pre>
 </li>
 </ul>
-</li>
-</ol>
 
 <h2 id="changes" name="changes">Monitoring Device Changes</h2>
 
 <p>To monitor device changes in, for example, the device display state:</p>
-               <ol>
-               <li>
-<p>To use the functions and data types of the Callback API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__DEVICE__CALLBACK__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__DEVICE__CALLBACK__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;device/callback.h&gt;</span> header file in your application:</p>
-<pre class="prettyprint">
-#include &lt;device/callback.h&gt;
-</pre>
-</li>
-
+<ol>
 <li>Define a callback, which is called when the device status changes.
 
 <p>The <span style="font-family: Courier New,Courier,monospace;">device_callback_e</span> enumerator (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__DEVICE__CALLBACK__MODULE.html#gaa55ba4e8bf4d8877b500686e1d78f2d7">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__DEVICE__CALLBACK__MODULE.html#gaa55ba4e8bf4d8877b500686e1d78f2d7">wearable</a> applications) defines the available callback types.</p>
index 487804b..d37e8ff 100644 (file)
        <div id="toc_border"><div id="toc">
                <p class="toc-title">Content</p>
                <ul class="toc">
-                       <li><a href="#init">Initializing dlog</a>
-                       </li>
-                       <li><a href="#send">Sending a Log Message</a>
-                       </li>
-                       <li><a href="#check">Checking the Output Logs</a>
-                       </li>
+                       <li><a href="#prerequisites">Prerequisites</a></li>
+                       <li><a href="#send">Sending a Log Message</a></li>
+                       <li><a href="#check">Checking the Output Logs</a></li>
                </ul>
                <p class="toc-title">Related Info</p>
                <ul class="toc">
 <h2>Warm-up</h2>
 <p>Become familiar with the dlog API basics by learning about:</p>
        <ul>
-               <li><a href="#init">Initializing dlog</a>
-               <p>Initialize dlog for use.</p></li>
+               <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the dlog functionality.</p></li>
                <li><a href="#send">Sending a Log Message</a>
                <p>Send a log message.</p></li>
                <li><a href="#check">Checking the Output Logs</a>
                <p>Check the output.</p></li>
        </ul>
 
- <h2 id="init" name="init">Initializing dlog</h2>
+<h2 id="prerequisites">Prerequisites</h2>
+
+<p>To enable your application to use the dlog functionality:</p>
 
-<p>To initialize dlog:</p>
 <ol><li><p>To use the functions and data types of the dlog API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__DLOG.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__DLOG.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;dlog.h&gt;</span> header file in your application:</p>
 <pre class="prettyprint">
 #include &lt;dlog.h&gt;
index 6b4993d..8a4ead4 100644 (file)
@@ -23,6 +23,7 @@
        <div id="toc_border"><div id="toc">
                <p class="toc-title">Content</p>
                <ul class="toc">
+                       <li><a href="#prerequisites">Prerequisites</a></li>
                        <li><a href="#play">Playing Feedback for a Specific Pattern</a></li>
                        <li><a href="#playtype">Playing Feedback for a Specific Type and Pattern</a></li>
                        <li><a href="#support">Checking for Pattern Support</a></li>
@@ -44,6 +45,8 @@
   <h2>Warm-up</h2>
     <p>Become familiar with the Feedback API basics by learning about:</p>
        <ul>
+       <li><a href="#prerequisites">Prerequisites</a>
+       <p>Prepare your application to use the feedback functionality.</p></li> 
        <li><a href="#play">Playing Feedback for a Specific Pattern</a>
        <p>Play a sound and vibrate for a specific pattern.</p></li>
        <li><a href="#playtype">Playing Feedback for a Specific Type and Pattern</a>
        <p>Determine whether a specific pattern is supported.</p></li>
        </ul>
 
-<h2 id="play" name="play">Playing Feedback for a Specific Pattern</h2>
-
-<p>To play a sound and vibrate for a specific pattern:</p>
-<ol>
-<li><p>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__FEEDBACK__MODULE.html">Feedback</a> API, include the <span style="font-family: Courier New,Courier,monospace;">&lt;feedback.h&gt;</span> header file in your application:</p>
+<h2 id="prerequisites">Prerequisites</h2>
+<p>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__FEEDBACK__MODULE.html">Feedback</a> API, include the <span style="font-family: Courier New,Courier,monospace;">&lt;feedback.h&gt;</span> header file in your application:</p>
 <pre class="prettyprint">
 #include &lt;feedback.h&gt;
-</pre></li>
-<li>Play the feedback pattern with the <span style="font-family: Courier New,Courier,monospace;">feedback_play()</span> function.
-<p>The return value defines whether playing the feedback was successful.</p>
+</pre>
+
+<h2 id="play" name="play">Playing Feedback for a Specific Pattern</h2>
+
+<p>To play a sound and vibrate for a specific pattern, use the <span style="font-family: Courier New,Courier,monospace;">feedback_play()</span> function.</p>
 <p>Internally, the function invokes the <span style="font-family: Courier New,Courier,monospace;">sound_play</span> or <span style="font-family: Courier New,Courier,monospace;">vibrator_play</span> feedback type. It returns success when the pattern enum is valid.</p>
 <pre class="prettyprint">
 int ret;
 ret = feedback_play(pattern);
 </pre>
-</li>
-</ol>
+<p>The return value defines whether playing the feedback was successful.</p>
 
 <h2 id="playtype" name="playtype">Playing Feedback for a Specific Type and Pattern</h2>
 
-<p>To play a sound and vibrate for a specific type and pattern:</p>
-<ol>
-<li><p>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__FEEDBACK__MODULE.html">Feedback</a> API, include the <span style="font-family: Courier New,Courier,monospace;">&lt;feedback.h&gt;</span> header file in your application:</p>
-<pre class="prettyprint">
-#include &lt;feedback.h&gt;
-</pre></li>
-<li>Play the feedback pattern with the <span style="font-family: Courier New,Courier,monospace;">feedback_play_type()</span> function. 
-<p>The return value defines whether playing the feedback was successful.</p>
+<p>To play a sound and vibrate for a specific type and pattern, use the <span style="font-family: Courier New,Courier,monospace;">feedback_play_type()</span> function.</p>
 <p>Internally, the function invokes the <span style="font-family: Courier New,Courier,monospace;">sound_play</span> or <span style="font-family: Courier New,Courier,monospace;">vibrator_play</span> feedback type. It returns success when the pattern enum is valid.</p>
 <pre class="prettyprint">
 static int ret;
 ret = feedback_play(type, pattern);
 </pre>
-
-</li>
-</ol>
+<p>The return value defines whether playing the feedback was successful.</p>
 
 <h2 id="support" name="support">Checking for Pattern Support</h2>
 
-<p>To determine whether a specific pattern is supported:</p>
-
-<ol>
-<li><p>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__FEEDBACK__MODULE.html">Feedback</a> API, include the <span style="font-family: Courier New,Courier,monospace;">&lt;feedback.h&gt;</span> header file in your application:</p>
-<pre class="prettyprint">
-#include &lt;feedback.h&gt;
-</pre></li>
-<li>Check whether a specific pattern is supported for a specific feedback type with the <span style="font-family: Courier New,Courier,monospace;">feedback_is_supported_pattern()</span> function. 
-<p>The return value defines whether retrieving the feedback information was successful.</p>
+<p>To determine whether a specific pattern is supported for a specific feedback type, use the <span style="font-family: Courier New,Courier,monospace;">feedback_is_supported_pattern()</span> function.</p>
 <p>Internally, the function invokes the <span style="font-family: Courier New,Courier,monospace;">sound_is_supported</span> or <span style="font-family: Courier New,Courier,monospace;">vibrator_is_supported</span> feedback type.</p>
 <pre class="prettyprint">
 static int ret;
 bool status;
 ret = feedback_is_supported_pattern(type, pattern, &amp;status);
 </pre>
-</li>
-</ol>
+<p>The return value defines whether retrieving the feedback information was successful.</p>
 
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
 <script type="text/javascript" src="../../scripts/showhide.js"></script>
index 33b9589..1d1aa31 100644 (file)
@@ -23,6 +23,7 @@
        <div id="toc_border"><div id="toc">
                <p class="toc-title">Content</p>
                <ul class="toc">
+                       <li><a href="#prerequisites">Prerequisites</a></li>
                        <li><a href="#get">Getting Runtime Information with a Key-Value Pair</a></li>
                        <li><a href="#get_function">Getting Runtime Information with a Function</a></li>
                        <li><a href="#monitor">Monitoring Runtime Information Changes</a>
@@ -47,6 +48,8 @@
   <h2>Warm-up</h2>
     <p>Become familiar with the Runtime information API basics by learning about:</p> 
                        <ul>
+       <li><a href="#prerequisites">Prerequisites</a>
+       <p>Prepare your application to use the runtime information functionality.</p></li>                      
        <li><a href="#get">Getting Runtime Information with a Key-Value Pair</a>
        <p>Retrieve a runtime information value using its key.</p></li>
        <li><a href="#get_function">Getting Runtime Information with a Function</a>
        <p>Register a callback function to monitor specific changes in the runtime information.</p>
        </li></ul>              
 
+<h2 id="prerequisites">Prerequisites</h2>
+
+<p>To use the functions and data types of the Runtime information API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__RUNTIME__INFO__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__RUNTIME__INFO__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;runtime_info.h&gt;</span> header file in your application:</p>
+<pre class="prettyprint">
+#include &lt;runtime_info.h&gt;
+</pre>
 
 <h2 id="get" name="get">Getting Runtime Information with a Key-Value Pair</h2>
 
 <p>Some runtime information consists of key and value pairs.</p>
 <p>To get information on, for example, whether Bluetooth is enabled or an audio jack connected:</p>
 <ol>
-<li><p>To use the functions and data types of the Runtime information API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__RUNTIME__INFO__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__RUNTIME__INFO__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;runtime_info.h&gt;</span> header file in your application:</p>
-<pre class="prettyprint">
-#include &lt;runtime_info.h&gt;
-</pre></li>
-
 <li>Check whether Bluetooth is enabled.
 <p>Use the <span style="font-family: Courier New,Courier,monospace">RUNTIME_INFO_KEY_BLUETOOTH_ENABLED</span> key  with the data type-specific get function.</p>
 <p>The Bluetooth enabled key data type is <span style="font-family: Courier New,Courier,monospace">bool</span>, which means that you need to use the <span style="font-family: Courier New,Courier,monospace">runtime_info_get_value_bool()</span> function.</p>
@@ -123,14 +127,7 @@ func(void)
 <h2 id="get_function" name="get_function">Getting Runtime Information with a Function</h2>
 
 <p>Some runtime information can be retrieved by using a function.</p>
-<p>To get information on, for example, the current frequency of the CPU core 0:</p>
-<ol>
-<li><p>To use the functions and data types of the Runtime information API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__RUNTIME__INFO__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__RUNTIME__INFO__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;runtime_info.h&gt;</span> header file in your application:</p>
-<pre class="prettyprint">
-#include &lt;runtime_info.h&gt;
-</pre></li>
-
-<li><p>Retrieve the CPU core frequency with the <span style="font-family: Courier New,Courier,monospace">runtime_info_get_processor_current_frequency()</span> function:</p>
+<p>To get information on, for example, the current frequency of the CPU core 0, retrieve the CPU core frequency with the <span style="font-family: Courier New,Courier,monospace">runtime_info_get_processor_current_frequency()</span> function:</p>
 
 <pre class="prettyprint">
 void
@@ -148,7 +145,7 @@ func(void)
 &nbsp;&nbsp;&nbsp;&nbsp;}
 &nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;The frequency of CPU core 0: %d&quot;, freq);
 }
-</pre></li></ol>
+</pre>
 
 <h2 id="monitor" name="monitor">Monitoring Runtime Information Changes</h2>
 
@@ -156,12 +153,7 @@ func(void)
 <p>To monitor, for example, the connection state of the USB cable:</p>
 
 <ol>
-<li><p>To use the functions and data types of the Runtime information API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__RUNTIME__INFO__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__RUNTIME__INFO__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;runtime_info.h&gt;</span> header file in your application:</p>
-<pre class="prettyprint">
-#include &lt;runtime_info.h&gt;
-</pre></li>
-<li><p>Use the <span style="font-family: Courier New,Courier,monospace">runtime_info_set_changed_cb()</span> function with the <span style="font-family: Courier New,Courier,monospace">RUNTIME_INFO_KEY_USB_CONNECTED</span> key to register a callback that is triggered each time the USB cable connection state changes.</p>
-<p>When no longer needed, deregister the callback with the <span style="font-family: Courier New,Courier,monospace">runtime_info_unset_changed_cb()</span> function.</p>
+<li>Use the <span style="font-family: Courier New,Courier,monospace">runtime_info_set_changed_cb()</span> function with the <span style="font-family: Courier New,Courier,monospace">RUNTIME_INFO_KEY_USB_CONNECTED</span> key to register a callback that is triggered each time the USB cable connection state changes:
 
 <pre class="prettyprint">
 #include &lt;stdbool.h&gt;
@@ -197,14 +189,18 @@ func(void)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Error handling */
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
 &nbsp;&nbsp;&nbsp;&nbsp;}
-
+</pre>
+</li>
+<li>When no longer needed, deregister the callback with the <span style="font-family: Courier New,Courier,monospace">runtime_info_unset_changed_cb()</span> function:
+<pre class="prettyprint">
 &nbsp;&nbsp;&nbsp;&nbsp;ret = runtime_info_unset_changed_cb(RUNTIME_INFO_KEY_USB_CONNECTED);
 &nbsp;&nbsp;&nbsp;&nbsp;if (ret != RUNTIME_INFO_ERROR_NONE) {
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Error handling */
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
 &nbsp;&nbsp;&nbsp;&nbsp;}
 }
-</pre></li></ol>
+</pre>
+</li></ol>
        
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
 <script type="text/javascript" src="../../scripts/showhide.js"></script>
index 0091f8a..5e397db 100644 (file)
@@ -23,6 +23,7 @@
        <div id="toc_border"><div id="toc">
                <p class="toc-title">Content</p>
                <ul class="toc">
+                       <li><a href="#prerequisites">Prerequisites</a></li>             
                        <li><a href="#retrieve">Retrieving a Sensor</a></li>
                        <li><a href="#event">Retrieving Sensor Details and Measurements</a></li>
                        <li><a href="#accuracy">Monitoring Accuracy Changes</a>
@@ -47,6 +48,8 @@
   <h2>Warm-up</h2>
     <p>Become familiar with the Sensor API basics by learning about:</p> 
        <ul>
+       <li><a href="#prerequisites">Prerequisites</a>
+       <p>Prepare your application to use the sensor functionality.</p></li>   
        <li><a href="#retrieve">Retrieving a Sensor</a>
        <p>Check the sensor support and retrieve the sensor.</p></li>
        <li><a href="#event">Retrieving Sensor Details and Measurements</a>
        <p>Create an event which is called when the accuracy is changed.</p>
        </li></ul>
 
+<h2 id="prerequisites">Prerequisites</h2>
+<p>To use the functions and data types of the Sensor API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__SENSOR__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__SENSOR__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;sensor.h&gt;</span> header file in your application:</p>
+<pre class="prettyprint">
+#include &lt;sensor.h&gt;
+</pre>
+
+       
 <h2 id="retrieve" name="retrieve">Retrieving a Sensor</h2>
 
 <p>To check whether a sensor is supported, and get a handle for the supported sensor:</p>
 
 <ol>
-<li>To use the functions and data types of the Sensor API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__SENSOR__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__SENSOR__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;sensor.h&gt;</span> header file in your application:
-<pre class="prettyprint">
-#include &lt;sensor.h&gt;
-</pre>
-</li>
 <li>To check whether a sensor is supported, use the <span style="font-family: Courier New,Courier,monospace">sensor_is_supported()</span> function:
 <pre class="prettyprint">
 int error;
@@ -102,11 +107,6 @@ free(list);
 <p>To access sensor details and measurements:</p>
 
 <ol>
-<li>To use the functions and data types of the Sensor API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__SENSOR__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__SENSOR__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;sensor.h&gt;</span> header file in your application:
-<pre class="prettyprint">
-#include &lt;sensor.h&gt;
-</pre>
-</li>
 <li>To create an event listener, use the <span style="font-family: Courier New,Courier,monospace">sensor_create_listener()</span> function:
 <pre class="prettyprint">
 sensor_h sensor;
@@ -199,11 +199,6 @@ error = sensor_destroy_listener(listener);
 <p>To monitor accuracy changes:</p>
 
 <ol>
-<li>To use the functions and data types of the Sensor API, include the <span style="font-family: Courier New,Courier,monospace">&lt;sensor.h&gt;</span> header file in your application:
-<pre class="prettyprint">
-#include &lt;sensor.h&gt;
-</pre>
-</li>
 <li>Create an event listener:
 <pre class="prettyprint">
 sensor_h sensor;
index 7d7156a..397c5ea 100644 (file)
@@ -23,6 +23,7 @@
        <div id="toc_border"><div id="toc">
                <p class="toc-title">Content</p>
                <ul class="toc">
+                       <li><a href="#prerequisites">Prerequisites</a></li>             
                        <li><a href="#memory">Retrieving Memory Sizes</a></li>
                        <li><a href="#storage">Retrieving Storage Information</a></li>
                        <li><a href="#state">Monitoring Storage State Changes</a></li>
@@ -46,6 +47,8 @@
   <h2>Warm-up</h2>
     <p>Become familiar with the Storage API basics by learning about:</p> 
        <ul>
+       <li><a href="#prerequisites">Prerequisites</a>
+       <p>Prepare your application to use the storage functionality.</p></li>  
        <li><a href="#memory">Retrieving Memory Sizes</a>
        <p>Use the statvfs wrapper to get internal and external memory sizes.</p></li>
        <li><a href="#storage">Retrieving Storage Information</a>
        <p>Retrieve information about the storage space.</p></li>
        </ul>
 
+<h2 id="prerequisites">Prerequisites</h2>
+<p>To use the functions and data types of the Storage API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__STORAGE__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__STORAGE__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;storage.h&gt;</span> header file in your application:</p>
+<pre class="prettyprint">
+#include &lt;storage.h&gt;
+</pre>
+
 <h2 id="memory" name="memory">Retrieving Memory Sizes</h2>
 
 <p>Use the statvfs wrapper to get memory sizes:</p>
-<ol>
-<li><p>To use the functions and data types of the Storage API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__STORAGE__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__STORAGE__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;storage.h&gt;</span> header file in your application:</p>
-<pre class="prettyprint">
-#include &lt;storage.h&gt;
-</pre></li>
-<li><p>To get memory sizes:</p>
 <ul>
 <li>Get the internal memory size with the <span style="font-family: Courier New,Courier,monospace;">storage_get_internal_memory_size()</span> function.
 <p>The function returns the internal memory size. Use it instead of the statvfs function when you need the internal memory size.</p>
@@ -87,20 +90,12 @@ struct statvfs s;
 error = storage_get_external_memory_size(&amp;s);
 </pre></li>
 </ul>
-</li>
-</ol>  
 
 <h2 id="storage" name="storage">Retrieving Storage Information</h2>
 
 <p>Files saved on the internal or external storage are readable or writeable by all applications. When an application is uninstalled, the files written by that application are not removed from the internal or external storage.</p>
 
 <p>To retrieve storage information:</p>
-<ol>
-<li><p>To use the functions and data types of the Storage API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__STORAGE__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__STORAGE__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;storage.h&gt;</span> header file in your application:</p>
-<pre class="prettyprint">
-#include &lt;storage.h&gt;
-</pre></li>
-<li><p>To retrieve storage information:</p>
 <ul>
 <li>Retrieve all storages in a device using the <span style="font-family: Courier New,Courier,monospace;">storage_foreach_device_supported()</span> function.
 
@@ -172,17 +167,12 @@ int error;
 storage_state_e state;
 error = storage_get_state(internal_storage_id, &amp;state);
 </pre></li></ul>
-</li></ol>
 
 <h2 id="state" name="state">Monitoring Storage State Changes</h2>
 
 <p>To monitor storage state changes:</p>
 
 <ol>
-<li><p>To use the functions and data types of the Storage API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__STORAGE__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__STORAGE__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;storage.h&gt;</span> header file in your application:</p>
-<pre class="prettyprint">
-#include &lt;storage.h&gt;
-</pre></li>
 <li>Define a callback, which is called when the storage state changes:
 <pre class="prettyprint">
 static void
@@ -212,13 +202,6 @@ error = storage_unset_state_changed_cb(internal_storage_id, storage_changed_cb);
 <h2 id="space" name="space">Retrieving Storage Space Information</h2>
 
 <p>To retrieve storage space information:</p>
-
-<ol>
-<li><p>To use the functions and data types of the Storage API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__STORAGE__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__STORAGE__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;storage.h&gt;</span> header file in your application:</p>
-<pre class="prettyprint">
-#include &lt;storage.h&gt;
-</pre></li>
-<li><p>To retrieve the storage space details:</p>
 <ul>
 <li>Get the total space of the storage using the <span style="font-family: Courier New,Courier,monospace;">storage_get_total_space()</span> function.
 <p>The function returns the total space of the given storage in bytes. It invokes the <span style="font-family: Courier New,Courier,monospace;">storage_get_internal_memory_size()</span> or <span style="font-family: Courier New,Courier,monospace;">storage_get_external_memory_size()</span> function internally.</p>
@@ -238,8 +221,7 @@ int error;
 unsigned long long bytes;
 error = storage_get_available_space(internal_storage_id, &amp;bytes);
 </pre></li>
-</ul></li>
-</ol>
+</ul>
 
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
 <script type="text/javascript" src="../../scripts/showhide.js"></script>
index 232dc91..398d346 100644 (file)
@@ -23,6 +23,7 @@
        <div id="toc_border"><div id="toc">
                <p class="toc-title">Content</p>
                <ul class="toc">
+                       <li><a href="#prerequisites">Prerequisites</a></li>             
                        <li><a href="#model">Getting the Device Model Name</a></li>
                        <li><a href="#check">Checking for Supported Features</a>
                        </li>
   <h2>Warm-up</h2>
     <p>Become familiar with the System Information API basics by learning about:</p>
                        <ul>
+<li><a href="#prerequisites">Prerequisites</a>
+<p>Prepare your application to use the system information functionality.</p></li>
 <li><a href="#model">Getting the Device Model Name</a>                 
 <p>Get the model name of the device.</p></li>
 <li><a href="#check">Checking for Supported Features</a>
  <p>Check whether the device provides a camera.</p></li>
        </ul>
 
-<h2 id="model" name="model">Getting the Device Model Name</h2>
-
-<p>To get the device model name:</p><ol>       
-<li><p>To use the functions and data types of the System Information API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__SYSTEM__INFO__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__SYSTEM__INFO__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;system_info.h&gt;</span> header file in your application:</p>
+<h2 id="prerequisites">Prerequisites</h2>
+<p>To use the functions and data types of the System Information API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__SYSTEM__INFO__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__SYSTEM__INFO__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;system_info.h&gt;</span> header file in your application:</p>
 <pre class="prettyprint">
 #include &lt;system_info.h&gt;
-</pre></li>
-<li><p>Device-specific information consists of &quot;key, value&quot; pairs. To get the device model name, use the <span style="font-family: Courier New,Courier,monospace;">http://tizen.org/system/model_name</span> key with the data type-specific get function.</p>
+</pre>
+
+<h2 id="model" name="model">Getting the Device Model Name</h2>
+
+<p>Device-specific information consists of &quot;key, value&quot; pairs. To get the device model name, use the <span style="font-family: Courier New,Courier,monospace;">http://tizen.org/system/model_name</span> key with the data type-specific get function.</p>
 <p>The model name key data type is <span style="font-family: Courier New,Courier,monospace;">string</span>, which means that you need to use the <span style="font-family: Courier New,Courier,monospace;">system_info_get_platform_string()</span> function.</p>
 <p>When no longer needed, release the value of the key with the <span style="font-family: Courier New,Courier,monospace;">free()</span> function.</p>
  
@@ -81,17 +85,11 @@ func(void)
 
 &nbsp;&nbsp;&nbsp;&nbsp;free(value); /* Release after use */
 }
-</pre></li></ol>
+</pre>
 
 <h2 id="check" name="check">Checking for Supported Features</h2>
 
-<p>To check, for example, whether the device provides a camera:</p>
-<ol>
-<li><p>To use the functions and data types of the System Information API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__SYSTEM__INFO__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__SYSTEM__INFO__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;system_info.h&gt;</span> header file in your application:</p>
-<pre class="prettyprint">
-#include &lt;system_info.h&gt;
-</pre></li>
-<li><p>To determine whether the device has a camera, use the <span style="font-family: Courier New,Courier,monospace;">http://tizen.org/feature/camera</span> key with the data type-specific get function.</p>
+<p>To determine, for example, whether the device has a camera, use the <span style="font-family: Courier New,Courier,monospace;">http://tizen.org/feature/camera</span> key with the data type-specific get function.</p>
 <p>The camera key data type is <span style="font-family: Courier New,Courier,monospace;">bool</span>, which means that you need to use the <span style="font-family: Courier New,Courier,monospace;">system_info_get_platform_bool()</span> function.</p>
 
 <pre class="prettyprint">
@@ -112,7 +110,7 @@ func(void)
 
 &nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;Camera: %s&quot;, value ? &quot;Supported&quot; : &quot;Not supported&quot;);
 }
-</pre></li></ol>
+</pre>
 
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
 <script type="text/javascript" src="../../scripts/showhide.js"></script>
index 9c209e1..f7f95f7 100644 (file)
@@ -23,6 +23,7 @@
        <div id="toc_border"><div id="toc">
                <p class="toc-title">Content</p>
                <ul class="toc">
+                       <li><a href="#prerequisites">Prerequisites</a></li>             
                        <li><a href="#settings">Managing System Settings</a>
                        </li>
                </ul>
   <h2>Warm-up</h2>
     <p>Become familiar with the System Settings API basics by learning about:</p>
        <ul>
+       <li><a href="#prerequisites">Prerequisites</a>
+       <p>Prepare your application to use the system settings functionality.</p></li>
        <li><a href="#settings">Managing System Settings</a>
        <p>Obtain and monitor system setting values.</p>
        </li>
        </ul>
 
+<h2 id="prerequisites">Prerequisites</h2>
+<p>To use the functions and data types of the System Settings API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__SYSTEM__SETTINGS__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__SYSTEM__SETTINGS__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;system_settings.h&gt;</span> header file in your application:</p>
+<pre class="prettyprint">
+#include &lt;system_settings.h&gt;
+</pre>
+
 <h2 id="settings" name="settings">Managing System Settings</h2>
 
        <p>To manage system settings, which provide access to system variables:</p>
 <ol>
-<li><p>To use the functions and data types of the System Settings API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__SYSTEM__SETTINGS__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__SYSTEM__SETTINGS__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;system_settings.h&gt;</span> header file in your application:</p>
-<pre class="prettyprint">
-#include &lt;system_settings.h&gt;
-</pre></li>
-
 <li><p>Define auxiliary structures:</p>
 
 <pre class="prettyprint">
index 9cae8bf..af3fc5e 100644 (file)
        <div id="toc_border"><div id="toc">
                <p class="toc-title">Content</p>
                <ul class="toc">
-                       <li><a href="#init">Initializing Tracing</a>
-                       </li>
-                       <li><a href="#insert">Inserting Tracepoints</a>
-                       </li>
+                       <li><a href="#prerequisites">Prerequisites</a></li>
+                       <li><a href="#insert">Inserting Tracepoints</a></li>
                </ul>
                <p class="toc-title">Related Info</p>
                <ul class="toc">
   <h2>Warm-up</h2>
     <p>Become familiar with the T-trace API basics by learning about:</p> 
                        <ul>
-                       <li><a href="#init">Initializing Tracing</a>
-                       <p>Initialize tracing for use.</p></li>
+               <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the T-trace functionality.</p></li>
                        <li><a href="#insert">Inserting Tracepoints</a>
                        <p>Create custom tracepoints in your application.</p></li>
        </ul>
 
-<h2 id="init" name="init">Initializing Tracing</h2>
+<h2 id="prerequisites">Prerequisites</h2>
 
-<p>To initialize tracing:</p>
+<p>To enable your application to use the T-trace functionality:</p>
 <ol>
 <li>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__TRACE__MODULE.html">T-trace</a> API, include the <span style="font-family: Courier New,Courier,monospace">&lt;trace.h&gt;</span> header file in your application:
 <pre class="prettyprint">
index 1a10f56..c070ac6 100644 (file)
@@ -23,7 +23,7 @@
        <div id="toc_border"><div id="toc">
                <p class="toc-title">Content</p>
                <ul class="toc">
-                       <li><a href="#init">Initializing the Phonenumber Utility</a></li>
+                       <li><a href="#prerequisites">Prerequisites</a></li>
                        <li><a href="#get">Getting the Location</a></li>
                        <li><a href="#format">Formatting the Number</a></li>
                        <li><a href="#normalise">Normalizing the Number</a></li>
@@ -45,8 +45,8 @@
 <h2>Warm-up</h2>
 <p>Become familiar with the Phonenumber utils API basics by learning about:</p>
        <ul>
-               <li><a href="#init">Initializing the Phonenumber Utility</a>
-               <p>Initialize the phonenumber utility for use.</p></li>
+               <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the phonenumber utils functionality.</p></li>
                <li><a href="#get">Getting the Location</a>
                <p>Get the location from the phone number based on the region and language.</p></li>
                <li><a href="#format">Formatting the Number</a>
@@ -56,9 +56,9 @@
        </ul>
 
        
- <h2 id="init" name="init">Initializing the Phonenumber Utility</h2>
+<h2 id="prerequisites">Prerequisites</h2>
 
-<p>To connect to the phonenumber utils service:</p>
+<p>To enable your application to use the phonenumber utils functionality:</p>
 
 <ol>
 
@@ -74,9 +74,7 @@
 int error_code;
 error_code = phone_number_connect();
 </pre>
-
-</li>
-<li><p>When the service is no longer needed, disconnect from it using the <span style="font-family: Courier New,Courier,monospace">phone_number_disconnect()</span> function:</p>
+<p>When the service is no longer needed, disconnect from it using the <span style="font-family: Courier New,Courier,monospace">phone_number_disconnect()</span> function:</p>
 
 <pre class="prettyprint">
 error_code = phone_number_disconnect();
index 9bb4b90..fb57651 100644 (file)
@@ -24,7 +24,6 @@
                <p class="toc-title">Content</p>
                <ul class="toc">
                        <li><a href="#prerequisites">Prerequisites</a></li>
-                       <li><a href="#init">Initializing the Telephony Service</a></li>
                        <li><a href="#call">Getting Call Information</a></li>
                        <li><a href="#sim">Getting SIM Card Information</a></li>
                        <li><a href="#network">Getting Network Information</a></li>
@@ -50,8 +49,8 @@
 <p>Become familiar with the Telephony Information API basics by learning about:</p>
 
 <ul>
-       <li><a href="#init">Initializing the Telephony Service</a>
-       <p>Initialize telephony for use.</p></li>
+       <li><a href="#prerequisites">Prerequisites</a>
+       <p>Prepare your application to use the telephony information functionality.</p></li>
        <li><a href="#call">Getting Call Information</a>
        <p>Access call information and track changes in the call state.</p></li>
        <li><a href="#sim">Getting SIM Card Information</a>
 
 <h2 id="prerequisites" name="prerequisites">Prerequisites</h2>
 
-<p>To use the Telephony API, the application has to request permission by adding the following privileges to the <span style="font-family: Courier New,Courier,monospace">tizen-manifest.xml</span> file:</p>
+<p>To enable your application to use the telephony information functionality:</p>
+<ol>
+<li>
+<p>To use the Telephony Information API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__TELEPHONY__INFORMATION.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__TELEPHONY__INFORMATION.html">wearable</a> applications), the application has to request permission by adding the following privileges to the <span style="font-family: Courier New,Courier,monospace">tizen-manifest.xml</span> file:</p>
 <pre class="prettyprint">
 &lt;privileges&gt;
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/telephony&lt;/privilege&gt;
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/location.coarse&lt;/privilege&gt;
 &lt;/privileges&gt;
 </pre>
-
-
- <h2 id="init" name="init">Initializing the Telephony Service</h2>
-
-               
-<p>In a multi-SIM scenario, you must define which subscription (SIM1 or SIM2) you need, in case the application is related to calling, networks, modems, or SIM cards. Telephony provides a function to create handles for different subscriptions.</p>
-<p>To initialize the telephony service:</p>    
-<ol>
+</li>
 <li>                   
-<p>To use the functions and data types of the Telephony Information API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__TELEPHONY__INFORMATION.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__TELEPHONY__INFORMATION.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;telephony.h&gt;</span> header file in your application:</p>
+<p>To use the functions and data types of the Telephony Information API, include the <span style="font-family: Courier New,Courier,monospace">&lt;telephony.h&gt;</span> header file in your application:</p>
 <pre class="prettyprint">
 #include &lt;telephony.h&gt;
 </pre></li>    
@@ -98,7 +93,7 @@ typedef struct _telephony_handle_list_s telephony_handle_list_s;
 </li>
 <li>
 <p>Get the telephony handle with the <span style="font-family: Courier New,Courier,monospace">telephony_init()</span> function. Pass the <span style="font-family: Courier New,Courier,monospace">telephony_handle_list_s</span> structure pointer as a parameter to get the telephony handles for all subscriptions.</p>
-<p>For example, there are 2 handles in a dual SIM device. In this case, <span style="font-family: Courier New,Courier,monospace">handle[0]</span> means the primary SIM and <span style="font-family: Courier New,Courier,monospace">handle[1]</span> means the secondary SIM. You can send requests to specific subscriptions using the telephony handle for that subscription.</p>
+<p>In a multi-SIM scenario, you must define which subscription (SIM1 or SIM2) you need, in case the application is related to calling, networks, modems, or SIM cards. The telephony feature provides a function to create handles for different subscriptions. For example, there are 2 handles in a dual SIM device. In this case, <span style="font-family: Courier New,Courier,monospace">handle[0]</span> means the primary SIM and <span style="font-family: Courier New,Courier,monospace">handle[1]</span> means the secondary SIM. You can send requests to specific subscriptions using the telephony handle for that subscription.</p>
 <pre class="prettyprint">
 telephony_handle_list_s handle_list;
 
index 6eefe34..905229c 100644 (file)
@@ -23,7 +23,7 @@
   <div id="toc_border"><div id="toc">
     <p class="toc-title">Content</p>
     <ul class="toc">
-      <li><a href="#init">Initializing the EOM</a></li>
+      <li><a href="#prerequisites">Prerequisites</a></li>
          <li><a href="#getid">Getting the Output ID</a></li>
          <li><a href="#presentation">Setting the Presentation Mode</a></li>
          <li><a href="#setwin">Setting the External Window</a></li>
@@ -46,8 +46,8 @@
   <h2>Warm-up</h2>
   <p>Become familiar with the External Output Manager API basics by learning about:</p>
   <ul>
-  <li><a href="#init">Initializing the EOM</a>
-    <p>Initialize the external output for use.</p></li>
+  <li><a href="#prerequisites">Prerequisites</a>
+       <p>Prepare your application to use the EOM functionality.</p></li>
   <li><a href="#getid">Getting the Output ID</a>
     <p>Obtain the output ID and control the external window.</p></li>
   <li><a href="#presentation">Setting the Presentation Mode</a>
@@ -59,8 +59,9 @@
   </ul>
 
   
-      <h2 id="init" name="init">Initializing the EOM</h2>
-<p>To initialize EOM:</p>
+<h2 id="prerequisites">Prerequisites</h2>
+
+<p>To enable your application to use the EOM functionality:</p>
 <ol>
 <li>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__UI__EOM__MODULE.html">External Output Manager</a> API, include the <span style="font-family: Courier New,Courier,monospace">&lt;eom.h&gt;</span> header file in your application:
 <pre class="prettyprint">
index 22d1abc..d9d35a9 100644 (file)
@@ -23,6 +23,7 @@
        <div id="toc_border"><div id="toc">
                <p class="toc-title">Content</p>
                <ul class="toc">
+                       <li><a href="#prerequisites">Prerequisites</a></li>
                        <li><a href="#create">Creating a Minicontrol on the Quick Panel</a></li>
                        <li><a href="#hide">Hiding the Quick Panel</a></li>
                </ul>           
 <h2>Warm-up</h2>
 <p>Become familiar with the Minicontrol API basics by learning about:</p>
        <ul>
+               <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the minicontrol functionality.</p></li>      
                <li><a href="#create">Creating a Minicontrol on the Quick Panel</a>
                <p>Create a minicontrol on the quick panel.</p></li>
-       </ul>
-       <ul>
                <li><a href="#hide">Hiding the Quick Panel</a>
                <p>Send a request for hiding the quick panel.</p></li>
        </ul>
 
-<h2 id="create" name="create">Creating a Minicontrol on the Quick Panel</h2>
-
-<p>To create a minicontrol of your application:</p>
+<h2 id="prerequisites">Prerequisites</h2>
 
+<p>To enable your application to use the minicontrol functionality:</p>
 <ol>
-<li><p>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__MINICONTROL__LIBRARY.html">Minicontrol</a> API, include the <span style="font-family: Courier New,Courier,monospace">&lt;minicontrol_provider.h&gt;</span> header file in your application:</p>
+<li>To use the <a href="../../../../org.tizen.native.mobile.apireference/group__MINICONTROL__LIBRARY.html">Minicontrol</a> API, the application has to request permission by adding the following privilege to the <span style="font-family: Courier New,Courier,monospace">tizen-manifest.xml</span> file:
+<pre class="prettyprint">
+&lt;privileges&gt;
+&nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/minicontrol.provider&lt;/privilege&gt;
+&lt;/privileges&gt;
+</pre>
+</li>
+<li>
+<p>To use the functions and data types of the Minicontrol API, include the <span style="font-family: Courier New,Courier,monospace">&lt;minicontrol_provider.h&gt;</span> header file in your application:</p>
 <pre class="prettyprint">
 #include &lt;minicontrol_provider.h&gt;
 </pre>
 </li>
+</ol>
+
+<h2 id="create" name="create">Creating a Minicontrol on the Quick Panel</h2>
+
+<p>To create a minicontrol of your application:</p>
+
+<ol>
 <li><p>To create a minicontrol, use the <span style="font-family: Courier New,Courier,monospace">minicontrol_create_window()</span> function.</p>
 <p>To create a minicontrol on the quick panel, the second parameter must be set to <span style="font-family: Courier New,Courier,monospace">MINICONTROL_TARGET_VIEWER_QUICK_PANEL</span>.</p>
 <pre class="prettyprint">
index a16e7e6..0c339e6 100644 (file)
@@ -52,6 +52,8 @@
   <h2>Warm-up</h2>
   <p>Become familiar with the Input Method API basics by learning about:</p>
   <ul>
+  <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the input method functionality.</p></li>
   <li><a href="#start">Starting the IME Life-cycle</a>
     <p>Start the IME application life-cycle.</p></li>
   <li><a href="#callback">Adding Event Callbacks</a>
          <li><a href="#selector">Showing the IME Selector</a>
                <p>Open the IME selector menu to show the enabled IMEs to allow the user to select the default keyboard.</p></li>
          <li><a href="#enable">Checking the IME State</a>
-               <p>Check whether a specific IME is enabled, and which IME is currently selected as the default keyboard.</p></li>
+               <p>Check whether a specific IME is enabled, which IME is currently selected as the default keyboard, and how many IMEs are enabled (usable).</p></li>
          </ul> 
        </li>  
   </ul>
 
 <h2 id="prerequisites">Prerequisites</h2>
 
-<p>To use the Input Method Manager API, the application has to request permission by adding the following privilege to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>
+<p>To enable your application to use the input method functionality:</p>
+<ol>
+
+<li>
+<p>To use the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__UIX__INPUTMETHOD__MANAGER__MODULE.html">Input Method Manager</a> API, the application has to request permission by adding the following privilege to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>
 <pre class="prettyprint">
 &lt;privileges&gt;
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/imemanager&lt;/privilege&gt;
 &lt;/privileges&gt;
 </pre>
+</li>
+<li>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__UIX__INPUTMETHOD__MODULE.html">Input Method</a> API, include the <span style="font-family: Courier New,Courier,monospace">&lt;inputmethod.h&gt;</span> header file in your application:
+<pre class="prettyprint">
+#include &lt;inputmethod.h&gt;
 
+#include &lt;Elementary.h&gt;
+</pre>
+</li>
+<li>To use the functions and data types of the Input Method Manager API, include the <span style="font-family: Courier New,Courier,monospace">&lt;inputmethod_manager.h&gt;</span> header file in your application:
+<pre class="prettyprint">
+#include &lt;inputmethod_manager.h&gt;
+</pre>
+</li>
+</ol>
       <h2 id="start" name="start">Starting the IME Life-cycle</h2>
 <p>To start the IME application life-cycle:</p>
 <ol>
@@ -105,9 +124,6 @@ int ime_run(ime_callback_s *basic_cb, void *user_data);
 <p>Add the callbacks to the <a href="../../../../org.tizen.native.mobile.apireference/structime__callback__s.html">ime_callback_s</a> structure, and pass the structure as a parameter to the <span style="font-family: Courier New,Courier,monospace">ime_run()</span> function:</p> 
 
 <pre class="prettyprint">
-#include &lt;Elementary.h&gt;
-#include &lt;inputmethod.h&gt;
-
 static void create(void *user_data);
 static void terminate(void *user_data);
 static void show(int context_id, ime_context_h context, void *user_data);
@@ -322,15 +338,7 @@ option_window_destroyed(Evas_Object *window, void *user_data)
  
       <h2 id="list" name="list">Showing the IME List</h2>
          
-<p>To launch the IME list menu to show the installed IMEs:</p>
-
-<ol>
-<li>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__UIX__INPUTMETHOD__MANAGER__MODULE.html">Input Method Manager</a> API, include the <span style="font-family: Courier New,Courier,monospace">&lt;inputmethod_manager.h&gt;</span> header file in your application:
-<pre class="prettyprint">
-#include &lt;inputmethod_manager.h&gt;
-</pre>
-</li>
-<li>Open the IME list menu with the <span style="font-family: Courier New,Courier,monospace">ime_manager_show_ime_list()</span> function:
+<p>To launch the IME list menu to show the installed IMEs, use the <span style="font-family: Courier New,Courier,monospace">ime_manager_show_ime_list()</span> function:</p>
 
 <pre class="prettyprint">
 void
@@ -343,19 +351,11 @@ show_ime_list()
 </pre>
 
 <p>If the menu opens successfully, the function returns 0.</p>
-</li></ol>
+
 
       <h2 id="selector" name="selector">Showing the IME Selector</h2>
          
-<p>To launch the IME selector menu to allow the user to select the default keyboard:</p>
-
-<ol>
-<li>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__UIX__INPUTMETHOD__MANAGER__MODULE.html">Input Method Manager</a> API, include the <span style="font-family: Courier New,Courier,monospace">&lt;inputmethod_manager.h&gt;</span> header file in your application:
-<pre class="prettyprint">
-#include &lt;inputmethod_manager.h&gt;
-</pre>
-</li>
-<li>Open the IME selector menu with the <span style="font-family: Courier New,Courier,monospace">ime_manager_show_ime_selector()</span> function:
+<p>To launch the IME selector menu to allow the user to select the default keyboard, use the <span style="font-family: Courier New,Courier,monospace">ime_manager_show_ime_selector()</span> function:</p>
 
 <pre class="prettyprint">
 void
@@ -368,13 +368,13 @@ show_ime_selector()
 </pre>
 
 <p>If the menu opens successfully, the function returns 0.</p>
-</li></ol>
+
 
       <h2 id="enable" name="enable">Checking the IME State</h2>
          
-<p>To check the current default keyboard or whether a specific IME is enabled or to get the number of IMEs which are enabled (usable):</p>
+<p>To check the current default keyboard or whether a specific IME is enabled, or to get the number of enabled (usable) IMEs:</p>
 
-<ol>
+<ul>
 <li>To check whether a specific IME is enabled, call the <span style="font-family: Courier New,Courier,monospace">ime_manager_is_ime_enabled()</span> function. The first parameter is the application ID of the IME whose status you want to check.
 
 <pre class="prettyprint">
@@ -410,27 +410,28 @@ get_active_ime()
 
 <p>If the function is successful, it returns 0.</p>
 </li>
-<li>To get the number of IMEs which are enabled (usable), call the <span style="font-family: Courier New,Courier,monospace">ime_manager_get_enabled_ime_count()</span> function:
+
+<li>To get the number of enabled (usable) IMEs, call the <span style="font-family: Courier New,Courier,monospace">ime_manager_get_enabled_ime_count()</span> function:
 
 <pre class="prettyprint">
-int get_enabled_ime_count()
+int
+get_enabled_ime_count()
 {
-&nbsp;&nbsp;&nbsp;int count = ime_manager_get_enabled_ime_count();
-&nbsp;&nbsp;&nbsp;if (count == 0)
-&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (get_last_result() != IME_MANAGER_ERROR_NONE)
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
-&nbsp;&nbsp;&nbsp;}
-&nbsp;&nbsp;&nbsp;// Take action
+&nbsp;&nbsp;&nbsp;&nbsp;int count = ime_manager_get_enabled_ime_count();
+&nbsp;&nbsp;&nbsp;&nbsp;if (count == 0) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (get_last_result() != IME_MANAGER_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Error handling */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;/* Take action */
 
 &nbsp;&nbsp;&nbsp;return count;
 }
 </pre>
 
-<p>If the function is successful, it returns the number of enabled IMEs. Otherwise 0.</p>
-</li></ol>
+<p>If the function is successful, it returns the number of enabled IMEs. Otherwise, 0.</p>
+</li>
+</ul>
   
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
 <script type="text/javascript" src="../../scripts/showhide.js"></script>
index 9a3e89b..a70361c 100644 (file)
@@ -23,7 +23,7 @@
        <div id="toc_border"><div id="toc">
                <p class="toc-title">Content</p>
                <ul class="toc">
-                       <li><a href="#init">Initializing the STT</a></li>
+                       <li><a href="#prerequisites">Prerequisites</a></li>
                        <li><a href="#set">Setting and Unsetting Callbacks</a></li>
                        <li><a href="#get">Getting Information</a></li>
                        <li><a href="#prepare">Connecting and Disconnecting the STT</a></li>
@@ -49,8 +49,8 @@
 <h2>Warm-up</h2>
 <p>Become familiar with the STT API basics by learning about:</p>
        <ul>
-               <li><a href="#init">Initializing the STT</a>
-               <p>Create an STT handle to use the STT library.</p></li>
+               <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the STT functionality.</p></li>
 
                <li><a href="#set">Setting and Unsetting Callbacks</a>
                <p>Set and unset callbacks for obtaining notifications about recognition results, state changes, and errors.</p></li>
                <p>Set the options and control recording for the STT.</p></li>
        </ul>
 
-<h2 id="init" name="init">Initializing the STT</h2>
+<h2 id="prerequisites">Prerequisites</h2>
 
-<p>To initialize the STT:</p>
-<ol><li>To use the functions and data types of the STT (speech-to-text) API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__UIX__STT__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__UIX__STT__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;stt.h&gt;</span> header file in your application:
+<p>To enable your application to use the STT functionality:</p>
+<ol>
+<li>To use the functions and data types of the STT (speech-to-text) API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__UIX__STT__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__UIX__STT__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;stt.h&gt;</span> header file in your application:
 <pre class="prettyprint">
 #include &lt;stt.h&gt;
 </pre>
index cfed190..db1ff25 100644 (file)
@@ -23,9 +23,9 @@
        <div id="toc_border"><div id="toc">
                <p class="toc-title">Content</p>
                <ul class="toc">
+               <li><a href="#prerequisites">Prerequisites</a></li>
                        <li>Set-up
                                <ul class="toc">
-                                       <li><a href="#init">Initializing the TTS</a></li>
                                        <li><a href="#set">Setting and Unsetting Callbacks</a></li>
                                        <li><a href="#get">Getting Information</a></li>
                                        <li><a href="#mode">Getting and Setting the Mode</a></li>
 <h2>Warm-up</h2>
 <p>Become familiar with the TTS API basics by learning about:</p>
 <ul>
+<li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the TTS functionality.</p></li>
 <li>Set-up
        <ul>
-               <li><a href="#init">Initializing the TTS</a>
-               <p>Create a TTS handle to use the TTS library.</p></li>
+               
                
                <li><a href="#set">Setting and Unsetting Callbacks</a>
                <p>Set and unset callbacks for obtaining notifications, such as when playing an utterance is started or completed.</p></li>
 <p>Start, pause, and stop the TTS playback.</p></li>
 </ul>
 
-<h2 id="init" name="init">Initializing the TTS</h2>
+<h2 id="prerequisites">Prerequisites</h2>
 
-<p>To initialize the TTS:</p>
-<ol><li>To use the functions and data types of the TTS (text-to-speech) API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__UIX__TTS__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__UIX__TTS__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;tts.h&gt;</span> header file in your application:
+<p>To enable your application to use the TTS functionality:</p>
+<ol>
+<li>To use the functions and data types of the TTS (text-to-speech) API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__UIX__TTS__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__UIX__TTS__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;tts.h&gt;</span> header file in your application:
 <pre class="prettyprint">
 #include &lt;tts.h&gt;
 </pre>
index 321f877..6914c45 100644 (file)
@@ -23,7 +23,7 @@
   <div id="toc_border"><div id="toc">
     <p class="toc-title">Content</p>
     <ul class="toc">
-      <li><a href="#init">Initializing the Voice Control</a></li>
+      <li><a href="#prerequisites">Prerequisites</a></li>
          <li><a href="#callback">Monitoring Language Changes</a></li>
          <li><a href="#info">Retrieving Voice Control Information</a></li>
          <li><a href="#command_hint">Managing Commands and Hints</a></li>
@@ -45,8 +45,8 @@
   <h2>Warm-up</h2>
   <p>Become familiar with the Voice control elementary API basics by learning about:</p>
   <ul>
-  <li><a href="#init">Initializing the Voice Control</a>
-    <p>Initialize the Voice control elementary library and create a handle.</p></li>
+  <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the voice control elementary functionality.</p></li>
   <li><a href="#callback">Monitoring Language Changes</a>
     <p>Set and unset a callback to get notifications when the system or application language changes.</p></li>
   <li><a href="#info">Retrieving Voice Control Information</a>
@@ -56,8 +56,9 @@
   </ul>
 
   
-      <h2 id="init" name="init">Initializing the Voice Control</h2>
-<p>To initialize the Voice control elementary library and create a handle:</p>
+<h2 id="prerequisites">Prerequisites</h2>
+
+<p>To enable your application to use the voice control elementary functionality:</p>
 <ol>
 <li>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__VOICE__CONTROL__ELEMENTARY__MODULE.html">Voice control elementary</a> API, include the <span style="font-family: Courier New,Courier,monospace">&lt;voice_control_elm.h&gt;</span> header file in your application:
 <pre class="prettyprint">
index 12975c5..67edb0d 100644 (file)
@@ -23,7 +23,7 @@
   <div id="toc_border"><div id="toc">
     <p class="toc-title">Content</p>
     <ul class="toc">
-      <li><a href="#init">Initializing the Voice Control</a></li>
+      <li><a href="#prerequisites">Prerequisites</a></li>
          <li><a href="#callback">Managing Callbacks</a></li>
          <li><a href="#info">Retrieving Voice Control Information</a></li>
          <li><a href="#commands">Managing Commands</a></li>
@@ -45,8 +45,8 @@
   <h2>Warm-up</h2>
   <p>Become familiar with the Voice control API basics by learning about:</p>
   <ul>
-  <li><a href="#init">Initializing the Voice Control</a>
-    <p>Initialize and prepare the voice control for use.</p></li>
+  <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the voice control functionality.</p></li>
   <li><a href="#callback">Managing Callbacks</a>
     <p>Set and unset callbacks to get notifications about recognition results, state changes, and errors.</p></li>
   <li><a href="#info">Retrieving Voice Control Information</a>
   </ul>
 
   
-      <h2 id="init" name="init">Initializing the Voice Control</h2>
-<p>To initialize and prepare the voice control for use:</p>
+<h2 id="prerequisites">Prerequisites</h2>
+
+<p>To enable your application to use the voice control functionality:</p>
 <ol>
-<li>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__UIX__VOICE__CONTROL__MODULE.html">Voice control</a> API, include the <span style="font-family: Courier New,Courier,monospace">&lt;voice_control.h&gt;</span> header file in your application:
+
+<li>
+<p>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__UIX__VOICE__CONTROL__MODULE.html">Voice control</a> API, include the <span style="font-family: Courier New,Courier,monospace">&lt;voice_control.h&gt;</span> header file in your application:</p>
 <pre class="prettyprint">
 #include &lt;voice_control.h&gt;
 </pre>
index bc0ca22..d2d8768 100644 (file)
@@ -24,8 +24,6 @@
                <p class="toc-title">Content</p>
                <ul class="toc">
                        <li><a href="#prerequisites">Prerequisites</a></li>
-                       <li><a href="#init">Initializing the EWK WebKit</a>
-                       </li>
                        <li><a href="#window">Creating a Window Object</a>
                        </li>
                        <li><a href="#layout">Setting the Window Layout and View</a>
@@ -58,8 +56,8 @@
 
 <p>Become familiar with the Web API basics by learning about:</p>
        <ul>
-               <li><a href="#init">Initializing the EFL WebKit</a>
-               <p>Initialize the EFL WebKit (EWK) for use.</p></li>
+               <li><a href="#prerequisites">Prerequisites</a>
+               <p>Prepare your application to use the Web functionality.</p></li>
                <li><a href="#window">Creating a Window Object</a>
                <p>Create a window object.</p></li>
                <li><a href="#layout">Setting the Window Layout and View</a>
 
 <h2 id="prerequisites">Prerequisites</h2>
 
-<p>To use the Web API, the application has to request permission by adding the following privileges to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>
+<p>To enable your application to use the Web functionality:</p>
+<ol>
+<li>
+<p>To use the Web API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__WEB__FRAMEWORK.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__WEB__FRAMEWORK.html">wearable</a> applications), the application has to request permission by adding the following privileges to the <span style="font-family: Courier New,Courier,monospace;">tizen-manifest.xml</span> file:</p>
 <pre class="prettyprint">
 &lt;privileges&gt;
 &nbsp;&nbsp;&nbsp;&lt;!--To launch another application conditionally--&gt;
 &nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/network.get&lt;/privilege&gt;
 &lt;/privileges&gt;
 </pre>
-       
- <h2 id="init" name="init">Initializing the EWK WebKit</h2>
-
-<p>To initialize the EWK WebKit:</p>
-<ol><li>To use the functions and data types of the WebView API (in <a href="../../../../org.tizen.native.mobile.apireference/group__WEBVIEW.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__WEBVIEW.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;EWebKit.h&gt;</span> header file in your application:
+</li>
+<li>To use the functions and data types of the WebView API (in <a href="../../../../org.tizen.native.mobile.apireference/group__WEBVIEW.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__WEBVIEW.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;EWebKit.h&gt;</span> header file in your application:
 <pre class="prettyprint">
 #include &lt;Ecore.h&gt;
 #include &lt;Ecore_Evas.h&gt;
index 4d392a1..9468c6c 100644 (file)
@@ -95,6 +95,7 @@
                <topic href="html/native/network/curl_tutorial_n.htm" label="Curl"></topic>
                <topic href="html/native/network/iotcon_tutorial_n.htm" label="Iotcon"></topic>
                <topic href="html/native/network/mtp_tutorial_n.htm" label="MTP"></topic>
+               <topic href="html/native/network/nsd_tutorial_n.htm" label="Network Service Discovery"></topic>
                <topic href="html/native/network/nfc_tutorial_n.htm" label="NFC"></topic>
                <topic href="html/native/network/smartcard_tutorial_n.htm" label="Smartcard"></topic>
                <topic href="html/native/network/wifi_tutorial_n.htm" label="Wi-Fi"></topic>
index 0e416e7..9985abd 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <projectDescription>
-       <name>org.tizen.ui.practices_2.4.0</name>
+       <name>org.tizen.ui.practices_3.0.0</name>
        <comment></comment>
        <projects>
        </projects>
index 814330e..1b08fa5 100644 (file)
@@ -10,7 +10,7 @@
  <body onload="prettyPrint()"> 
  
   <h1><a name="Creating2" id="Creating2">About This Content</a></h1> 
-  <p>Tizen 2.4.0</p> 
+  <p>Tizen 3.0.0</p> 
 
   <h1>License</h1> 
    <p>Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
index f355edc..dc6afb5 100644 (file)
@@ -20,7 +20,7 @@
 <font size="11">UI Practices</font></h1>
 
 <p>Click the application type you want:</p>
-<p><a href="web/guides_w.htm"><img alt="Web Application" src="images/w_division.png"/></a> <a href="native/guides_n.htm"><img alt="Native Application" src="images/n_division.png"/></a></p> 
+<p><a href="native/guides_n.htm"><img alt="Native Application" src="images/n_division.png"/></a> <a href="web/guides_w.htm"><img alt="Web Application" src="images/w_division.png"/></a></p> 
 
    
 <script type="text/javascript" src="scripts/jquery.zclip.min.js"></script>
diff --git a/org.tizen.ui.practices/html/images/FAR_SHADOW.png b/org.tizen.ui.practices/html/images/FAR_SHADOW.png
new file mode 100644 (file)
index 0000000..d92f2f9
Binary files /dev/null and b/org.tizen.ui.practices/html/images/FAR_SHADOW.png differ
diff --git a/org.tizen.ui.practices/html/images/FAR_SOFT_SHADOW.png b/org.tizen.ui.practices/html/images/FAR_SOFT_SHADOW.png
new file mode 100644 (file)
index 0000000..bd33f9e
Binary files /dev/null and b/org.tizen.ui.practices/html/images/FAR_SOFT_SHADOW.png differ
diff --git a/org.tizen.ui.practices/html/images/GLOW.png b/org.tizen.ui.practices/html/images/GLOW.png
new file mode 100644 (file)
index 0000000..15e1d23
Binary files /dev/null and b/org.tizen.ui.practices/html/images/GLOW.png differ
diff --git a/org.tizen.ui.practices/html/images/OUTLINE.png b/org.tizen.ui.practices/html/images/OUTLINE.png
new file mode 100644 (file)
index 0000000..34cc537
Binary files /dev/null and b/org.tizen.ui.practices/html/images/OUTLINE.png differ
diff --git a/org.tizen.ui.practices/html/images/OUTLINE_SHADOW.png b/org.tizen.ui.practices/html/images/OUTLINE_SHADOW.png
new file mode 100644 (file)
index 0000000..3455bd5
Binary files /dev/null and b/org.tizen.ui.practices/html/images/OUTLINE_SHADOW.png differ
diff --git a/org.tizen.ui.practices/html/images/OUTLINE_SOFT_SHADOW.png b/org.tizen.ui.practices/html/images/OUTLINE_SOFT_SHADOW.png
new file mode 100644 (file)
index 0000000..0fcf2f9
Binary files /dev/null and b/org.tizen.ui.practices/html/images/OUTLINE_SOFT_SHADOW.png differ
diff --git a/org.tizen.ui.practices/html/images/PLAIN.png b/org.tizen.ui.practices/html/images/PLAIN.png
new file mode 100644 (file)
index 0000000..ce6f4af
Binary files /dev/null and b/org.tizen.ui.practices/html/images/PLAIN.png differ
diff --git a/org.tizen.ui.practices/html/images/SHADOW.png b/org.tizen.ui.practices/html/images/SHADOW.png
new file mode 100644 (file)
index 0000000..fa4eb9f
Binary files /dev/null and b/org.tizen.ui.practices/html/images/SHADOW.png differ
diff --git a/org.tizen.ui.practices/html/images/SOFT_OUTLINE.png b/org.tizen.ui.practices/html/images/SOFT_OUTLINE.png
new file mode 100644 (file)
index 0000000..c766d08
Binary files /dev/null and b/org.tizen.ui.practices/html/images/SOFT_OUTLINE.png differ
diff --git a/org.tizen.ui.practices/html/images/SOFT_SHADOW.png b/org.tizen.ui.practices/html/images/SOFT_SHADOW.png
new file mode 100644 (file)
index 0000000..faf337d
Binary files /dev/null and b/org.tizen.ui.practices/html/images/SOFT_SHADOW.png differ
index 5581096..f78d864 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/border.png and b/org.tizen.ui.practices/html/images/border.png differ
index 70880a1..303d0b0 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/change_text_globally.png and b/org.tizen.ui.practices/html/images/change_text_globally.png differ
index 6ebc34f..3c26a04 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/display_text_classes.png and b/org.tizen.ui.practices/html/images/display_text_classes.png differ
diff --git a/org.tizen.ui.practices/html/images/edje_hierarchy.png b/org.tizen.ui.practices/html/images/edje_hierarchy.png
new file mode 100644 (file)
index 0000000..596f168
Binary files /dev/null and b/org.tizen.ui.practices/html/images/edje_hierarchy.png differ
index 696f6bb..60ffabe 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/efllibs.png and b/org.tizen.ui.practices/html/images/efllibs.png differ
index c71ceb7..cd8eb66 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/evas_map_effect.png and b/org.tizen.ui.practices/html/images/evas_map_effect.png differ
diff --git a/org.tizen.ui.practices/html/images/evas_map_effect_without.png b/org.tizen.ui.practices/html/images/evas_map_effect_without.png
new file mode 100644 (file)
index 0000000..2d7087c
Binary files /dev/null and b/org.tizen.ui.practices/html/images/evas_map_effect_without.png differ
index c78d46e..4d3148f 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/events_flow.png and b/org.tizen.ui.practices/html/images/events_flow.png differ
diff --git a/org.tizen.ui.practices/html/images/hwkey_phone_wearable.png b/org.tizen.ui.practices/html/images/hwkey_phone_wearable.png
new file mode 100644 (file)
index 0000000..5152b17
Binary files /dev/null and b/org.tizen.ui.practices/html/images/hwkey_phone_wearable.png differ
index c28a7de..d5e11cc 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/numberonly_variation_decimal.png and b/org.tizen.ui.practices/html/images/numberonly_variation_decimal.png differ
index b6a478e..448ef72 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/numberonly_variation_signed.png and b/org.tizen.ui.practices/html/images/numberonly_variation_signed.png differ
index b2e199a..a24e7bb 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/numberonly_variation_signed_and_decimal.png and b/org.tizen.ui.practices/html/images/numberonly_variation_signed_and_decimal.png differ
index 1e560bd..89786eb 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/object_size_16.png and b/org.tizen.ui.practices/html/images/object_size_16.png differ
index 34e86ed..aaa4df8 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/object_size_22.png and b/org.tizen.ui.practices/html/images/object_size_22.png differ
index 2512226..b6e0d7b 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/object_size_44.png and b/org.tizen.ui.practices/html/images/object_size_44.png differ
index 384d7fc..ecd987a 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/password_variation_numberonly.png and b/org.tizen.ui.practices/html/images/password_variation_numberonly.png differ
diff --git a/org.tizen.ui.practices/html/images/pos_map_accelerate.png b/org.tizen.ui.practices/html/images/pos_map_accelerate.png
new file mode 100644 (file)
index 0000000..f78b151
Binary files /dev/null and b/org.tizen.ui.practices/html/images/pos_map_accelerate.png differ
diff --git a/org.tizen.ui.practices/html/images/pos_map_bounce.png b/org.tizen.ui.practices/html/images/pos_map_bounce.png
new file mode 100644 (file)
index 0000000..1db4245
Binary files /dev/null and b/org.tizen.ui.practices/html/images/pos_map_bounce.png differ
diff --git a/org.tizen.ui.practices/html/images/pos_map_decelerate.png b/org.tizen.ui.practices/html/images/pos_map_decelerate.png
new file mode 100644 (file)
index 0000000..0e665a3
Binary files /dev/null and b/org.tizen.ui.practices/html/images/pos_map_decelerate.png differ
diff --git a/org.tizen.ui.practices/html/images/pos_map_linear.png b/org.tizen.ui.practices/html/images/pos_map_linear.png
new file mode 100644 (file)
index 0000000..6ff90be
Binary files /dev/null and b/org.tizen.ui.practices/html/images/pos_map_linear.png differ
diff --git a/org.tizen.ui.practices/html/images/pos_map_sinusoidal.png b/org.tizen.ui.practices/html/images/pos_map_sinusoidal.png
new file mode 100644 (file)
index 0000000..1806348
Binary files /dev/null and b/org.tizen.ui.practices/html/images/pos_map_sinusoidal.png differ
diff --git a/org.tizen.ui.practices/html/images/pos_map_spring.png b/org.tizen.ui.practices/html/images/pos_map_spring.png
new file mode 100644 (file)
index 0000000..86b9343
Binary files /dev/null and b/org.tizen.ui.practices/html/images/pos_map_spring.png differ
index c9a6830..203e2ea 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/scalable_group1.png and b/org.tizen.ui.practices/html/images/scalable_group1.png differ
index 88a2d5f..7bb7452 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/scalable_group2.png and b/org.tizen.ui.practices/html/images/scalable_group2.png differ
index 843b6c3..431506f 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/scale.png and b/org.tizen.ui.practices/html/images/scale.png differ
index ab72798..6346a0c 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/scale_3_finger_150.png and b/org.tizen.ui.practices/html/images/scale_3_finger_150.png differ
index a58e52a..65cb5d7 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/scale_3_finger_50.png and b/org.tizen.ui.practices/html/images/scale_3_finger_50.png differ
index e168477..7369a12 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/scale_5_finger_50.png and b/org.tizen.ui.practices/html/images/scale_5_finger_50.png differ
index 7d629aa..2327052 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/scale_grid.png and b/org.tizen.ui.practices/html/images/scale_grid.png differ
diff --git a/org.tizen.ui.practices/html/images/size_hint_align.png b/org.tizen.ui.practices/html/images/size_hint_align.png
new file mode 100644 (file)
index 0000000..5993264
Binary files /dev/null and b/org.tizen.ui.practices/html/images/size_hint_align.png differ
diff --git a/org.tizen.ui.practices/html/images/size_hint_weight.png b/org.tizen.ui.practices/html/images/size_hint_weight.png
new file mode 100644 (file)
index 0000000..4332cfe
Binary files /dev/null and b/org.tizen.ui.practices/html/images/size_hint_weight.png differ
index 146d0c9..688d360 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/text_class_properties.png and b/org.tizen.ui.practices/html/images/text_class_properties.png differ
diff --git a/org.tizen.ui.practices/html/images/text_class_screens.png b/org.tizen.ui.practices/html/images/text_class_screens.png
new file mode 100644 (file)
index 0000000..9d5c96c
Binary files /dev/null and b/org.tizen.ui.practices/html/images/text_class_screens.png differ
index d63106e..22c9cb9 100644 (file)
 
 <h1><a href="cover_page.htm">UI Practices</a></h1>
 
-<h2><a href="web/guides_w.htm">Web Application</a></h2>
-       <ul>
-               <li><a href="web/tau/guides_tau_w.htm">TAU</a>
-                       <ul>
-                               <li><a href="web/tau/helloworld_w.htm">Hello World</a></li>
-                               <li><a href="web/tau/managing_page_w.htm">Managing Pages</a></li>
-                               <li><a href="web/tau/event_handling_w.htm">Event Handling</a></li>
-                               <li><a href="web/tau/ui_component_w.htm">UI Components</a></li>
-                               <li><a href="web/tau/notepad_w.htm">Creating a Notepad UI Application</a></li>
-                               <li><a href="web/tau/circular_ui_ww.htm">Applications for Circular UI</a>
-                                       <ul>
-                        <li><a href="web/tau/tau_rotary_ww.htm">Handling Rotary Events</a></li>
-                                               <li><a href="web/tau/helper_ww.htm">Using the Helper Script</a></li>
-                                               <li><a href="web/tau/list_ww.htm">Creating Snap Lists</a></li>  
-                                               <li><a href="web/tau/header_ww.htm">Creating Expandable Headers</a></li>
-                                               <li><a href="web/tau/circle_progressbar_ww.htm">Creating Circle-shaped Progress Bars</a></li>
-                                               <li><a href="web/tau/processing_ww.htm">Creating Full Size Processing Components</a></li>
-                                               <li><a href="web/tau/footerbutton_ww.htm">Creating Footer Buttons</a></li>
-                                               <li><a href="web/tau/thumbnail_ww.htm">Creating Thumbnails</a></li>             
-                                               <li><a href="web/tau/popup_ww.htm">Creating Popup Buttons</a></li>
-                                               <li><a href="web/tau/indexscrollbar_ww.htm">Creating Index Scroll Bars</a></li>
-                                               <li><a href="web/tau/moreoptions_ww.htm">Implementing More Options </a></li>
-                                       </ul>
-                               </li>
-                               <li><a href="web/tau/accessibility_w.htm">Accessibility</a></li>
-                               <li><a href="web/tau/globalization_w.htm">Globalization</a></li>
-                               <li><a href="web/tau/animation_w.htm">Animation</a>
-                                       <ul>
-                                               <li><a href="web/tau/creating_animation_w.htm">Creating Applications with Animation</a></li>
-                                       </ul>
-                               </li>
-                               <li><a href="web/tau/tau_porting_w.htm">2.4 Porting Guide</a></li>
-                       </ul>
-               </li>
-               <li><a href="web/w3c/guides_w3c_w.htm">W3C/HTML5</a>
-                       <ul>
-                               <li><a href="web/w3c/html_priority_w.htm">HTML Priorities</a></li>
-                               <li><a href="web/w3c/html5forms_w.htm">HTML5 Forms</a></li>
-                               <li><a href="web/w3c/selector_w.htm">Selectors API (Level 1 and 2)</a></li>                                     
-                               <li><a href="web/w3c/media_query_w.htm">Media Queries</a></li>
-                               <li><a href="web/w3c/multiple_screens_mw.htm">Multiple Screen Support</a></li>
-                               <li><a href="web/w3c/ui_layout_ww.htm">Multiple UI Layouts</a></li>
-                               <li><a href="web/w3c/frame_flattening_mw.htm">Frame Flattening</a></li>
-                               <li><a href="web/w3c/session_history_w.htm">HTML5 Session History</a></li>
-                               <li><a href="web/w3c/clipboard_mw.htm">Clipboard API and events</a></li>
-                               <li><a href="web/w3c/drag_drop_mw.htm">HTML5 Drag and Drop</a></li>
-                               <li><a href="web/w3c/transform_w.htm">CSS Transforms</a></li>
-                               <li><a href="web/w3c/animation_w.htm">CSS Animations Module (Level 3)</a></li>
-                               <li><a href="web/w3c/transition_w.htm">CSS Transitions Module (Level 3)</a></li>
-                               <li><a href="web/w3c/color_w.htm">CSS Color Module (Level 3)</a></li>
-                               <li><a href="web/w3c/background_w.htm">CSS Backgrounds and Borders Module (Level 3)</a></li>
-                               <li><a href="web/w3c/flexible_w.htm">CSS Flexible Box Layout Module</a></li>
-                               <li><a href="web/w3c/multi_mw.htm">CSS Multi-column Layout Module</a></li>
-                               <li><a href="web/w3c/text_module_w.htm">CSS Text Module (Level 3)</a></li>
-                               <li><a href="web/w3c/basic_ui_w.htm">CSS Basic User Interface Module (Level 3)</a></li>
-                               <li><a href="web/w3c/font_w.htm">CSS Fonts Module (Level 3)</a></li>            
-                               <li><a href="web/w3c/woff_w.htm">WOFF File Format (1.0)</a></li>        
-                       </ul>
-               </li>           
-       </ul>
-
 <h2><a href="native/guides_n.htm">Native Application</a></h2>
        <ul>
                <li><a href="native/efl/guides_efl_n.htm">EFL</a>
                                                <li><a href="native/efl/edje_perspective_n.htm">Using Edje Perspective</a></li>
                                                <li><a href="native/efl/edje_message_signal_n.htm">Managing Signals and Messages</a></li>
                                                <li><a href="native/efl/edje_manage_animation_n.htm">Managing Edje Animations</a></li>
+                                               <li><a href="native/efl/edje_swallow_n.htm">Creating Edje Swallows</a></li>
+                                               <li><a href="native/efl/edje_property_change_n.htm">Changing the Properties of Swallowed Objects</a></li>
                                        </ul>                           
                                </li>
                                <li><a href="native/efl/font_setting_n.htm">Fonts</a>
                                        </ul>
                                </li>
                                <li><a href="native/dali/resources_n.htm">Resources</a></li>
-                               <li><a href="native/dali/rendering_effects_n.htm">Rendering and Effects</a></li>
+                               <li><a href="native/dali/rendering_effects_n.htm">Rendering</a></li>
                                <li><a href="native/dali/background_n.htm">Background Knowledge</a>
                                        <ul>
                                                <li><a href="native/dali/handle_n.htm">Handle/Body Pattern</a></li>
                        </ul>
                </li>
        </ul>
+       
+       <h2><a href="web/guides_w.htm">Web Application</a></h2>
+       <ul>
+               <li><a href="web/tau/guides_tau_w.htm">TAU</a>
+                       <ul>
+                               <li><a href="web/tau/download_tau_w.htm">Downloading TAU</a></li>
+                               <li><a href="web/tau/helloworld_w.htm">Hello World</a></li>
+                               <li><a href="web/tau/managing_page_w.htm">Managing Pages</a></li>
+                               <li><a href="web/tau/event_handling_w.htm">Event Handling</a></li>
+                               <li><a href="web/tau/ui_component_w.htm">UI Components</a></li>
+                               <li><a href="web/tau/notepad_w.htm">Creating a Notepad UI Application</a></li>
+                               <li><a href="web/tau/circular_ui_ww.htm">Applications for Circular UI</a>
+                                       <ul>
+                        <li><a href="web/tau/tau_rotary_ww.htm">Handling Rotary Events</a></li>
+                                               <li><a href="web/tau/helper_ww.htm">Using the Helper Script</a></li>
+                                               <li><a href="web/tau/list_ww.htm">Creating Snap Lists</a></li>  
+                                               <li><a href="web/tau/header_ww.htm">Creating Expandable Headers</a></li>
+                                               <li><a href="web/tau/circle_progressbar_ww.htm">Creating Circle-shaped Progress Bars</a></li>
+                                               <li><a href="web/tau/processing_ww.htm">Creating Full Size Processing Components</a></li>
+                                               <li><a href="web/tau/footerbutton_ww.htm">Creating Footer Buttons</a></li>
+                                               <li><a href="web/tau/thumbnail_ww.htm">Creating Thumbnails</a></li>             
+                                               <li><a href="web/tau/popup_ww.htm">Creating Popup Buttons</a></li>
+                                               <li><a href="web/tau/indexscrollbar_ww.htm">Creating Index Scroll Bars</a></li>
+                                               <li><a href="web/tau/moreoptions_ww.htm">Implementing More Options</a></li>
+                                       </ul>
+                               </li>
+                               <li><a href="web/tau/accessibility_w.htm">Accessibility</a></li>
+                               <li><a href="web/tau/globalization_w.htm">Globalization</a></li>
+                               <li><a href="web/tau/animation_w.htm">Animation</a>
+                                       <ul>
+                                               <li><a href="web/tau/creating_animation_w.htm">Creating Applications with Animation</a></li>
+                                       </ul>
+                               </li>
+                               <li><a href="web/tau/tau_porting_w.htm">2.4 Porting Guide</a></li>
+                       </ul>
+               </li>
+               <li><a href="web/w3c/guides_w3c_w.htm">W3C/HTML5</a>
+                       <ul>
+                               <li><a href="web/w3c/html_priority_w.htm">HTML Priorities</a></li>
+                               <li><a href="web/w3c/html5forms_w.htm">HTML5 Forms</a></li>
+                               <li><a href="web/w3c/selector_w.htm">Selectors API (Level 1 and 2)</a></li>                                     
+                               <li><a href="web/w3c/media_query_w.htm">Media Queries</a></li>
+                               <li><a href="web/w3c/multiple_screens_mw.htm">Multiple Screen Support</a></li>
+                               <li><a href="web/w3c/ui_layout_ww.htm">Multiple UI Layouts</a></li>
+                               <li><a href="web/w3c/frame_flattening_mw.htm">Frame Flattening</a></li>
+                               <li><a href="web/w3c/session_history_w.htm">HTML5 Session History</a></li>
+                               <li><a href="web/w3c/clipboard_mw.htm">Clipboard API and events</a></li>
+                               <li><a href="web/w3c/drag_drop_mw.htm">HTML5 Drag and Drop</a></li>
+                               <li><a href="web/w3c/transform_w.htm">CSS Transforms</a></li>
+                               <li><a href="web/w3c/animation_w.htm">CSS Animations Module (Level 3)</a></li>
+                               <li><a href="web/w3c/transition_w.htm">CSS Transitions Module (Level 3)</a></li>
+                               <li><a href="web/w3c/color_w.htm">CSS Color Module (Level 3)</a></li>
+                               <li><a href="web/w3c/background_w.htm">CSS Backgrounds and Borders Module (Level 3)</a></li>
+                               <li><a href="web/w3c/flexible_w.htm">CSS Flexible Box Layout Module</a></li>
+                               <li><a href="web/w3c/multi_mw.htm">CSS Multi-column Layout Module</a></li>
+                               <li><a href="web/w3c/text_module_w.htm">CSS Text Module (Level 3)</a></li>
+                               <li><a href="web/w3c/basic_ui_w.htm">CSS Basic User Interface Module (Level 3)</a></li>
+                               <li><a href="web/w3c/font_w.htm">CSS Fonts Module (Level 3)</a></li>            
+                               <li><a href="web/w3c/woff_w.htm">WOFF File Format (1.0)</a></li>        
+                       </ul>
+               </li>           
+       </ul>
 
 <script type="text/javascript" src="scripts/jquery.zclip.min.js"></script>
 <script type="text/javascript" src="scripts/showhide.js"></script>
index b066010..9cdefa0 100644 (file)
@@ -163,7 +163,7 @@ bool HelloWorldExample::OnButtonStateChanged( Button button )
 <p class="figure">Figure: RadioButton</p>  
        <p align="center"><img alt="RadioButton" src="../../images/radio_button.png"/></p> 
 
-<p>Usually, radio buttons are grouped. Two or more radio buttons are in the same group when they have the same parent. In each group, only 1 radio button can be selected at a given time. You can use the <span style="font-family: Courier New,Courier,monospace;">Button::StateChangedSignal()</span> signal to check which radio button is selected. The following code shows an example of a basic radio button:</p>
+<p>Usually, radio buttons are grouped. When they have the same parent, 2 or more radio buttons are located in the same group. In each group, only 1 radio button can be selected at a given time. You can use the <span style="font-family: Courier New,Courier,monospace;">Button::StateChangedSignal()</span> signal to check which radio button is selected. The following code shows an example of a basic radio button:</p>
 
 <pre class="prettyprint">
 // This sample code is for the HelloWorldExample class
@@ -193,7 +193,7 @@ void HelloWorldExample::Create( Application&amp; application )
 
 bool HelloWorldExample::OnButtonStateChanged( Toolkit::Button button )
 {
-&nbsp;&nbsp;// Do something when the two buttons&#39; states are changed
+&nbsp;&nbsp;// Do something when the 2 buttons&#39; states are changed
 &nbsp;&nbsp;// button parameter can be both button1 and button2
 &nbsp;&nbsp;// You can use button.GetLabelText() and button.IsSelected() 
 &nbsp;&nbsp;// to know which button is selected
index e3a4f5f..1de7514 100644 (file)
@@ -216,7 +216,7 @@ Constraint constraint = Constraint::New&lt; Vector4 &gt;( control, Actor::Proper
 
 <ul><li>Equal to constraint
 
-<p>The built-in <span style="font-family: Courier New,Courier,monospace;">Dali::EqualToConstraint</span> function can be used if you only need to set a property equal to another property:</p>
+<p>The built-in <span style="font-family: Courier New,Courier,monospace;">Dali::EqualToConstraint()</span> function can be used if you only need to set a property equal to another property:</p>
 <pre class="prettyprint">
 Constraint constraint = Constraint::New&lt; Vector3 &gt;( actor, Actor::Property::POSITION, EqualToConstraint() );
 constraint.AddSource( Source( anotherActor, Actor::Property::POSITION ) );
@@ -227,7 +227,7 @@ constraint.Apply();
 
 <li>Relative to constraint
 
-<p>The built-in <span style="font-family: Courier New,Courier,monospace;">Dali::RelativeToConstraint</span> and <span style="font-family: Courier New,Courier,monospace;">Dali::RelativeToConstraintFloat</span> functions can be used if you only need to set a property relative to another property:</p>
+<p>The built-in <span style="font-family: Courier New,Courier,monospace;">Dali::RelativeToConstraint()</span> and <span style="font-family: Courier New,Courier,monospace;">Dali::RelativeToConstraintFloat()</span> functions can be used if you only need to set a property relative to another property:</p>
 
 <pre class="prettyprint">
 Constraint constraint = Constraint::New&lt; Vector3 &gt;( actor, Actor::Property::POSITION, RelativeToConstraint( 2.0f ) );
index 14536dd..731a3bf 100644 (file)
@@ -423,8 +423,8 @@ void HelloWorldExample::OnKeyEvent( const KeyEvent&amp; event )
    </tbody>
   </table>
 
-<p>The key event signal is provided by the <span style="font-family: Courier New,Courier,monospace;">Dali::Stage</span> and <span style="font-family: Courier New,Courier,monospace;">Dali::Toolkit::Control</span> classes, not by the <span style="font-family: Courier New,Courier,monospace;">Dali::Actor</span>  class. The <span style="font-family: Courier New,Courier,monospace;">Dali::Actor</span>  class is not designed to get key events. To receive key events, an actor must be an instance of the <span style="font-family: Courier New,Courier,monospace;">Dali::Toolkit::Control </span> class or one of its subclasses.</p>
-<p>The <span style="font-family: Courier New,Courier,monospace;">Dali::Toolkit::Control </span> class can also receive touch, hover, and wheel events as it inherits from the <span style="font-family: Courier New,Courier,monospace;">Dali::Actor</span>  class.</p>
+<p>The key event signal is provided by the <span style="font-family: Courier New,Courier,monospace;">Dali::Stage</span> and <span style="font-family: Courier New,Courier,monospace;">Dali::Toolkit::Control</span> classes, not by the <span style="font-family: Courier New,Courier,monospace;">Dali::Actor</span>  class. The <span style="font-family: Courier New,Courier,monospace;">Dali::Actor</span>  class is not designed to get key events. To receive key events, an actor must be an instance of the <span style="font-family: Courier New,Courier,monospace;">Dali::Toolkit::Control</span> class or one of its subclasses.</p>
+<p>The <span style="font-family: Courier New,Courier,monospace;">Dali::Toolkit::Control</span> class can also receive touch, hover, and wheel events as it inherits from the <span style="font-family: Courier New,Courier,monospace;">Dali::Actor</span>  class.</p>
 </li>
 
 <li>
@@ -496,7 +496,7 @@ void HelloWorldExample::OnKeyEvent( const KeyEvent&amp; event )
 <p>For the signals of each class and their usage, see the API Reference.</p>
 
 <h2 id="gesture" name="gesture">Gestures</h2>
-<p>Gesture is a user-friendly high-level event produced from a stream of touch events. The <span style="font-family: Courier New,Courier,monospace;">Dali::GestureDetector </span> class analyzes a stream of touch events and attempts to determine the intention of the user. </p>
+<p>Gesture is a user-friendly high-level event produced from a stream of touch events. The <span style="font-family: Courier New,Courier,monospace;">Dali::GestureDetector</span> class analyzes a stream of touch events and attempts to determine the intention of the user. </p>
 <p>If an actor is attached to a gesture detector and the detector recognizes a user intention (detects a predefined pattern in a stream of touch events), the actor emits a detected gesture signal to the application.</p>
 
 
@@ -516,7 +516,7 @@ void HelloWorldExample::OnKeyEvent( const KeyEvent&amp; event )
 <ul>
 <li><span style="font-family: Courier New,Courier,monospace;">Dali::LongPressGestureDetector</span> detects when the user does a long-press action.</li>
 <li><span style="font-family: Courier New,Courier,monospace;">Dali::TapGestureDetector</span> detects when the user does a tap action.</li>
-<li><span style="font-family: Courier New,Courier,monospace;">Dali::PinchGestureDetector</span> detects when the user moves two fingers towards or away from each other.</li>
+<li><span style="font-family: Courier New,Courier,monospace;">Dali::PinchGestureDetector</span> detects when the user moves 2 fingers towards or away from each other.</li>
 <li><span style="font-family: Courier New,Courier,monospace;">Dali::PanGestureDetector</span> detects when the user moves one or more fingers in the same direction.</li>
 </ul>
 
index 5993c38..356c838 100644 (file)
@@ -28,7 +28,7 @@
                        </ul>
                <p class="toc-title">Related Info</p>
                <ul class="toc">
-                       <li><a href="../../../../org.tizen.native.mobile.apireference/classDali_1_1ImageActor.html">Dali::Image API for Mobile Native</a></li>
+                       <li><a href="../../../../org.tizen.native.mobile.apireference/group__dali__core__images.html">Dali::Images API for Mobile Native</a></li>
                        <li><a href="../../../../org.tizen.native.mobile.apireference/group__dali__toolkit__controls__image__view.html">Dali::ImageView API for Mobile Native</a></li>  
                </ul>
        </div></div>
index aef3752..30fbd36 100644 (file)
 
 <p class="figure">Figure: ItemView layouts</p>  
 
-       <table>
+       <table >
    <tbody>
     <tr>
-     <td>Grid</td>
-     <td>Spiral</td>
-        <td>Depth</td>
+     <td style="text-align:center; border:none;">Grid</td>
+     <td style="text-align:center; border:none;">Spiral</td>
+        <td style="text-align:center; border:none;">Depth</td>
     </tr>
        <tr>
-     <td style="text-align:center;"><img alt="captured screen2" src="../../images/grid.png" /></td>
-     <td style="text-align:center;"><img alt="captured screen2" src="../../images/spiral.png" /></td>
-        <td style="text-align:center;"><img alt="captured screen2" src="../../images/depth.png" /></td>
+     <td style="text-align:center; border:none;"><img alt="captured screen2" src="../../images/grid.png" /></td>
+     <td style="text-align:center; border:none;"><img alt="captured screen2" src="../../images/spiral.png" /></td>
+        <td style="text-align:center; border:none;"><img alt="captured screen2" src="../../images/depth.png" /></td>
     </tr>
    </tbody>
   </table>
index 37262fa..d108d9e 100644 (file)
@@ -103,7 +103,7 @@ std::cout &lt;&lt; actor.GetProperty( Actor::Property::NAME ).Get&lt;std::string
 
 <h3>Registering User-defined Custom Properties to Objects</h3>
 
-<p>Properties can be registered and unregistered at runtime using the functions of the <span style="font-family: Courier New,Courier,monospace;">Dali::Handle</span> class. This enables script-like programming in the DALi application, such as adding custom member data to an instance of a DALi class without subclassing the class or maintaining another pool of custom data.</p>
+<p>Properties can be registered and deregistered at runtime using the functions of the <span style="font-family: Courier New,Courier,monospace;">Dali::Handle</span> class. This enables script-like programming in the DALi application, such as adding custom member data to an instance of a DALi class without subclassing the class or maintaining another pool of custom data.</p>
 <p>For example, you can set your own custom data to <span style="font-family: Courier New,Courier,monospace;">PushButton</span> objects and use them later when the buttons are clicked:</p>
 <pre class="prettyprint">
 void Create( Application&amp; application )
index 838056e..876fb49 100644 (file)
@@ -57,7 +57,7 @@ Stage::GetCurrent().Add( field );
 
 <pre class="prettyprint">
 Property::Value fieldText = field.GetProperty( TextField::Property::TEXT );
-std::string fieldTextString =  fieldText.Get&lt; std::string &gt;();
+std::string fieldTextString = fieldText.Get&lt; std::string &gt;();
 </pre>
 
 <h2 id="align" name="align">Aligning Text</h2>
index a962c6d..40beeb1 100644 (file)
@@ -148,10 +148,10 @@ else
                <th>Component</th>
                <th>Description</th>
        </tr>
-       <tr>
-               <td><a href="tau_rotary_ww.htm">Using Rotary Event with TAU</a></td>
-               <td>Shows how to support &quot;rotarydetent&quot; event in TAU Application.</td>
-       </tr>
+    <tr>
+        <td><a href="tau_rotary_ww.htm">Rotary Events</a></td>
+        <td>Shows how to support the &quot;rotarydetent&quot; event.</td>
+    </tr>
        <tr>
         <td><a href="helper_ww.htm">Helper Script</a></td>
         <td>Shows how to support some application components.</td>
index c35abc0..99f01fb 100644 (file)
@@ -46,7 +46,7 @@
 &nbsp;&nbsp;&nbsp;&lt;script src=&quot;lib/tau/animation/tau.animation.min.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
 &lt;/head&gt;
 </pre>
-<p><span style="font-family: Courier New,Courier,monospace">tau.animation</span> is the namespace of the TAU Animation. You can call TAU Animation functions through this namespace.</p>
+<p><span style="font-family: Courier New,Courier,monospace">tau.animation</span> is the namespace of the TAU Animation. You can call TAU Animation methods through this namespace.</p>
 
 
 <table class="note">
@@ -55,7 +55,7 @@
                        <th class="note">Note</th>
                </tr>
                <tr>
-                       <td class="note">To get the <span style="font-family: Courier New,Courier,monospace">tau.animation.min.js</span> library, create a new project from the <a href="../../../../org.tizen.sampledescriptions/html/mobile_w/uicomponent_mw.htm">UIComponent</a> sample. The library is included in the sample&#39;s <span style="font-family: Courier New,Courier,monospace">lib/tau/animation</span> directory.</td>
+                       <td class="note">To get the <span style="font-family: Courier New,Courier,monospace">tau.animation.min.js</span> library, create a new project from the <a href="https://developer.tizen.org/development/sample/web/UI/TAU_UI_Components" target="_blank">UIComponent</a> sample. The library is included in the sample&#39;s <span style="font-family: Courier New,Courier,monospace">lib/tau/animation</span> directory.</td>
                </tr>
        </tbody>
 </table>
@@ -74,14 +74,14 @@ t(&#39;#redBox&#39;).tween(&#39;swing&#39;, 1000);
 t(&#39;#blueBox&#39;).tween({rotateZ: 120}, 1000).tween({translateX: 400}, 1000);
 </pre>
 
-<p>If you want to animate the HTML element directly, you can use <span style="font-family: Courier New,Courier,monospace">mixin</span>. You can animate any effect, transform, or CSS property. You can use the &#39;target&#39; method. Like a CSS selector, &#39;.&#39; means class selector, &#39;#&#39; means ID selector. Also, a pure HTML element can be a parameter of the target function.</p>
+<p>If you want to animate the HTML element directly, you can use <span style="font-family: Courier New,Courier,monospace">mixin</span>. You can animate any effect, transform, or CSS property. You can use the &#39;target&#39; method. Like a CSS selector, &#39;.&#39; means class selector, &#39;#&#39; means ID selector. Also, a pure HTML element can be a parameter of the target method.</p>
 
 <p>Available animation methods:</p>
 <ul><li>Predefined effects
 <p>When the first parameter of the <span style="font-family: Courier New,Courier,monospace">tween()</span> method indicates a string (such as &#39;swing&#39; above) instead of an object, it is a predefined effect animation. Various <a href="animation_w.htm#effects">predefined effects</a> are available.</p></li>
 
 <li>Chaining
-<p>The <span style="font-family: Courier New,Courier,monospace">blueBox</span> animation above is a type of a connected animation. If animations are connected to the same target object, it is added to the queue. And if the <span style="font-family: Courier New,Courier,monospace">play()</span> function is invoked, all animations in the queue are called in the sequence order.</p></li>
+<p>The <span style="font-family: Courier New,Courier,monospace">blueBox</span> animation above is a type of a connected animation. If animations are connected to the same target object, it is added to the queue. And if the <span style="font-family: Courier New,Courier,monospace">play()</span> method is invoked, all animations in the queue are called in the sequence order.</p></li>
 
 <li>Tween
 <p><span style="font-family: Courier New,Courier,monospace">tween()</span> is a TAU Animation method. It animates a target object based on parameters. The following example shows the use of the <span style="font-family: Courier New,Courier,monospace">tween()</span> method:</p>
@@ -104,7 +104,7 @@ tween({animation}, {option})
 var t = tau.animation.target;
 t(&#39;#redBox&#39;).tween({rotateZ: 120}, 1000); /* Transform */
 t(&#39;#redBox&#39;).tween({backgroundColor: &#39;red&#39;, border: &#39;10px 10px 10px 3px white&#39;}, 1000); /* CSS property */
-t(&#39;#redBox&#39;).tween(&#39;swing&#39;, 1000).tween(&#39;tada&#39;, 1000); /* Pre-defined effect */
+t(&#39;#redBox&#39;).tween(&#39;swing&#39;, 1000).tween(&#39;tada&#39;, 1000); /* Predefined effect */
 </pre></li>
 
 <li>Option
@@ -121,7 +121,7 @@ t(&#39;#redBox&#39;).tween(&#39;swing&#39;, 1000).tween(&#39;tada&#39;, 1000); /
 <pre class="prettyprint">var t = tau.animation.target;
 t(&#39;#redBox&#39;).tween({rotateZ: 120}, 1000);
 t(&#39;#redBox&#39;).tween({rotateZ: 120}, {duration: 1000});
-/* The result of this tween method is identical with the above method */
+/* Result of this tween method is identical with the above method */
 t(&#39;#blueBox&#39;).tween({rotateZ: 120}, {duration: 1000, ease: &#39;bounceInOut&#39;});
 t(&#39;#blueBox&#39;).tween({rotateZ: 120}, {duration: 1000, delay: 500}); /* After 500ms, blueBox is rotated */
 t(&#39;#blueBox&#39;).tween({rotateZ: 120}, {duration: 1000, onStart: function()
@@ -130,7 +130,7 @@ t(&#39;#blueBox&#39;).tween({rotateZ: 120}, {duration: 1000, onStart: function()
 &nbsp;&nbsp;&nbsp;},
 &nbsp;&nbsp;&nbsp;onComplete: function()
 &nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t(&#39;#blueBox&#39;).tween(&#39;swing&#39;, 1000); /* After animation, blueBox is animated with a pre-defined effect */
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t(&#39;#blueBox&#39;).tween(&#39;swing&#39;, 1000); /* After animation, blueBox is animated with a predefined effect */
 &nbsp;&nbsp;&nbsp;}
 });
 /* All boxes that include the className &#39;box&#39; are rotated sequentially with a 200ms time difference */
diff --git a/org.tizen.ui.practices/html/web/tau/download_tau_w.htm b/org.tizen.ui.practices/html/web/tau/download_tau_w.htm
new file mode 100644 (file)
index 0000000..773c70a
--- /dev/null
@@ -0,0 +1,106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+       <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
+       <meta http-equiv="X-UA-Compatible" content="IE=9" />
+       <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
+       <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
+       <script type="text/javascript" src="../../scripts/snippet.js"></script> 
+       <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
+    <title>Downloading TAU</title>
+</head>
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile Web" src="../../images/mobile_s_w.png"/> <img alt="Wearable Web" src="../../images/wearable_s_w.png"/></p>
+    </div>
+
+    <div id="toc_border"><div id="toc">
+
+        <p class="toc-title">Related Info</p>
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.web.apireference/html/ui_fw_api/ui_fw_api_cover.htm">Tizen Advanced UI Framework API</a></li>
+        </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+    <h1>Downloading TAU</h1>
+
+<p>Tizen provides 2 versions of the TAU library: an uncompressed version for development and a minified version for production. The development version includes extra warnings about common mistakes, whereas the production version includes extra performance optimizations and strips all error messages.</p>
+
+<p>To download and build TAU from Git:</p>
+
+  <table class="note"> 
+   <tbody> 
+    <tr> 
+     <th class="note">Note</th> 
+    </tr> 
+    <tr> 
+     <td class="note">To build the TAU library, make sure that you have both Git and <span style="font-family: Courier New,Courier,monospace">Node.js</span> installed.</td> 
+    </tr> 
+   </tbody> 
+  </table>  
+
+<ol>
+<li>Download the Git repository:
+<ol type="a">
+<li>Clone a copy of the master TAU Git repository:
+<pre class="prettyprint">
+git clone git://review.tizen.org/platform/framework/web/tau.git
+</pre></li>
+<li>Change to the TAU directory:
+<pre class="prettyprint">
+cd tau
+</pre></li>
+<li>Check out and build a specific version of TAU:
+<pre class="prettyprint">
+git checkout 0.x-stable
+</pre></li>
+</ol>
+</li>
+<li>Build TAU:
+<ol type="a">
+<li>Install the build module by npm:
+<pre class="prettyprint">
+npm install
+</pre></li>
+<li>Test that you have grunt installed:
+<pre class="prettyprint">
+grunt -V
+</pre></li>
+<li>Build TAU by running the following command in the <span style="font-family: Courier New,Courier,monospace">tau</span> directory:
+<pre class="prettyprint">
+grunt build
+</pre></li>
+</ol>
+</li>
+</ol>
+
+<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+    var _gaq = _gaq || [];
+    _gaq.push(['_setAccount', 'UA-25976949-1']);
+    _gaq.push(['_trackPageview']);
+    (function() {
+        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+    })();
+</script>
+
+</body>
+</html>
\ No newline at end of file
index 373c55c..56ebfe7 100644 (file)
 <p>The Tizen platform supports hardware key events for user interaction on devices.</p>
 
 
-<p>The following figures show the hardware keys and events for mobile (on the left) and wearable (on the right) devices.</p>
+<p>The following figures show the hardware keys for mobile (on the left) and wearable (on the right) devices.</p>
 
-       <p class="figure">Figure: Hardware keys and events</p>
-<p align="center"><img alt="Menu and Back keys in mobile" src="../../images/efl_phone.png" /> <img alt="Back event in wearable" src="../../images/backWearable.png" /></p>
+       <p class="figure">Figure: Hardware keys</p>
+<p align="center"><img alt="Hardware keys" src="../../images/hwkey_phone_wearable.png" /></p>
 
 
 <table>
@@ -62,7 +62,7 @@
                        <span style="font-family: Courier New,Courier,monospace;">event.keyName</span>
                        <ul>
                        <li><span style="font-family: Courier New,Courier,monospace;">back</span> for wearable</li>
-                       <li><span style="font-family: Courier New,Courier,monospace;">backmenu</span> for mobile</li>
+                       <li><span style="font-family: Courier New,Courier,monospace;">back</span> or <span style="font-family: Courier New,Courier,monospace;">menu</span> for mobile</li>
                        </ul>
                </td>
        </tr>
@@ -89,11 +89,11 @@ window.addEventListener(&quot;tizenhwkey&quot;, function(ev)
 {
 &nbsp;&nbsp;&nbsp;window.addEventListener(&quot;tizenhwkey&quot;, function(ev);
 &nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(ev.keyName === &quot;back&quot;)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (ev.keyName === &quot;back&quot;)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var page = document.getElementsByClassName(&quot;ui-page-active&quot;)[0],
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pageid = page ? page.id:&nbsp;&quot;&quot;;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(pageid === &quot;main&quot;)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (pageid === &quot;main&quot;)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -111,22 +111,10 @@ window.addEventListener(&quot;tizenhwkey&quot;, function(ev)
 &nbsp;&nbsp;&nbsp;});
 }());</pre>
 
-<h2 id="rotaryevent">Rotary Events</h2>
+<h2 id="rotaryevent">Rotary Events in Wearable Applications</h2>
 
 <p>The Tizen platform supports rotary events for user interaction on a wearable rotary device or sensor. The rotary device can rotate clockwise or counter-clockwise, and dispatch an event for each movement. The rotary device has points called detents. If the rotary device detects the detent point while rotating, it dispatches a separate new event about the point. The number of the available detent points depends on the device hardware.</p>
 
-<table class="note">
-       <tbody>
-       <tr>
-               <th class="note">Note</th>
-       </tr>
-       <tr>
-               <td class="note">This feature is supported in wearable applications only.</td>
-       </tr>
-       </tbody>
-</table>
-
-
 <p class="figure">Figure: Rotary device</p>
 <p align="center"><img alt="Rotary device" src="../../images/rotary_event.png" /> </p>
 <p>Rotary events are used to deliver the rotary device or sensor data to the application. The following table describes the rotary events.</p>
index 29ab74e..a01d0dc 100644 (file)
@@ -93,7 +93,6 @@
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a&nbsp;href=&quot;#&quot;&nbsp;class=&quot;ui-btn&quot;&gt;1&lt;/a&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a&nbsp;href=&quot;#&quot;&nbsp;class=&quot;ui-btn&quot;&gt;2&lt;/a&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a&nbsp;href=&quot;#&quot;&nbsp;class=&quot;ui-btn&quot;&gt;3&lt;/a&gt;
-
 &nbsp;&nbsp;&nbsp;&lt;/footer&gt;
 &lt;/div&gt;
 </pre>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tau.helper.DrawerMoreStyle.create(drawer, 
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handler: &quot;.drawer-handler&quot;,
-
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
 &nbsp;&nbsp;&nbsp;});
index 3074e51..db253ef 100644 (file)
@@ -65,7 +65,7 @@
         <li>ISO and BCP 47 code support (such as cross-mappings) and keyboard layouts</li>
     </ul>
 
-    <p>CLDR uses the XML format provided by UTS #35: Unicode Locale Data Markup Language (LDML). LDML is a format used not only for CLDR, but also for the general interchange of locale data. For more information about CLDR, see <a href="http://cldr.unicode.org/index/downloads/cldr-27" target="_blank">CLDR release notes</a>, and to download the JSON format file , see <a href="https://github.com/unicode-cldr/cldr-json" target="_blank">JSON Data from the Unicode CLDR Project</a>.</p>
+    <p>CLDR uses the XML format provided by UTS #35: Unicode Locale Data Markup Language (LDML). LDML is a format used not only for CLDR, but also for the general interchange of locale data. For more information about CLDR, see <a href="http://cldr.unicode.org/index/downloads/cldr-27" target="_blank">CLDR release notes</a>, and to download the JSON format file, see <a href="https://github.com/unicode-cldr/cldr-json" target="_blank">JSON Data from the Unicode CLDR Project</a>.</p>
     <p>The TAU Globalize utility uses the CLDR 26 release, and when you create a Tizen Web application project, you find CLDR in the <span style="font-family: Courier New,Courier,monospace">&lt;project&gt;/lib/tau/&lt;profile&gt;js/cldr-data</span> folder.</p>
 
     <h2 id="use" name="use">Using the Globalize Utility</h2>
index 9d396ee..3ecf992 100644 (file)
@@ -23,7 +23,7 @@
 
         <p class="toc-title">Related Info</p>
         <ul class="toc">
-            <li><a href="../../../../org.tizen.web.apireference/html/ui_fw_api/ui_fw_api_cover.htm">Tizen Advanced UI Framework</a></li>
+            <li><a href="../../../../org.tizen.web.apireference/html/ui_fw_api/ui_fw_api_cover.htm">Tizen Advanced UI Framework API</a></li>
         </ul>
     </div></div>
 </div>
@@ -74,6 +74,9 @@
 
 <p>To learn to use the TAU features in your application UI, see the following topics:</p>
 <ul>
+<li><a href="download_tau_w.htm">Downloading TAU</a>
+<p>Enables you to download and build the TAU library.</p></li>
+
 <li><a href="helloworld_w.htm">Hello World: Creating a Basic Hello World Page</a>
 <p>Enables you to make a Web application using TAU.</p></li>
 
@@ -89,7 +92,7 @@
 <li><a href="notepad_w.htm">Creating a Notepad UI Application</a>
 <p>Enables you to create a notepad application with TAU.</p></li>
 
-<li><a href="circular_ui_ww.htm">Applications for Circular UI: Developing UI on Circular Wearable Applications</a> in <strong>wearable applications only</strong>
+<li><a href="circular_ui_ww.htm">Applications for Circular UI: Developing UI on Circular Wearable Applications</a> <strong>in wearable applications only</strong>
 <p>Enables you to apply a circular UI to a wearable application.</p></li>
 
 <li><a href="accessibility_w.htm">Accessibility: Supporting Web Accessibility</a>
index 933828f..9c8a77b 100644 (file)
@@ -54,6 +54,9 @@
 <p>The header component supports the following events.</p>
 
 <table>
+   <caption>
+     Table: Header component events
+   </caption>
 <tbody>
        <tr>
                <th>Event name</th>
index 06b8d3b..805b4b8 100644 (file)
 &lt;/body&gt;
 </pre>
 
-<p>The following example shows a basic sample code for Hello World : </p>
+<p>The following example shows a basic sample code for Hello World:</p>
 <pre class="prettyprint">
 &lt;!DOCTYPE&nbsp;html&gt;
 &lt;html&gt;
index c8dbcb7..c8390e0 100644 (file)
@@ -143,6 +143,9 @@ page.addEventListener(&quot;pagehide&quot;, function()
 <p>The following table shows the options you have in creating your SnapListMarqueeStyle component.</p>
 
        <table>
+   <caption>
+     Table: SnapListMarqueeStyle component options
+   </caption>  
                <tbody>
                <tr>
                        <th>Option</th>
index e85eac3..2482d50 100644 (file)
 </li>
 <li>To route using the API:
 <p>You can change pages through the TAU API by using the <span style="font-family: Courier New,Courier,monospace">tau.changePage()</span> method:</p>
-<pre class="prettyprint">&lt;!--pageTwo.html--&gt;
+<pre class="prettyprint">&lt;!--pageOne.html--&gt;
 &lt;div class=&quot;ui-page ui-page-active&quot; id=&quot;first&quot;&gt;
 &nbsp;&nbsp;&nbsp;&lt;div class=&quot;ui-content&quot;&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;You are viewing the first page of the example.
index 4b855f6..f31be80 100644 (file)
@@ -394,7 +394,7 @@ document.addEventListener(&quot;DOMContentLoaded&quot;, function ()
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; window.tizen
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; window.tizen.application)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch (getCurrentPageId())
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch (getCurrentPageId()) 
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case &#39;main&#39;:
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.tizen.application.getCurrentApplication().exit();
index bb07418..3113be8 100644 (file)
@@ -82,7 +82,7 @@
 
 <p>Since Tizen 2.4, it is strongly recommended to use the <span style="font-family: Courier New,Courier,monospace;">class</span> selector to define the components in HTML files. The <span style="font-family: Courier New,Courier,monospace;">&quot;data-role&quot;</span> selector has been deprecated and is no longer supported.</p>
 
-<p>The class selectors in TAU are composed with the <span style="font-family: Courier New,Courier,monospace;">&quot;ui-&quot;</span> prefix and followed by the <span style="font-family: Courier New,Courier,monospace;">&lt;COMPONENT_NAME&gt;</span>. For more information, see the UI Component API Reference (in <a href="../../../../org.tizen.web.apireference/html/ui_fw_api/Mobile_UIComponents/mobile_component_list.htm">mobile</a> and <a href="../../../../org.tizen.web.apireference/html/ui_fw_api/wearable_UIComponents/wearable_component_list.htm">wearable</a> applications).</p>
+<p>The class selectors in TAU are composed with the <span style="font-family: Courier New,Courier,monospace;">&quot;ui-&quot;</span> prefix and followed by the <span style="font-family: Courier New,Courier,monospace;">&lt;COMPONENT_NAME&gt;</span>. For more information, see the UI Component API Reference (in <a href="../../../../org.tizen.web.apireference/html/ui_fw_api/Mobile_UIComponents/mobile_component_list.htm">mobile</a> and <a href="../../../../org.tizen.web.apireference/html/ui_fw_api/Wearable_UIComponents/wearable_component_list.htm">wearable</a> applications).</p>
 <p>The following example shows how to define the UI components before and after:</p>
 <ul>
 <li>Before:
index 06719e2..6a191b7 100644 (file)
@@ -22,7 +22,7 @@
        <div id="toc_border"><div id="toc">
                <p class="toc-title">Related Info</p>
                <ul class="toc">
-                       <li><a href="../../../../org.tizen.web.apireference/html/ui_fw_api/Wearable_UIComponents/wearable_sectionchanger.htm">SectionChanger API for Wearable Web</a></li>
+                       <li><a href="../../../../org.tizen.web.apireference/html/ui_fw_api/Wearable_UIComponents/wearable_sectionchanger.htm">Section Changer API for Wearable Web</a></li>
                </ul>
        </div></div>
 </div>
index 53f6eb0..4c07fd7 100644 (file)
@@ -4,57 +4,6 @@
 
 <toc label="UI Practices" topic="html/cover_page.htm">
 
-<topic href="html/web/guides_w.htm" label="Web Application">
-       <topic href="html/web/tau/guides_tau_w.htm" label="TAU">
-               <topic href="html/web/tau/helloworld_w.htm" label="Hello World"></topic>
-               <topic href="html/web/tau/managing_page_w.htm" label="Managing Pages"></topic>
-               <topic href="html/web/tau/event_handling_w.htm" label="Event Handling"></topic>
-               <topic href="html/web/tau/ui_component_w.htm" label="UI Components"></topic>
-               <topic href="html/web/tau/notepad_w.htm" label="Creating a Notepad UI Application"></topic>
-               <topic href="html/web/tau/circular_ui_ww.htm" label="Applications for Circular UI">
-            <topic href="html/web/tau/tau_rotary_ww.htm" label="Handling Rotary Events"></topic>
-                       <topic href="html/web/tau/helper_ww.htm" label="Using the Helper Script"></topic>
-                       <topic href="html/web/tau/list_ww.htm" label="Creating Snap Lists"></topic>
-                       <topic href="html/web/tau/header_ww.htm" label="Creating Expandable Headers"></topic>
-                       <topic href="html/web/tau/circle_progressbar_ww.htm" label="Creating Circle-shaped Progress Bars"></topic>
-                       <topic href="html/web/tau/processing_ww.htm" label="Creating Full Size Processing Components"></topic>
-                       <topic href="html/web/tau/footerbutton_ww.htm" label="Creating Footer Buttons"></topic>
-                       <topic href="html/web/tau/thumbnail_ww.htm" label="Creating Thumbnails"></topic>                
-                       <topic href="html/web/tau/popup_ww.htm" label="Creating Popup Buttons"></topic>
-                       <topic href="html/web/tau/indexscrollbar_ww.htm" label="Creating Index Scroll Bars"></topic>
-                       <topic href="html/web/tau/moreoptions_ww.htm" label="Implementing More Options"></topic>
-               </topic>
-               <topic href="html/web/tau/accessibility_w.htm" label="Accessibility"></topic>
-               <topic href="html/web/tau/globalization_w.htm" label="Globalization"></topic>
-               <topic href="html/web/tau/animation_w.htm" label="Animation">
-                       <topic href="html/web/tau/creating_animation_w.htm" label="Creating Applications with Animation"></topic>
-               </topic>
-               <topic href="html/web/tau/tau_porting_w.htm" label="2.4 Porting Guide"></topic>
-       </topic>
-       <topic href="html/web/w3c/guides_w3c_w.htm" label="W3C/HTML5">                  
-               <topic href="html/web/w3c/html_priority_w.htm" label="HTML Priorities"></topic>
-               <topic href="html/web/w3c/html5forms_w.htm" label="HTML5 Forms"></topic>
-               <topic href="html/web/w3c/selector_w.htm" label="Selectors API (Level 1 and 2)"></topic>
-               <topic href="html/web/w3c/media_query_w.htm" label="Media Queries"></topic>
-               <topic href="html/web/w3c/multiple_screens_mw.htm" label="Multiple Screen Support"></topic>
-               <topic href="html/web/w3c/ui_layout_ww.htm" label="Multiple UI Layouts"></topic>
-               <topic href="html/web/w3c/frame_flattening_mw.htm" label="Frame Flattening"></topic>
-               <topic href="html/web/w3c/session_history_w.htm" label="HTML5 Session History"></topic>
-               <topic href="html/web/w3c/clipboard_mw.htm" label="Clipboard API and events"></topic>
-               <topic href="html/web/w3c/drag_drop_mw.htm" label="HTML5 Drag and Drop"></topic>
-               <topic href="html/web/w3c/transform_w.htm" label="CSS Transforms"></topic>
-               <topic href="html/web/w3c/animation_w.htm" label="CSS Animations Module (Level 3)"></topic>
-               <topic href="html/web/w3c/transition_w.htm" label="CSS Transitions Module (Level 3)"></topic>
-               <topic href="html/web/w3c/color_w.htm" label="CSS Color Module (Level 3)"></topic>
-               <topic href="html/web/w3c/background_w.htm" label="CSS Backgrounds and Borders Module (Level 3)"></topic>
-               <topic href="html/web/w3c/flexible_w.htm" label="CSS Flexible Box Layout Module"></topic>
-               <topic href="html/web/w3c/multi_mw.htm" label="CSS Multi-column Layout Module"></topic>
-               <topic href="html/web/w3c/text_module_w.htm" label="CSS Text Module (Level 3)"></topic>
-               <topic href="html/web/w3c/basic_ui_w.htm" label="CSS Basic User Interface Module (Level 3)"></topic>
-               <topic href="html/web/w3c/font_w.htm" label="CSS Fonts Module (Level 3)"></topic>               
-               <topic href="html/web/w3c/woff_w.htm" label="WOFF File Format (1.0)"></topic>   
-       </topic>        
-</topic>
 <topic href="html/native/guides_n.htm" label="Native Application">             
        <topic href="html/native/efl/guides_efl_n.htm" label="EFL">
                <topic href="html/native/efl/efl_overview_n.htm" label="EFL Overview"></topic>
                        <topic href="html/native/efl/edje_text_n.htm" label="Using Edje Text Classes"></topic>
                        <topic href="html/native/efl/edje_perspective_n.htm" label="Using Edje Perspective"></topic>    
                        <topic href="html/native/efl/edje_message_signal_n.htm" label="Managing Signals and Messages"></topic>  
-                       <topic href="html/native/efl/edje_manage_animation_n.htm" label="Managing Edje Animations"></topic>     
+                       <topic href="html/native/efl/edje_manage_animation_n.htm" label="Managing Edje Animations"></topic>
+                       <topic href="html/native/efl/edje_swallow_n.htm" label="Creating Edje Swallows"></topic>
+                       <topic href="html/native/efl/edje_property_change_n.htm" label="Changing the Properties of Swallowed Objects"></topic>  
                </topic>
                <topic href="html/native/efl/font_setting_n.htm" label="Fonts">
                        <topic href="html/native/efl/font_resource_n.htm" label="Font Resources"></topic>
                        <topic href="html/native/dali/constraints_n.htm" label="Constraints"></topic>
                </topic>
                <topic href="html/native/dali/resources_n.htm" label="Resources"></topic>
-               <topic href="html/native/dali/rendering_effects_n.htm" label="Rendering and Effects"></topic>
+               <topic href="html/native/dali/rendering_effects_n.htm" label="Rendering"></topic>
                <topic href="html/native/dali/background_n.htm" label="Background Knowledge">
                        <topic href="html/native/dali/handle_n.htm" label="Handle/Body Pattern"></topic>
                        <topic href="html/native/dali/properties_n.htm" label="Properties"></topic>
                        <topic href="html/native/dali/multi_threaded_n.htm" label="Multi-threaded Architecture"></topic>
                </topic>
        </topic>
-</topic>               
+</topic>       
+
+<topic href="html/web/guides_w.htm" label="Web Application">
+       <topic href="html/web/tau/guides_tau_w.htm" label="TAU">
+               <topic href="html/web/tau/download_tau_w.htm" label="Downloading TAU"></topic>
+               <topic href="html/web/tau/helloworld_w.htm" label="Hello World"></topic>
+               <topic href="html/web/tau/managing_page_w.htm" label="Managing Pages"></topic>
+               <topic href="html/web/tau/event_handling_w.htm" label="Event Handling"></topic>
+               <topic href="html/web/tau/ui_component_w.htm" label="UI Components"></topic>
+               <topic href="html/web/tau/notepad_w.htm" label="Creating a Notepad UI Application"></topic>
+               <topic href="html/web/tau/circular_ui_ww.htm" label="Applications for Circular UI">
+            <topic href="html/web/tau/tau_rotary_ww.htm" label="Handling Rotary Events"></topic>
+                       <topic href="html/web/tau/helper_ww.htm" label="Using the Helper Script"></topic>
+                       <topic href="html/web/tau/list_ww.htm" label="Creating Snap Lists"></topic>
+                       <topic href="html/web/tau/header_ww.htm" label="Creating Expandable Headers"></topic>
+                       <topic href="html/web/tau/circle_progressbar_ww.htm" label="Creating Circle-shaped Progress Bars"></topic>
+                       <topic href="html/web/tau/processing_ww.htm" label="Creating Full Size Processing Components"></topic>
+                       <topic href="html/web/tau/footerbutton_ww.htm" label="Creating Footer Buttons"></topic>
+                       <topic href="html/web/tau/thumbnail_ww.htm" label="Creating Thumbnails"></topic>                
+                       <topic href="html/web/tau/popup_ww.htm" label="Creating Popup Buttons"></topic>
+                       <topic href="html/web/tau/indexscrollbar_ww.htm" label="Creating Index Scroll Bars"></topic>
+                       <topic href="html/web/tau/moreoptions_ww.htm" label="Implementing More Options"></topic>
+               </topic>
+               <topic href="html/web/tau/accessibility_w.htm" label="Accessibility"></topic>
+               <topic href="html/web/tau/globalization_w.htm" label="Globalization"></topic>
+               <topic href="html/web/tau/animation_w.htm" label="Animation">
+                       <topic href="html/web/tau/creating_animation_w.htm" label="Creating Applications with Animation"></topic>
+               </topic>
+               <topic href="html/web/tau/tau_porting_w.htm" label="2.4 Porting Guide"></topic>
+       </topic>
+       <topic href="html/web/w3c/guides_w3c_w.htm" label="W3C/HTML5">                  
+               <topic href="html/web/w3c/html_priority_w.htm" label="HTML Priorities"></topic>
+               <topic href="html/web/w3c/html5forms_w.htm" label="HTML5 Forms"></topic>
+               <topic href="html/web/w3c/selector_w.htm" label="Selectors API (Level 1 and 2)"></topic>
+               <topic href="html/web/w3c/media_query_w.htm" label="Media Queries"></topic>
+               <topic href="html/web/w3c/multiple_screens_mw.htm" label="Multiple Screen Support"></topic>
+               <topic href="html/web/w3c/ui_layout_ww.htm" label="Multiple UI Layouts"></topic>
+               <topic href="html/web/w3c/frame_flattening_mw.htm" label="Frame Flattening"></topic>
+               <topic href="html/web/w3c/session_history_w.htm" label="HTML5 Session History"></topic>
+               <topic href="html/web/w3c/clipboard_mw.htm" label="Clipboard API and events"></topic>
+               <topic href="html/web/w3c/drag_drop_mw.htm" label="HTML5 Drag and Drop"></topic>
+               <topic href="html/web/w3c/transform_w.htm" label="CSS Transforms"></topic>
+               <topic href="html/web/w3c/animation_w.htm" label="CSS Animations Module (Level 3)"></topic>
+               <topic href="html/web/w3c/transition_w.htm" label="CSS Transitions Module (Level 3)"></topic>
+               <topic href="html/web/w3c/color_w.htm" label="CSS Color Module (Level 3)"></topic>
+               <topic href="html/web/w3c/background_w.htm" label="CSS Backgrounds and Borders Module (Level 3)"></topic>
+               <topic href="html/web/w3c/flexible_w.htm" label="CSS Flexible Box Layout Module"></topic>
+               <topic href="html/web/w3c/multi_mw.htm" label="CSS Multi-column Layout Module"></topic>
+               <topic href="html/web/w3c/text_module_w.htm" label="CSS Text Module (Level 3)"></topic>
+               <topic href="html/web/w3c/basic_ui_w.htm" label="CSS Basic User Interface Module (Level 3)"></topic>
+               <topic href="html/web/w3c/font_w.htm" label="CSS Fonts Module (Level 3)"></topic>               
+               <topic href="html/web/w3c/woff_w.htm" label="WOFF File Format (1.0)"></topic>   
+       </topic>        
+</topic>       
        
 </toc>