<ul class="toc">
<li><a href="#prerequisites">Prerequisites</a></li>
<li><a href="#battery">Retrieving Battery Information</a></li>
+ <li>Device control
+ <ul class="toc">
<li><a href="#display">Controlling the Display</a></li>
<li><a href="#haptic">Controlling Haptic Devices</a></li>
<li><a href="#ir">Controlling IR Devices</a></li>
<li><a href="#led">Controlling LED Devices</a></li>
<li><a href="#power">Controlling the Power State</a></li>
+ </ul></li>
<li><a href="#changes">Monitoring Device Changes</a></li>
</ul>
<p class="toc-title">Related Info</p>
<ul>
<li>Battery information
<p>You can <a href="#battery">get battery details</a>, such as the current percentage, the charging state, and the current level state.</p></li>
+ <li>Device control
+ <p>You can manage various components and elements on the device:</p>
+ <ul>
<li>Display
<p>You can <a href="#display">get and set display details</a>, such as the number of displays, the maximum brightness of the display, the current brightness, and the display state.</p></li>
<li>Haptic
<p>You can <a href="#led">manage the camera flash LED</a> by, for example, getting the maximum and current brightness of the LED. You can also change the current brightness of the camera flash LED, and request the service LED to play effects.</p></li>
<li>Power
<p>You can <a href="#power">request the power state</a> to be locked or unlocked.</p></li>
+ </ul></li>
<li>Change monitoring
<p>You can <a href="#changes">register an event handler to monitor device changes</a>.</p></li>
</ul>
<p>To retrieve battery information:</p>
<ul>
<li>Get the battery charge percentage with the <code>Percent</code> property of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1System_1_1Battery.html">Tizen.System.Battery</a> class.
- <p>The property contains the remaining battery charge percentage as an integer value from 0 to 100.</p>
+ <p>The property contains the current battery charge percentage as an integer value from 0 to 100 that indicates the remaining battery charge as a percentage of the maximum level.</p>
<pre class="prettyprint">
int s_Percent;
<p>To control an IR device:</p>
<ol>
-<li>Determine whether IR is available in the device using the <code>IsAvailable</code> property of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1System_1_1IR.html">Tizen.System.IR</a> class:
+<li>Determine whether IR is available on the device using the <code>IsAvailable</code> property of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1System_1_1IR.html">Tizen.System.IR</a> class:
<pre class="prettyprint">
var test
test = IR.IsAvailable;
<p>To control LEDs on the device:</p>
<ul>
-<li>Get the maximum brightness value of the camera flash LED with the <code>MaxBrightness</code> property of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1System_1_1Led.html">Tizen.System.Led</a> class:
+<li>Get the maximum brightness value of a camera flash LED with the <code>MaxBrightness</code> property of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1System_1_1Led.html">Tizen.System.Led</a> class:
<pre class="prettyprint">
var test
test = Led.MaxBrightness;
</pre>
</li>
-<li>Get and set the current brightness value of the camera flash LED with the <code>Brightness</code> property:
+<li>Get and set the current brightness value of a camera flash LED with the <code>Brightness</code> property:
<pre class="prettyprint">
var test
var t = Task.Run(async delegate
{
await Task.Delay(1000);
-
+
return 0;
});
</pre>
</li>
-<li>When it is no longer needed, deregister the event handler:
+<li>When no longer needed, deregister the event handler:
<pre class="prettyprint">
Display.StateChanged -= handler;
</pre>
<body onload="prettyPrint()" style="overflow: auto;">
<div id="toc-navigation">
<div id="profile">
- <p><img alt="Mobile C#" src="mages/mobile_s_cs.png"/> <img alt="TV C#" src="images/tv_s_cs.png"/></p>
+ <p><img alt="Mobile C#" src="../images/mobile_s_cs.png"/> <img alt="TV C#" src="../images/tv_s_cs.png"/></p>
</div>
<div id="toc_border"><div id="toc">
<p class="toc-title">Dependencies</p>
ResourceTypes types = new ResourceTypes(new List<string>() {"oic.iot.door"});
</pre>
</li>
- <li>Register the door resource by calling the <code>DoorResource()</code> constructor which is user-defined child class of the <code>Resource</code> abstract class:
+ <li>Register the door resource by calling the <code>DoorResource()</code> constructor which is a user-defined child class of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Network_1_1IoTConnectivity_1_1Resource.html">Tizen.Network.IoTConnectivity.Resource</a> abstract class:
<pre class="prettyprint">
public class DoorResource : Resource
{
<li><a href="#ce_register_aid">Registering AID</a></li>
<li><a href="#ce_ohce_status">Managing Secure Element Events</a></li>
<li><a href="#ce_hce_event">Managing HCE Events from the NFC Reader</a></li>
- <li><a href="#ce_hce_send_response">Sending a HCE Response to the NFC Reader</a></li>
+ <li><a href="#ce_hce_send_response">Sending HCE Responses to the NFC Reader</a></li>
</ul>
</li>
</ul>
<p>You can <a href="#tag_get_tag_event">manage tag events</a> and <a href="#tag_read_ndef">read and write NDEF messages</a> from and to an NFC tag.</p>
</li>
<li>Peer-to-peer mode
- <p>You can <a href="#p2p_get_p2p_event">manage P2P events</a> and <a href="#p2p_receive">send and receive NDEF messages</a> between peer devices.</p>
+ <p>You can <a href="#p2p_get_p2p_event">manage peer-to-peer (P2P) events</a> and <a href="#p2p_receive">send and receive NDEF messages</a> between peer devices.</p>
</li>
<li>Card emulation mode
<p>The <a href="#card_emulation">card emulation</a> mode allows an NFC device to function as a smart card.</p>
</ul>
<h2 id="card_emulation">Card Emulation</h2>
-<p>The card emulation mode can be broadly divided into two categories, traditional card emulation and host card emulation (HCE):</p>
+<p>The card emulation mode can be broadly divided into 2 categories:</p>
<ul>
<li>Traditional card emulation
- <p>In traditional card emulation, the NFC controller in the device routes data from the NFC reader directly to the secure element (SE), and an applet handles all of the data in the SE. The user does not participate at all in the operation.</p>
- <p>Tizen supports eSE and UICC as Secure Elements.</p>
+ <p>In traditional card emulation, the NFC controller in the device routes data from the NFC reader directly to the secure element (SE), and an applet handles all of the data in the SE. The user does not participate in the operation at all.</p>
+ <p>Tizen supports eSE and UICC as SEs.</p>
<p align="center"><strong>Figure: Traditional card emulation</strong></p>
<p align="center"><img alt="Traditional card emulation" src="../../images/nfc_card_emulation.png" /></p>
</li>
<p align="center"><img alt="Card emulation with HCE" src="../../images/nfc_card_emulation_hce.png" /></p>
<p>HCE allows you to create your own card emulation system and bypass the SE. This approach brings 2 advantages:</p>
<ul>
- <li>For UICC Secure Elements, the mobile service provider is involved in the card emulation behavior. With HCE, you are independent of the service provider.</li>
+ <li>For UICC-type SE, the mobile service provider is involved in the card emulation behavior. With HCE, you are independent of the service provider.</li>
<li>You do not need SE hardware chips within the device.</li>
</ul>
<p>To understand HCE behavior, mainly how data is internally routed to the correct application, consider how Tizen handles NFC routing:</p>
<ol>
<li>Assume that the user has an HCE application or installs one.
- <p>The application has an AID value, which is stored in NFC routing table (blue arrow in the following figure).</p>
+ <p>The application has an "AID" value, which is stored in the NFC routing table (blue arrow in the following figure).</p>
</li>
<li>When the NFC reader attempts card emulation, the NFC controller checks the routing table to find the application to which the data is sent for emulation (red arrows in the following figure).</li>
<li>When the application is uninstalled, the AID value is deleted from the routing table.</li>
<h2 id="manager_activating_nfc_device">Activating and Deactivating NFC</h2>
<p>To activate and deactivate NFC:</p>
<ol>
- <li>To use this NFC activation method, the application has to request permission by adding the following privileges to the <code>tizen-manifest.xml</code> file:
+ <li>To use the following NFC activation method, the application has to request permission by adding the following privileges to the <code>tizen-manifest.xml</code> file:
<pre class="prettyprint">
<privileges>
<privilege>http://tizen.org/privilege/nfc.admin</privilege>
</pre>
<div class="note">
<strong>Note</strong>
- To be able to use this privilege, your application needs to be signed with a partner-level certificate.
+ To be able to use this privilege, your application must be signed with a partner-level certificate.
</div>
</li>
- <li>To activate NFC, use the <code>SetActivationAsync()</code> method of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Network_1_1Nfc_1_1NfcManager.html">Tizen.Network.Nfc.NfcManager</a> class with the parameter <code>true</code>:
+ <li>To activate NFC, use the <code>SetActivationAsync()</code> method of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Network_1_1Nfc_1_1NfcManager.html">Tizen.Network.Nfc.NfcManager</a> class with the <code>true</code> parameter:
<pre class="prettyprint">
NfcManager.SetActivationAsync(true);
</pre>
</li>
- <li>To deactivate NFC, use the <code>SetActivationAsync()</code> method with the parameter <code>false</code>:
+ <li>To deactivate NFC, use the <code>SetActivationAsync()</code> method with the <code>false</code> parameter:
<pre class="prettyprint">
NfcManager.SetActivationAsync(false);
</pre>
<h2 id="ndef_record">Creating NDEF Records and Messages</h2>
<p>To create an NDEF record and attach it to an NDEF message:</p>
<ol>
- <li>To create an NDEF record, create a new instance of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Network_1_1Nfc_1_1NfcNdefRecord.html">Tizen.Network.Nfc.NfcNdefRecord</a> class and give it the values required.
+ <li>To create an NDEF record, create a new instance of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Network_1_1Nfc_1_1NfcNdefRecord.html">Tizen.Network.Nfc.NfcNdefRecord</a> class and give it the required values.
<p>In the following example, a record is created with 3 bytes of binary data as a payload.</p>
<pre class="prettyprint">
public static void AppendRecord_RETURN_VALUE()
</li>
<li>Create the NDEF message as a new instance of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Network_1_1Nfc_1_1NfcNdefMessage.html">Tizen.Network.Nfc.NfcNdefMessage</a> class and add the record to it using the <code>AppendRecord()</code> method:
<pre class="prettyprint">
-
<span class="highlight">NfcNdefMessage msg = new NfcNdefMessage();</span>
int previousMsgRecordCount = msg.RecordCount;
catch (NotSupportedException)
{
Assert.IsTrue(_nfcFeature == false || _tagFeature == false,
- "Method throws the NotSupportedException, but Tizen supports the NFC Tag operation");
+ "Method throws the NotSupportedException, but Tizen supports the NFC Tag operation");
}
}
</pre>
catch (NotSupportedException)
{
Assert.IsTrue(_nfcFeature == false || _tagFeature == false,
- "Method throws the NotSupportedException, but Tizen supports the NFC Tag operation");
+ "Method throws the NotSupportedException, but Tizen supports the NFC Tag operation");
}
}
</pre>
catch (NotSupportedException)
{
Assert.IsTrue(_nfcFeature == false || _tagFeature == false,
- "Method throws the NotSupportedException, but Tizen supports the NFC Tag operation");
+ "Method throws the NotSupportedException, but Tizen supports the NFC Tag operation");
}
}
</pre>
</ul>
<h2 id="p2p_get_p2p_event">Managing P2P Events</h2>
- <p>You can keep track of P2P events through event handlers.</p>
+ <p>To keep track of P2P events through event handlers:</p>
<ol>
<li>Define an event handler to trigger whenever a new P2P target has been found:
catch (NotSupportedException)
{
Assert.IsTrue(_nfcFeature == false || _p2pFeature == false,
- "Method throws the NotSupportedException, but Tizen supports the NFC P2P operation");
+ "Method throws the NotSupportedException, but Tizen supports the NFC P2P operation");
}
}
</pre>
catch (NotSupportedException)
{
Assert.IsTrue(_nfcFeature == false || _p2pFeature == false,
- "Method throws the NotSupportedException, but Tizen supports the NFC P2P operation");
+ "Method throws the NotSupportedException, but Tizen supports the NFC P2P operation");
}
}
</pre>
catch (NotSupportedException)
{
Assert.IsTrue(_nfcFeature == false || _p2pFeature == false,
- "Method throws the NotSupportedException, but Tizen supports the Nfc P2P operation");
+ "Method throws the NotSupportedException, but Tizen supports the Nfc P2P operation");
}
}
</pre>
</ol>
<h2 id="ce_ohce_status">Managing Secure Element Events</h2>
- <p>To manage Secure Element events:</p>
+ <p>To manage secure element (SE) events:</p>
<ol>
- <li>Define an event handler to be triggered when a Secure Element event occurs:
+ <li>Define an event handler to be triggered when an SE event occurs:
<pre class="prettyprint">
public static void SecureElementCallback(object sender, SecureElementEventArgs e)
{
}
</pre>
</li>
-<li>Retrieve the card emulation adapter with the <code>GetCardEmulationAdapter()</code> method of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Network_1_1Nfc_1_1NfcManager.html">Tizen.Network.Nfc.NfcManager</a> class, and register the Secure Element event handler for its <code>SecureElementEvent</code> event:
+<li>Retrieve the card emulation adapter with the <code>GetCardEmulationAdapter()</code> method of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Network_1_1Nfc_1_1NfcManager.html">Tizen.Network.Nfc.NfcManager</a> class, and register the SE event handler for its <code>SecureElementEvent</code> event:
<pre class="prettyprint">
public static async Task SecureElementEvent()
{
/// Test code
await WaitSeEvent();
- Assert.IsNotNull(_seEventArgs, "The _seEventArgs should not be null when HCE event callback function is called");
+ Assert.IsNotNull(_seEventArgs, "The _seEventArgs should not be null when HCE event callback is called");
Assert.IsTrue(_checkFlag == true, "isChecked should be true");
</pre>
</li>
catch (NotSupportedException)
{
Assert.IsTrue(_nfcFeature == false || _ceFeature == false || _hceFeature == false,
- "Method throws the NotSupportedException, but Tizen supports the NFC card emulation operation");
+ "Method throws the NotSupportedException, but Tizen supports the NFC card emulation operation");
}
}
</pre>
<h2 id="ce_hce_event">Managing HCE Events from the NFC Reader</h2>
<p>To manage HCE events from the NFC reader:</p>
<ol>
- <li>Define an event handler to be triggered when a HCE event occurs:
+ <li>Define an event handler to be triggered when an HCE event occurs:
<pre class="prettyprint">
public static void HostCardEmulationCallback(object sender, HostCardEmulationEventArgs e)
{
/// Test code
await WaitHceEventActivated();
- Assert.IsNotNull(_hceEventArgs, "The _hceEventArgs should not be null when HCE event callback function is called");
+ Assert.IsNotNull(_hceEventArgs, "The _hceEventArgs should not be null when HCE event callback is called");
Assert.IsTrue(_checkFlag == true, "isChecked should be true");
</pre>
</li>
_cardEmulationAdapter = null;
_hceEventArgs = null;
- _seEventArgs = null;
}
catch (NotSupportedException)
{
Assert.IsTrue(_nfcFeature == false || _ceFeature == false || _hceFeature == false,
- "Method throws the NotSupportedException, but Tizen supports the NFC host card emulation operation");
+ "Method throws the NotSupportedException, but Tizen supports the NFC host card emulation operation");
}
}
</pre>
</li>
</ol>
- <h2 id="ce_hce_send_response">Sending a HCE Response to the NFC Reader</h2>
+ <h2 id="ce_hce_send_response">Sending HCE Responses to the NFC Reader</h2>
<p>To send HCE responses to the NFC reader:</p>
<ol>
<li>Retrieve the card emulation adapter with the <code>GetCardEmulationAdapter()</code> method of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Network_1_1Nfc_1_1NfcManager.html">Tizen.Network.Nfc.NfcManager</a> class, and register the HCE event handler for its <code>HostCardEmulationEvent</code> event:
<li>Once the HCE event triggers, send the response with the <code>HceSendApduResponse()</code> method of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Network_1_1Nfc_1_1NfcSecureElement.html">Tizen.Network.Nfc.NfcSecureElement</a> class:
<pre class="prettyprint">
/// Test code
-
byte[] responseBuffer = {0x90, 0x00};
await WaitHceEvent();
- Assert.IsNotNull(_eventArgs, "The _eventArgs should not be null when Hce event callback function is called");
- Assert.IsNotNull(_eventArgs.SecureElement, "The SecureElement property of _eventArgs should not be null when HCE event callback function is called");
+ Assert.IsNotNull(_eventArgs, "The _eventArgs should not be null when HCE event callback is called");
+ Assert.IsNotNull(_eventArgs.SecureElement, "The SecureElement property of _eventArgs should not be null when HCE event callback is called");
Assert.IsInstanceOf<NfcSecureElement>(_eventArgs.SecureElement, "SecureElement value is not of the type NfcSecureElement");
<span class="highlight">_eventArgs.SecureElement.HceSendApduResponse(responseBuffer, 2);</span>
/// Postcondition
/// 1. Unregister the HCE event handler
+ /// 2. Reset variables
_cardEmulationAdapter.HostCardEmulationEvent -= HostCardEmulationCallback;
+
+ _cardEmulationAdapter = null;
+ _eventArgs = null;
}
catch (NotSupportedException)
{
Assert.IsTrue(_nfcFeature == false || _ceFeature == false || _hceFeature == false,
- "Method throws the NotSupportedException, but Tizen supports the NFC host card emulation operation");
+ "Method throws the NotSupportedException, but Tizen supports the NFC host card emulation operation");
}
}
</pre>
</privileges>\r
</pre>\r
</li>\r
- <li>To use the methods and properties of the <code>Tizen.Messaging.Email</code> namespace, include it in your application:\r
+ <li>To use the methods and properties of the Tizen.Messaging.Email namespace, include it in your application:\r
<pre class="prettyprint">\r
using Tizen.Messaging.Email;\r
</pre>\r
</li>\r
<li>Create a recipient with an instance of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Messaging_1_1Email_1_1EmailRecipient.html">Tizen.Messaging.Email.EmailRecipient</a> class, set the recipient address, and add the recipient to the message:\r
<pre class="prettyprint">\r
-var recipient = = new EmailRecipient();\r
+var recipient = new EmailRecipient();\r
string address = "example@mail.com";\r
recipient.Address = address;\r
email.To.Add(recipient);\r
<privilege>http://tizen.org/privilege/haptic</privilege>
</privileges>
</pre>
- </li>
+ </li>
<li>To use the methods and properties of the <code>Tizen.System.Feedback</code> class, include the <a href="https://developer.tizen.org/dev-guide/csapi/namespaceTizen_1_1System.html">Tizen.System</a> namespace in your application:
<pre class="prettyprint">
using Tizen.System;
<h1>System and Runtime Information</h1>
-<p>You can access the various information about your device system and its runtime status.</p>
+<p>You can access various information about your device system and its runtime status.</p>
<p>The main features of the <code>Tizen.System.SystemInfo</code> and <code>Tizen.System.RuntimeInformation</code> classes include:</p>
<ul>
<li>Defining a geofence
<p>You can <a href="#definition">define the type of the geofence</a> when creating one.</p></li>
<li>Managing the geofence service
-<p>You can allow the user to <a href="#settings">manage the geofence places and fences</a> through My Places.</p></li>
+<p>You can allow the user to <a href="#settings">manage the geofence places and fences</a> through My places.</p></li>
</ul>
<p align="center"><strong>Figure: Geofence architecture</strong></p>
<li>Discovering and selecting a map provider
<p>You can also <a href="#start">specify basic maps preferences</a>.</p></li>
<li>Geocoding and reverse geocoding
- <p>You can <a href="#geocode">get the geocode</a> (geographical coordinates) of a place based on an address, or the reverse geocode (address) based on the geographical coordinates (latitude and longitude).</p></li>
+ <p>You can <a href="#geocode">get the geocode</a> (geographical coordinates) of a place from an address, or the reverse geocode (address) from the geographical coordinates (latitude and longitude).</p></li>
<li>Searching places
<p>You can <a href="#search_place">query place information</a>, corresponding to specified search keys and filters.</p></li>
<li>Searching routes
<h2 id="geocode">Geocodes</h2>
<p>The following geocode request types are provided:</p>
<ul>
- <li>Get place coordinates based on a free text address.</li>
- <li>Get place coordinates based on a free text address within a specified geographical area.</li>
- <li>Get place coordinates based on a structured address (a structure with fields, such as city, street, and building number).</li>
+ <li>Get place coordinates from a free text address.</li>
+ <li>Get place coordinates from a free text address within a specified geographical area.</li>
+ <li>Get place coordinates from a structured address (a structure with fields, such as city, street, and building number).</li>
</ul>
<p>After performing the <a href="#use_geocode">geocode service request</a>, you receive the geocode response, which is a geographical location, specified with latitude and longitude values.</p>
<p>Only 1 type of reverse geocode request is provided:</p>
<ul>
- <li>Get a structured address based on place coordinates.</li>
+ <li>Get a structured address from place coordinates.</li>
</ul>
<p>You can parse the reverse geocode response to use its details. The response contains structured address information, consisting of, for example, a street name, building number, city name, postal code, district name, state name, and country.</p>
<ul>
<li>Query place information within a specific distance around a specified geographical location.</li>
<li>Query place information within a specified geographical area.</li>
- <li>Query place information based on a free text address within a specified geographical area.</li>
+ <li>Query place information from a free text address within a specified geographical area.</li>
</ul>
<p>After performing the <a href="#use_search_place">place service request</a>, you receive the place search response. You can parse the place search response to use its details. The response contains structured place information, consisting of, for example, a place ID, name and URL, address, geographical location and distance from the center of the search area, place category, rating, review, and image.</p>
<p>You can <a href="#maps_object">create objects in the widget</a>. The following view object types are provided:</p>
<ul>
<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>
+ <li>Polyline based on specified geographical locations, color, and width.</li>
+ <li>Polygon based on specified geographical locations and color.</li>
</ul>
<p>The object properties can be changed after the object has been created.</p>
- <p>The map view and map object can <a href="#maps_event">handle events</a>. Each object has handlers to invoke callback functions for selected events of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Maps_1_1MapObject.html">Tizen.Maps.MapObject</a> and <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Maps_1_1MapView.html">Tizen.Maps.MapView</a> classes:</p>
+ <p>The map view and map object can <a href="#maps_event">handle events</a>. Each object has handlers to invoke callbacks for selected events of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Maps_1_1MapObject.html">Tizen.Maps.MapObject</a> and <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Maps_1_1MapView.html">Tizen.Maps.MapView</a> classes:</p>
<ul>
<li>Gestures
<ul>
</privileges>\r
</pre>\r
</li>\r
- <li>To use the methods and properties of the <code>Tizen.Messaging.Messages</code> namespace, include it in your application:\r
+ <li>To use the methods and properties of the Tizen.Messaging.Messages namespace, include it in your application:\r
<pre class="prettyprint">\r
using Tizen.Messaging.Messages;\r
</pre>\r
<li>Type: long</li>
<li>Default: <code>NULL</code></li></ul>
</td>
-</tr>
+</tr>
<tr>
<td><code>expiryDate</code></td>
<td>Time period, in minutes, for storing the request in the push server if the delivery fails:
<p>A client can specify simple access rules when storing items in the secure repository:</p>
<ul>
<li>Extractable or non-extractable
- <p>The secure repository returns the raw value only for items marked extractable. For items marked non-extractable, the secure repository provides secure cryptographic operations to handle it without revealing the key values to the client.</p>
- </li>
+ <ul>
+ <li>Only for data tagged as extractable, the secure repository returns the raw value of the data.</li>
+ <li>If data is tagged as non-extractable, the secure repository does not return its raw value. In that case, the secure repository provides secure cryptographic operations for non-exportable keys without revealing the key values to the clients.</li></ul></li>
<li>Per key password
- <p>All items in the secure repository are protected by a user password. Additionally, a client can provide its own password to encrypt items when saving them into the repository. The same password must then be provided when getting the item from the secure repository.</p>
- </li>
- </ul>
+ <ul>
+ <li>All data in the secure repository is protected by a user password.</li>
+ <li>A client can encrypt its data using their own password additionally.</li>
+ <li>If a client provides a password when storing data, the data is encrypted with the password. This password must be provided when getting the data from the secure repository.</li></ul></li>
+ </ul>
</li>
<li>Access control
<p>By default, only the data owner can access the data. If the owner grants access to other applications, those applications can read or delete the data from the secure depository.</p>
<ul class="toc">
<li><a href="#prerequisites">Prerequisites</a></li>
- <li><a href="#sensor">Creating a Sensor</a></li>
+ <li><a href="#sensor">Creating a Sensor Instance</a></li>
<li><a href="#subscribe">Subscribing to Sensor Events</a></li>
<li><a href="#accelerometer">Accelerometer</a></li>
<li><a href="#mag_rotation">Geomagnetic Rotation Vector Sensor</a></li>
<div id="container"><div id="contents"><div class="content">
<h1>Device Sensors</h1>
<p>You can manage the sensors in the device and receive data from them.</p>
-<p>Using the Tizen.Sensor namespace, you can <a href="#sensor">create sensor instances</a>, which correspond to physical or software-defined sensor devices. The sensor instance is used to check the availability of and control the corresponding sensor.</p>
-<p>After you have created a sensor instance for a specific sensor and <a href="#subscribe">subscribed to sensor events</a>, you can monitor the device's internal sensors for sensor value changes. The application can receive the sensor data only when the data is modified.</p>
+<p>Using the Tizen.Sensor namespace, you can <a href="#sensor">create sensor instances</a>, which correspond to physical or software-defined sensor devices. The sensor instance is used to check the availability of and control the corresponding sensor. After you have created a sensor instance for a specific sensor and <a href="#subscribe">subscribed to sensor events</a>, you can monitor the device's internal sensors for sensor value changes. The application can receive the sensor data only when the data is modified.</p>
<p>When running an application on the emulator, you can use the Emulator Control Panel to simulate sensor data for the application.</p>
Not all devices support all sensors, so each sensor is not necessarily available on all devices. You can <a href="#sensor">check whether a sensor is supported</a>.
</div>
-<p align="center" class="Table"><strong>Table: Sensor Types</strong></p>
+<p align="center" class="Table"><strong>Table: Supported sensor types</strong></p>
<table>
<tbody>
<tr>
- <th colspan="3" align="center">Sensor Types</th>
+ <th colspan="3" align="center">Supported sensor types</th>
</tr>
<tr>
<td><a href="#accelerometer">Accelerometer</a></td>
<tr>
<td><a href="#pedometer">Pedometer</a></td>
<td><a href="#uncal_magnetic">Uncalibrated Magnetic Sensor</a></td>
+ <td>-</td>
</tr>
</tbody>
</table>
<p>To enable your application to use the sensor functionalities:</p>
<ol>
-<li>Include the <a href="https://developer.tizen.org/dev-guide/csapi/namespaceTizen_1_1Sensor.html">Tizen.Sensor</a> namespace in your application:
-<pre class="prettyprint">
-using Tizen.Sensor;
-</pre>
-</li>
-<li>Add the following privilege to your application manifest, if you want to use any health-related sensors:
+<li>To use any health-related sensors, the application has to request permission by adding the following privilege to the <code>tizen-manifest.xml</code> file:
<pre class="prettyprint">
<privileges>
<privilege>http://tizen.org/privilege/healthinfo</privilege>
</privileges>
</pre>
</li>
+<li>Include the <a href="https://developer.tizen.org/dev-guide/csapi/namespaceTizen_1_1Sensor.html">Tizen.Sensor</a> namespace in your application:
+<pre class="prettyprint">
+using Tizen.Sensor;
+</pre>
+</li>
</ol>
-<h2 id="sensor">Creating a Sensor</h2>
+<h2 id="sensor">Creating a Sensor Instance</h2>
-<p>If an application wants to observe data from a specific sensor, a sensor instance needs to be created in advance:</p>
+<p>If an application wants to observe data from a specific sensor, you must create a sensor instance:</p>
-<ol>
+<ul>
<li>For a specific supported sensor type, a device can have multiple sensors.
<p>You can acquire the default sensor (designated by the device vendor) of a given type. The following example shows how to get the default accelerometer of the device by creating a new instance of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Sensor_1_1Accelerometer.html">Tizen.Sensor.Accelerometer</a> class:</p>
<pre class="prettyprint">
/// You can retrieve the total count of accelerometers by using the following property:
/// var count = Accelerometer.Count;
- <span class="highlight">var sensor = new Accelerometer(0);</span> /// The index starts at 0
+ <span class="highlight">var sensor = new Accelerometer(0);</span> /// Index starts at 0
}
catch (NotSupportedException)
{
- /// Accelerometer is not supported in the current device.
+ /// Accelerometer is not supported in the current device
}
</pre>
</li>
-</ol>
+</ul>
<h2 id="subscribe">Subscribing to Sensor Events</h2>
-<p>If a sensor instance is created successfully, it is able to observe sensor data changes through the event handler. In addition, you can set several parameters, including the update interval of the sensor data and the power-save behavior of the sensor. The following example shows how to set the parameters and listen for changes in sensor data:</p>
+<p>If a sensor instance is created successfully, it is able to observe sensor data changes through an event handler. In addition, you can set several parameters, including the update interval of the sensor data and the power-save behavior of the sensor. The following example shows how to set the parameters and listen for changes in sensor data:</p>
<ol>
<li>To listen for sensor events, define a handler and register for the <code>DataUpdated</code> event from the sensor:
EventHandler<AccelerometerDataUpdatedEventArgs> handler = null;
handler = (sender, e) =>
{
- Log.Info(LOGTAG, "X : " + e.X);
- Log.Info(LOGTAG, "Y : " + e.Y);
- Log.Info(LOGTAG, "Z : " + e.Z);
+ Log.Info(LOGTAG, "X: " + e.X);
+ Log.Info(LOGTAG, "Y: " + e.Y);
+ Log.Info(LOGTAG, "Z: " + e.Z);
};
sensor.DataUpdated += handler;
<li>While the sensor is running, you can change the sensor settings:
<ul>
-<li>You can change the sensor update interval by adjusting the <code>Interval</code> property of the individual <code>Tizen.Sensor.XXX</code> instance:
+<li>You can change the sensor update interval by adjusting the <code>Interval</code> property of the sensor instance:
<pre class="prettyprint">
sensor.Interval = 200;
</pre>
</table>
<h2 id="mag_rotation">Geomagnetic Rotation Vector Sensor</h2>
-<p>The geomagnetic rotation vector sensor is the output of a software/hardware-based sensor fusion solution which uses the accelerometer and magnetic sensors to compute the orientation of the device. In this sensor, the computed orientation is free of any drift, but it is inaccurate compared to a sensor fusion solution using the gyroscope sensor. The geomagnetic rotation vector sensor represents the orientation of the device as a combination of an angle and an axis in which the device has rotated through a specific angle around an axis (x, y, or z).</p>
+<p>The geomagnetic rotation vector sensor is the output of a software/hardware-based sensor fusion solution which uses the accelerometer and magnetic sensors to compute the orientation of the device. In this sensor, the computed orientation is free of any drift, but it is inaccurate compared to a sensor fusion solution using the gyroscope sensor. The geomagnetic rotation vector sensor represents the orientation of the device as a combination of an angle and an axis in which the device has rotated through a specific angle around an axis (X, Y, or Z).</p>
<p>The following table lists the measurement data that the geomagnetic rotation vector sensor provides.</p>
<p align="center" class="Table"><strong>Table: Measurement data detected by the geomagnetic rotation vector sensor</strong></p>
</table>
<h2 id="lin_accelerometer">Linear Acceleration Sensor</h2>
-<p>The linear acceleration sensor is derived from the accelerometer by excluding the gravity value, and it measures the user-driven changes in the velocity. The linear acceleration sensor is used to detect the dynamic movement of the device and analyze the user's motion profile. The 3-axes linear acceleration components provide a measure of the combined linear motion subjected to the device in the euclidean space.</p>
+<p>The linear acceleration sensor is derived from the accelerometer by excluding the gravity value, and it measures the user-driven changes in the velocity. The linear acceleration sensor is used to detect the dynamic movement of the device and analyze the user's motion profile. The 3-axes linear acceleration components provide a measure of the combined linear motion subjected to the device in the Euclidean space.</p>
<p>The linear acceleration sensor provides 3 components of acceleration (X, Y, and Z), as the following figure illustrates.</p>
<p align="center"><strong>Figure: User-acceleration sensor vector and axes</strong></p>
<p align="center"><img alt="User-acceleration sensor vector and axes" src="../images/sensor_types_useracceleration_vector.png" /></p>
<p>The <code>ProximitySensorState</code> property is one of the values of the <a href="https://developer.tizen.org/dev-guide/csapi/namespaceTizen_1_1Sensor.html#ae32c5cd39c20445f090eb45a8b707728">Tizen.Sensor.ProximitySensorState</a> enumeration: <code>Unknown</code>, <code>Far</code>, or <code>Near</code>.</p>
<h2 id="rotation">Rotation Vector Sensor</h2>
-<p>The rotation vector sensor represents the orientation of the device as a combination of an angle and an axis, in which the device has rotated through a specific angle around an axis (x, y, or z). The rotation vector is the output of a software/hardware-based sensor fusion solution, which uses the accelerometer, gyroscope, and magnetic sensor as inputs to compute the orientation of the device.</p>
+<p>The rotation vector sensor represents the orientation of the device as a combination of an angle and an axis, in which the device has rotated through a specific angle around an axis (X, Y, or Z). The rotation vector is the output of a software/hardware-based sensor fusion solution, which uses the accelerometer, gyroscope, and magnetic sensor as inputs to compute the orientation of the device.</p>
<p>The following table lists the measurement data that the rotation vector sensor provides.</p>
<p align="center" class="Table"><strong>Table: Measurement data detected by the rotation vector</strong></p>
<p>To retrieve storage information:</p>
<ol>
-<li>Retrieve all storages in a device using the <code>Storages</code> property of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1System_1_1StorageManager.html">Tizen.System.StorageManager</a> class, which returns a list of all device storages as instances of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1System_1_1Storage.html">Tizen.System.Storage</a> class:
+<li>Retrieve all storages on a device using the <code>Storages</code> property of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1System_1_1StorageManager.html">Tizen.System.StorageManager</a> class, which returns a list of all device storages as instances of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1System_1_1Storage.html">Tizen.System.Storage</a> class:
<pre class="prettyprint">
var storages = StorageManager.Storages;
<h2 id="space">Retrieving Storage Space Information</h2>
-<p>To get the available and total size of the storage, use the <code>TotalSpace</code> and <code>AvailableSpace</code> properties in the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1System_1_1Storage.html">Tizen.System.Storage</a> class. For internal storage, they return the storage size, excluding the minimum memory size to launch the low memory pop-up in case of a low memory situation. Consequently, the available size must be less than the original available size, and you must use these properties to get the memory size.</p>
+<p>To get the available and total size of the storage, use the <code>TotalSpace</code> and <code>AvailableSpace</code> properties in the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1System_1_1Storage.html">Tizen.System.Storage</a> class. For internal storage, they return the storage size, excluding the minimum memory size to launch the low memory pop-up in a low memory situation. Consequently, the available size must be less than the original available size, and you must use these properties to get the memory size.</p>
<p>To retrieve storage space information:</p>
<ul>
<li><a href="#prerequisites">Prerequisites</a></li>
<li><a href="#set_callback">Setting Sync Adapter Callbacks</a></li>
<li><a href="#set_parameters">Defining a Sync Job</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="#on_demand_sync">Requesting an On-demand Sync Job</a></li>
+ <li><a href="#periodic_sync">Requesting a Periodic Sync Job</a></li>
+ <li><a href="#data_change_sync">Requesting a Data Change Sync Job</a></li>
<li><a href="#foreach_sync">Retrieving All Registered Sync Jobs</a></li>
<li><a href="#remove_sync">Removing Sync Jobs</a></li>
</ul>
<ul>
<li>Defining a sync job
<p>You can <a href="#set_parameters">create a new sync job</a> and add user data into it as either an account information instance or a data bundle.</p></li>
- <li>Defining an on-demand sync job
+ <li>Requesting an on-demand sync job
<p>You can <a href="#on_demand_sync">add an on-demand sync job</a> for a one-time operation.</p></li>
- <li>Defining a periodic sync job
+ <li>Requesting a periodic sync job
<p>You can <a href="#periodic_sync">add a periodic sync job</a> with a recurring cycle.</p></li>
- <li>Defining a data chance sync job
+ <li>Requesting a data chance sync job
<p>You can <a href="#data_change_sync">add a data change sync job</a> for receiving a notification whenever a specific database changes.</p></li>
<li>Retrieving all registered sync jobs
<p>You can <a href="#foreach_sync">get a list of all registered sync jobs</a>.</p></li>
<h2 id="prerequisites">Prerequisites</h2>
-<p>To enable your application to use the sync manager functionality:</p>
-<ul>
+<p>To enable your application to use the synchronization functionality:</p>
+<ol>
<li>To use the <a href="https://developer.tizen.org/dev-guide/csapi/namespaceTizen_1_1Account_1_1SyncManager.html">Tizen.Account.SyncManager</a> namespace, the application has to request permission by adding the following privileges to the <code>tizen-manifest.xml</code> file:
<pre class="prettyprint">
<privileges>
</privileges>
</pre>
</li>
-<li> <p>To use the methods and properties of the Tizen.Account.SyncManager namespace, include it in your application:</p>
+<li>To use the methods and properties of the Tizen.Account.SyncManager namespace, include it in your application:
<pre class="prettyprint">
using Tizen.Account.SyncManager;
</pre>
</li>
-</ul>
+</ol>
<div class="note">
<strong>Note</strong>
- To use the features of the <a href="https://developer.tizen.org/dev-guide/csapi/namespaceTizen_1_1Account_1_1SyncManager.html">Tizen.Account.SyncManager</a> namespace, <a href="#set_callback">setting the callbacks</a> needs to be carried out first by a service application. A UI application cannot initialize or set callback methods through the <a href="https://developer.tizen.org/dev-guide/csapi/namespaceTizen_1_1Account_1_1SyncManager_1_1SyncAdapter.html">Tizen.Account.SyncManager.SyncAdapter</a> class. Instead, methods of the <a href="https://developer.tizen.org/dev-guide/csapi/namespaceTizen_1_1Account_1_1SyncManager_1_1SyncClient.html">Tizen.Account.SyncManager.SyncClient</a> class need to be called by the UI application to request sync operations from the service application.
+ To use the features of the <a href="https://developer.tizen.org/dev-guide/csapi/namespaceTizen_1_1Account_1_1SyncManager.html">Tizen.Account.SyncManager</a> namespace, the service application must first <a href="#set_callback">set the callbacks</a>. A UI application cannot initialize or set callback methods through the <a href="https://developer.tizen.org/dev-guide/csapi/namespaceTizen_1_1Account_1_1SyncManager_1_1SyncAdapter.html">Tizen.Account.SyncManager.SyncAdapter</a> class. Instead, the UI application must call the methods of the <a href="https://developer.tizen.org/dev-guide/csapi/namespaceTizen_1_1Account_1_1SyncManager_1_1SyncClient.html">Tizen.Account.SyncManager.SyncClient</a> class to request sync operations from the service application.
</div>
<h2 id="set_callback">Setting Sync Adapter Callbacks</h2>
</pre>
</li>
- <li>Register the event callbacks with the <code>SetSyncEventCallbacks()</code> method of the <code>Tizen.Account.SyncManager.SyncAdapter</code> class to receive notifications regarding the sync operation.
+ <li>Register the event callbacks with the <code>SetSyncEventCallbacks()</code> method of the <a href="https://developer.tizen.org/dev-guide/csapi/namespaceTizen_1_1Account_1_1SyncManager_1_1SyncAdapter.html">Tizen.Account.SyncManager.SyncAdapter</a> class to receive notifications regarding the sync operation.
<p>When a specific event is detected or a sync job is requested, the <code>StartSyncCallback</code> or <code>CancelSyncCallback</code> events of the <code>Tizen.Account.SyncManager.SyncAdapter</code> class are invoked.</p>
<pre class="prettyprint">
SyncAdapter obj = new SyncAdapter();
<p>You can add user data to a sync job as an account information instance or as a data bundle:</p>
<ul>
- <li>To add account information to a sync job, create a new instance of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Account_1_1AccountManager_1_1Account.html">Tizen.Account.AccountManager.Account</a> class, add your account information into it, and then add it into the sync job as the <code>Account</code> property of the <code>Tizen.Account.SyncManager.SyncJobData</code> instance. For more information about creating accounts, see <a href="account.htm#add">Creating an Account</a>.
+ <li>To add account information to a sync job, create a new instance of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Account_1_1AccountManager_1_1Account.html">Tizen.Account.AccountManager.Account</a> class, add your account information into it, and then add it into the sync job as the <code>Account</code> property of the <code>Tizen.Account.SyncManager.SyncJobData</code> instance. For more information about creating accounts, see <a href="account.htm#add">Creating and Managing an Account</a>.
<pre class="prettyprint">
using Tizen.Account.AccountManager;
</ul>
- <h2 id="on_demand_sync">Defining an On-demand Sync Job</h2>
+ <h2 id="on_demand_sync">Requesting an On-demand Sync Job</h2>
<p>To request a one-time sync job from the Sync Adapter service application, use the <code>RequestOnDemandSyncJob()</code> method of the <a href="https://developer.tizen.org/dev-guide/csapi/namespaceTizen_1_1Account_1_1SyncManager_1_1SyncClient.html">Tizen.Account.SyncManager.SyncClient</a> class:</p>
<pre class="prettyprint">
</pre>
- <h2 id="periodic_sync">Defining a Periodic Sync Job</h2>
+ <h2 id="periodic_sync">Requesting a Periodic Sync Job</h2>
<p>To register a periodically-recurring sync operation with the Sync Adapter service application:</p>
- <ol>
+ <ul>
<li>To set up a periodic sync job with a regular sync interval, use the <code>AddPeriodicSyncJob()</code> method of the <a href="https://developer.tizen.org/dev-guide/csapi/namespaceTizen_1_1Account_1_1SyncManager_1_1SyncClient.html">Tizen.Account.SyncManager.SyncClient</a> class, and give the sync interval as a value of the <code>Tizen.Account.SyncManager.SyncPeriod</code> enumeration. In the following example, the sync interval is set to 30 minutes:
<pre class="prettyprint">
SyncJobData SyncData = new SyncJobData();
</pre>
</li>
- <li>You can also use the <code>AddPeriodicSyncJob()</code> method to renew a previously registered periodic sync job by using the same <a href="https://developer.tizen.org/dev-guide/csapi/namespaceTizen_1_1Account_1_1SyncManager_1_1SyncJobData.html">Tizen.Account.SyncManager.SyncJobData</a> instance with new parameters:
+ <li>You can renew a previously registered periodic sync job with the <code>AddPeriodicSyncJob()</code> method by using the same <a href="https://developer.tizen.org/dev-guide/csapi/namespaceTizen_1_1Account_1_1SyncManager_1_1SyncJobData.html">Tizen.Account.SyncManager.SyncJobData</a> instance with new parameters:
<pre class="prettyprint">
SyncJobData SyncData = new SyncJobData();
SyncData.SyncJobName = "PeriodicSyncJob";
id = SyncClient.AddPeriodicSyncJob(SyncData, SyncPeriod.TwoHours, SyncOption.Expedited);
</pre>
</li>
- </ol>
+ </ul>
<h2 id="data_change_sync">Defining a Data Change Sync Job</h2>
- <p>To register a data change sync job with the Sync Adapter service application, to occur whenever a corresponding database changes:</p>
- <ol>
+ <p>To register a data change sync job with the Sync Adapter service application, to occur whenever corresponding data changes:</p>
+ <ul>
<li>Add a data change sync job with the <code>AddDataChangeSyncJob()</code> method of the <a href="https://developer.tizen.org/dev-guide/csapi/namespaceTizen_1_1Account_1_1SyncManager_1_1SyncClient.html">Tizen.Account.SyncManager.SyncClient</a> class. This method adds the sync job only for the capability given as the value of the <code>SyncJobName</code> property of the <a href="https://developer.tizen.org/dev-guide/csapi/namespaceTizen_1_1Account_1_1SyncManager_1_1SyncJobData.html">Tizen.Account.SyncManager.SyncJobData</a> instance. For example, to add a data change sync job for the calendar:
<pre class="prettyprint">
SyncJobData SyncData = new SyncJobData();
</pre>
</li>
- <li>You can also use the <code>AddDataChangeSyncJob()</code> method to renew a previously registered data change sync job by using the same <a href="https://developer.tizen.org/dev-guide/csapi/namespaceTizen_1_1Account_1_1SyncManager_1_1SyncJobData.html">Tizen.Account.SyncManager.SyncJobData</a> instance with new parameters:
+ <li>You can renew a previously registered data change sync job with the <code>AddDataChangeSyncJob()</code> method by using the same <code>Tizen.Account.SyncManager.SyncJobData</code> instance with new parameters:
<pre class="prettyprint">
SyncJobData SyncData = new SyncJobData();
SyncData.SyncJobName = SyncJobData.ContactCapability;
id = SyncClient.AddDataChangeSyncJob(SyncData, SyncOption.None);
</pre>
</li>
- </ol>
+ </ul>
<h2 id="foreach_sync">Retrieving All Registered Sync Jobs</h2>
foreach (var pair in <span class="highlight">SyncClient.GetAllSyncJobs()</span>)
{
- Console.Write(pair.Key + " : ");
+ Console.Write(pair.Key + ": ");
Console.WriteLine(pair.Value);
}
</pre>
<div id="toc-navigation">
<div id="profile">
- <p><img alt="Mobile C#" src="images/mobile_s_cs.png"/></p>
+ <p><img alt="Mobile C#" src="../images/mobile_s_cs.png"/></p>
</div>
<div id="toc_border"><div id="toc">
<p>To create a command list and commands:</p>
<ol>
-<li>Create a command list with the command list handle.
+<li>Create a command list with a command list handle.
<p>The command list can include many commands, which each have a command text and type. The list can have both the <code>Foreground</code> and <code>Background</code> type commands (the types are defined in the <a href="https://developer.tizen.org/dev-guide/csapi/namespaceTizen_1_1Uix_1_1VoiceControl.html#a03e1eba535abb2bfd30438e5766dbb31">Tizen.Uix.VoiceControl.CommandType</a> enumeration. The foreground commands are valid when the application is in a visible state and the background commands are valid when the application is in a visible or invisible state.</p>
<p>You can access the command list after you set it to the voice control and when you get the recognition result. </p>
<div class="note">
<strong>Note</strong>
-You can test Wi-Fi functionality on a target device only. The emulator does not support this feature.
+You can test the Wi-Fi functionality on a target device only. The emulator does not support this feature.
</div>
<h2 id="prerequisites">Prerequisites</h2>
</privileges>
</pre>
</li>
- <li>To use the methods and properties of the <code>Tizen.Network.WiFi</code> namespace, include it in your application:
+ <li>To use the methods and properties of the Tizen.Network.WiFi namespace, include it in your application:
<pre class="prettyprint">
using Tizen.Network.WiFi;
</pre>
<div id="toc-navigation">
<div id="profile">
- <p><img alt="Mobile C#" src="images/mobile_s_cs.png"/></p>
+ <p><img alt="Mobile C#" src="../images/mobile_s_cs.png"/></p>
</div>
<div id="toc_border"><div id="toc">
<li>Connecting to a specific Wi-Fi Direct peer device
<p>You can <a href="#connect_specific_peer">connect to a specific Wi-Fi Direct device</a>. When the connection is no longer needed, you can end it.</p></li>
<li>Managing Wi-Fi Direct groups
- <p>You can <a href="#manage_wifi_direct_groups">create a Wi-Fi Direct group</a>, and destroy it when no longer needed.</p></li>
+ <p>You can <a href="#managing_wifi_direct_groups">create a Wi-Fi Direct group</a>, and destroy it when no longer needed.</p></li>
</ul>
<div class="note">
<strong>Note</strong>
-You can test Wi-Fi functionality on a target device only. The emulator does not support this feature.
+You can test the Wi-Fi Direct functionality on a target device only. The emulator does not support this feature.
</div>
<h2 id="prerequisites">Prerequisites</h2>
</privileges>
</pre>
</li>
- <li>To use the methods and properties of the <code>Tizen.Network.WiFiDirect</code> namespace, include it in your application:
+ <li>To use the methods and properties of the Tizen.Network.WiFiDirect namespace, include it in your application:
<pre class="prettyprint">
using Tizen.Network.WiFiDirect;
</pre>
<h2 id="activate_wifi_direct">Activating Wi-Fi Direct</h2>
-<p>To activate a WiFi-Direct local device and check the device state:</p>
+<p>To activate a Wi-Fi Direct local device and check the device state:</p>
<ol>
<li>Activate Wi-Fi Direct on the local device using the <code>Activate()</code> method of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Network_1_1WiFiDirect_1_1WiFiDirectManager.html">Tizen.Network.WiFiDirect.WiFiDirectManager</a> class.
<pre class="prettyprint">