--- /dev/null
+<!DOCTYPE html PUBLIC "html">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="tizen.css" media="screen">
+<script type="text/javascript" src="snippet.js"></script><title>Archive API</title>
+</head>
+<body id="page-content" onload="prettyPrint()">
+<div class="api" id="::Archive">
+<div class="supported-platforms"><img class="wearable-mandatory emulator" title="Mandatory, Supported by Tizen Wearable emulator" src="ww_icon.png"></div>
+<div class="title"><h1>Archive API</h1></div>
+<div class="brief">
+ The Archive API provides functions to create and manage archive files.
+You can extract files, add a file to an archive file, and so on.
+ </div>
+<div class="description">
+ <p>
+For more information about how to use Archive API, see <a href="../../../../../org.tizen.guides/html/web/tizen/input_output/archive_w.htm">Archive Guide</a>.
+ </p>
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<h2>Table of Contents</h2>
+<ul class="toc">
+<li>1. <a href="#typedefs-section">Type Definitions</a><ul class="toc">
+<li>1.1. <a href="#FileReference">FileReference</a>
+</li>
+<li>1.2. <a href="#ArchiveCompressionLevel">ArchiveCompressionLevel</a>
+</li>
+</ul>
+</li>
+<li>2. <a href="#interfaces-section">Interfaces</a><ul class="toc">
+<li>2.1. <a href="#ArchiveManagerObject">ArchiveManagerObject</a>
+</li>
+<li>2.2. <a href="#ArchiveFileOptions">ArchiveFileOptions</a>
+</li>
+<li>2.3. <a href="#ArchiveFileEntryOptions">ArchiveFileEntryOptions</a>
+</li>
+<li>2.4. <a href="#ArchiveManager">ArchiveManager</a>
+</li>
+<li>2.5. <a href="#ArchiveFile">ArchiveFile</a>
+</li>
+<li>2.6. <a href="#ArchiveFileEntry">ArchiveFileEntry</a>
+</li>
+<li>2.7. <a href="#ArchiveFileSuccessCallback">ArchiveFileSuccessCallback</a>
+</li>
+<li>2.8. <a href="#ArchiveFileEntrySuccessCallback">ArchiveFileEntrySuccessCallback</a>
+</li>
+<li>2.9. <a href="#ArchiveFileEntryArraySuccessCallback">ArchiveFileEntryArraySuccessCallback</a>
+</li>
+<li>2.10. <a href="#ArchiveFileProgressCallback">ArchiveFileProgressCallback</a>
+</li>
+</ul>
+</li>
+<li>3. <a href="#full-webidl">Full WebIDL</a>
+</li>
+</ul>
+<hr>
+<h2 id="method-summary">Summary of Interfaces and Methods</h2>
+<table class="informaltable">
+<thead><tr>
+<th>Interface</th>
+<th>Method</th>
+</tr></thead>
+<tbody>
+<tr>
+<td><a href="#ArchiveManagerObject">ArchiveManagerObject</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#ArchiveFileOptions">ArchiveFileOptions</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#ArchiveFileEntryOptions">ArchiveFileEntryOptions</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#ArchiveManager">ArchiveManager</a></td>
+<td>long <a href="#ArchiveManager::open">open</a> (<a href="#FileReference">FileReference</a> file, <a href="filesystem.html#FileMode">FileMode</a> mode, <a href="#ArchiveFileSuccessCallback">ArchiveFileSuccessCallback</a> onsuccess, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? onerror, optional <a href="#ArchiveFileOptions">ArchiveFileOptions</a>? options)<br>
+ void <a href="#ArchiveManager::abort">abort</a> (long operationIdentifier)</td>
+</tr>
+<tr>
+<td><a href="#ArchiveFile">ArchiveFile</a></td>
+<td>long <a href="#ArchiveFile::add">add</a> (<a href="#FileReference">FileReference</a> sourceFile, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? onsuccess, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? onerror, optional <a href="#ArchiveFileProgressCallback">ArchiveFileProgressCallback</a>? onprogress, optional <a href="#ArchiveFileEntryOptions">ArchiveFileEntryOptions</a>? options)<br>
+ long <a href="#ArchiveFile::extractAll">extractAll</a> (<a href="#FileReference">FileReference</a> destinationDirectory, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? onsuccess, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? onerror, optional <a href="#ArchiveFileProgressCallback">ArchiveFileProgressCallback</a>? onprogress, optional boolean? overwrite)<br>
+ long <a href="#ArchiveFile::getEntries">getEntries</a> (<a href="#ArchiveFileEntryArraySuccessCallback">ArchiveFileEntryArraySuccessCallback</a> onsuccess, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? onerror)<br>
+ long <a href="#ArchiveFile::getEntryByName">getEntryByName</a> (DOMString name, <a href="#ArchiveFileEntrySuccessCallback">ArchiveFileEntrySuccessCallback</a> onsuccess, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? onerror)<br>
+ void <a href="#ArchiveFile::close">close</a> ()</td>
+</tr>
+<tr>
+<td><a href="#ArchiveFileEntry">ArchiveFileEntry</a></td>
+<td>long <a href="#ArchiveFileEntry::extract">extract</a> (<a href="#FileReference">FileReference</a> destinationDirectory, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? onsuccess, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? onerror, optional <a href="#ArchiveFileProgressCallback">ArchiveFileProgressCallback</a>? onprogress, optional boolean? stripName, optional boolean? overwrite)</td>
+</tr>
+<tr>
+<td><a href="#ArchiveFileSuccessCallback">ArchiveFileSuccessCallback</a></td>
+<td>void <a href="#ArchiveFileSuccessCallback::onsuccess">onsuccess</a> (<a href="#ArchiveFile">ArchiveFile</a> archive)</td>
+</tr>
+<tr>
+<td><a href="#ArchiveFileEntrySuccessCallback">ArchiveFileEntrySuccessCallback</a></td>
+<td>void <a href="#ArchiveFileEntrySuccessCallback::onsuccess">onsuccess</a> (<a href="#ArchiveFileEntry">ArchiveFileEntry</a> entry)</td>
+</tr>
+<tr>
+<td><a href="#ArchiveFileEntryArraySuccessCallback">ArchiveFileEntryArraySuccessCallback</a></td>
+<td>void <a href="#ArchiveFileEntryArraySuccessCallback::onsuccess">onsuccess</a> (<a href="#ArchiveFileEntry">ArchiveFileEntry</a>[] entries)</td>
+</tr>
+<tr>
+<td><a href="#ArchiveFileProgressCallback">ArchiveFileProgressCallback</a></td>
+<td>void <a href="#ArchiveFileProgressCallback::onprogress">onprogress</a> (long operationIdentifier, double value, DOMString filename)</td>
+</tr>
+</tbody>
+</table>
+<div class="typedefs" id="typedefs-section">
+<h2>1. Type Definitions</h2>
+<div class="typedef" id="FileReference">
+<a class="backward-compatibility-anchor" name="::Archive::FileReference"></a><h3>1.1. FileReference</h3>
+<div class="brief">
+ File reference for an archive file.
+It can be either a <var>File</var> object or a virtual path.
+ </div>
+<pre class="webidl prettyprint"> typedef (DOMString or <a href="filesystem.html#File">File</a>) FileReference;</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</div>
+<div class="enum" id="ArchiveCompressionLevel">
+<a class="backward-compatibility-anchor" name="::Archive::ArchiveCompressionLevel"></a><h3>1.2. ArchiveCompressionLevel</h3>
+<div class="brief">
+ Enumeration for the compression level.
+ </div>
+<pre class="webidl prettyprint"> enum ArchiveCompressionLevel {"STORE", "FAST", "NORMAL", "BEST"};</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <ul>
+ <li>
+STORE - No compression. The file is stored unchanged. </li>
+ <li>
+FAST - Choose the fastest compression method, compression savings will be less. </li>
+ <li>
+NORMAL - Default compression level. </li>
+ <li>
+BEST - Choose the best compression method, compression may be slow. </li>
+ </ul>
+ </div>
+</div>
+</div>
+<div class="interfaces" id="interfaces-section">
+<h2>2. Interfaces</h2>
+<div class="interface" id="ArchiveManagerObject">
+<a class="backward-compatibility-anchor" name="::Archive::ArchiveManagerObject"></a><h3>2.1. ArchiveManagerObject</h3>
+<div class="brief">
+ The ArchiveManagerObject interface defines what is instantiated in the <em>Tizen</em> object.
+ </div>
+<pre class="webidl prettyprint"> [NoInterfaceObject] interface ArchiveManagerObject {
+ readonly attribute <a href="#ArchiveManager">ArchiveManager</a> archive;
+ };</pre>
+<pre class="webidl prettyprint"> <a href="tizen.html#Tizen">Tizen</a> implements <a href="#ArchiveManagerObject">ArchiveManagerObject</a>;</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The <em>tizen.archive</em> object allows access to the Archive API.
+ </p>
+ </div>
+</div>
+<div class="dictionary" id="ArchiveFileOptions">
+<a class="backward-compatibility-anchor" name="::Archive::ArchiveFileOptions"></a><h3>2.2. ArchiveFileOptions</h3>
+<div class="brief">
+ The ArchiveFileOptions dictionary represents the option to decide if an archive file can be overwritten when an archive file is opened.
+ </div>
+<pre class="webidl prettyprint"> dictionary ArchiveFileOptions {
+ boolean overwrite;
+
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="attributes">
+<h4>Dictionary members</h4>
+<dl>
+<dt class="member" id="ArchiveFileOptions::overwrite"><span class="attrName">boolean overwrite</span></dt>
+<dd>
+<div class="brief">
+ Indicates whether opening an archive file for writing can overwrite the contents of the existing file.
+ </div>
+<div class="description">
+ <ul>
+ <li>
+true - The archive file is overwritten if an archive file with a same name exists in the same location. The previous contents are lost. </li>
+ <li>
+false - The archive file is not overwritten if an archive file with a same name exists in the same location. </li>
+ </ul>
+ <p>
+The default value is <var>false</var> </p>
+ <p>
+See description of the <em>mode</em> argument of the <em>open()</em> method.
+ </p>
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="dictionary" id="ArchiveFileEntryOptions">
+<a class="backward-compatibility-anchor" name="::Archive::ArchiveFileEntryOptions"></a><h3>2.3. ArchiveFileEntryOptions</h3>
+<div class="brief">
+ The ArchiveFileEntryOptions dictionary controls behavior when adding a file to an archive.
+ </div>
+<pre class="webidl prettyprint"> dictionary ArchiveFileEntryOptions {
+ DOMString destination;
+
+ boolean stripSourceDirectory;
+
+ <a href="#ArchiveCompressionLevel">ArchiveCompressionLevel</a> compressionLevel;
+
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="attributes">
+<h4>Dictionary members</h4>
+<dl>
+<dt class="member" id="ArchiveFileEntryOptions::destination"><span class="attrName">DOMString destination</span></dt>
+<dd>
+<div class="brief">
+ Path where <em>ArchiveFileEntry</em> should be stored in an archive file.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="remark"> Remark : </span>
+ If destination is not set, then the root directory of archive will be used (equivalent to <var>destination = ""</var>).
+ </p>
+</dd>
+<dt class="member" id="ArchiveFileEntryOptions::stripSourceDirectory"><span class="attrName">boolean stripSourceDirectory</span></dt>
+<dd>
+<div class="brief">
+ Controls whether leading directory information is stripped from the source file name before storing.
+ </div>
+<div class="description">
+ <p>
+The virtual root is always removed.
+To omit all the remaining directory names, set <em>stripSourceDirectory</em> to <var>true</var>.
+ </p>
+ <table>
+ <tr>
+ <th rowspan="2">
+Source file name </th>
+ <th colspan="2">
+Target file name when <em>destination</em> is "mypackage" </th>
+ </tr>
+ <tr>
+ <th>
+stripSourceDirectory: <em>true</em> </th>
+ <th>
+stripSourceDirectory: <em>false</em> </th>
+ </tr>
+ <tr>
+ <td>
+documents/tizen/archive/example/test.js </td>
+ <td>
+mypackage/test.js </td>
+ <td>
+mypackage/tizen/archive/example/test.js </td>
+ </tr>
+ <tr>
+ <td>
+wgt-private/test/js/main.js </td>
+ <td>
+mypackage/main.js </td>
+ <td>
+mypackage/test/js/main.js </td>
+ </tr>
+ <tr>
+ <td>
+downloads/test.c </td>
+ <td>
+mypackage/test.c </td>
+ <td>
+mypackage/test.c </td>
+ </tr>
+ </table>
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="remark"> Remark : </span>
+ The default value is <var>false</var>.
+ </p>
+</dd>
+<dt class="member" id="ArchiveFileEntryOptions::compressionLevel"><span class="attrName"><a href="#ArchiveCompressionLevel">ArchiveCompressionLevel</a> compressionLevel</span></dt>
+<dd>
+<div class="brief">
+ Compression level.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="remark"> Remark : </span>
+ The default compression level is <var>NORMAL</var>.
+ </p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="ArchiveManager">
+<a class="backward-compatibility-anchor" name="::Archive::ArchiveManager"></a><h3>2.4. ArchiveManager</h3>
+<div class="brief">
+ The ArchiveManager interface provides methods for global operations related to ArchiveFile.
+ </div>
+<pre class="webidl prettyprint"> [NoInterfaceObject] interface ArchiveManager {
+ long open(<a href="#FileReference">FileReference</a> file,
+ <a href="filesystem.html#FileMode">FileMode</a> mode,
+ <a href="#ArchiveFileSuccessCallback">ArchiveFileSuccessCallback</a> onsuccess,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? onerror,
+ optional <a href="#ArchiveFileOptions">ArchiveFileOptions</a>? options) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void abort(long operationIdentifier) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="ArchiveManager::open">
+<a class="backward-compatibility-anchor" name="::Archive::ArchiveManager::open"></a><code><b><span class="methodName">open</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Opens the archive file. After this operation, it is possible to add or get files to and from the archive.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">long open(<a href="#FileReference">FileReference</a> file, <a href="filesystem.html#FileMode">FileMode</a> mode, <a href="#ArchiveFileSuccessCallback">ArchiveFileSuccessCallback</a> onsuccess, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? onerror, optional <a href="#ArchiveFileOptions">ArchiveFileOptions</a>? options);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The errorCallback is launched with these error types:
+ </p>
+ <ul>
+ <li>
+InvalidValuesError: If archiveFile format is not recognized </li>
+ <li>
+NotFoundError: If the <em>mode</em> is "r" and the <em>file</em> does not exist, or the <em>mode</em> is not "r" and the <em>file</em> cannot be created because the path of the file after excluding its file name does not exist </li>
+ <li>
+IOError: If the access is denied due to insufficient permissions </li>
+ <li>
+UnknownError: In case of any other error </li>
+ </ul>
+ <p>
+Use <em>mode</em> depending on which operation are intended:
+ </p>
+ <table>
+ <tr>
+ <th>
+Mode </th>
+ <th>
+Description </th>
+ </tr>
+ <tr>
+ <td>
+r </td>
+ <td>
+Use this mode for extracting or getting information about the contents of an archive file. <br><em>file</em> must exist. If the <em>file</em> does not exist, <em>onerror</em> will be invoked (<em>NotFoundError</em>).<br>When an archive file is opened in this mode, <em>add()</em> will not be available. (<em>IOError</em> will be thrown.) </td>
+ </tr>
+ <tr>
+ <td>
+w </td>
+ <td>
+Use this mode to create an archive file and add files to the archive file. <br>If <em>file</em> does not exist, it will be created. <br>If <em>file</em> exists and the <em>overwrite</em> option is <var>true</var>, the existing file will be overwritten with empty archive. <br>If <em>file</em> exists and the <em>overwrite</em> option is <var>false</var>, <em>onerror</em> callback will be invoked (<em>InvalidModificationError</em>). <br>When an archive file is opened in this mode, <em>getEntries()</em>, <em>getEntryByName()</em>, and <em>extractAll()</em> are not available. (<em>IOError</em> will be thrown.)
+ </td>
+ </tr>
+ <tr>
+ <td>
+rw </td>
+ <td>
+Use this mode for archive zipping/unzipping. <br>If <em>file</em> does not exist, it will be created. <br>If <em>file</em> exists and the <em>overwrite</em> option is <var>true</var>, the existing file will be overwritten with an empty archive. <br>If <em>file</em> exists and the <em>overwrite</em> option is <var>false</var>, the existing contents are preserved.
+Both adding and extracting will be available. <br> </td>
+ </tr>
+ <tr>
+ <td>
+a </td>
+ <td>
+Use this mode to add new files to an archive file. <br>If <em>file</em> does not exist, it will be created. <br>If <em>file</em> exists, then the previous contents of the archive file are preserved and new files can be added to the archive file.
+In this mode, <em>getEntries()</em>, <em>getEntryByName()</em>, and <em>extractAll()</em> are not available. (<em>IOError</em> will be thrown.)
+ </td>
+ </tr>
+ </table>
+ </div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/filesystem.write
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">file</span>:
+ File to open
+ </li>
+ <li class="param">
+<span class="name">mode</span>:
+ File mode for the opened archive. Determines which operations are available
+ </li>
+ <li class="param">
+<span class="name">onsuccess</span>:
+ Callback method to be invoked when archive is opened successfully
+ </li>
+ <li class="param">
+<span class="name">onerror</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Callback method to be invoked when an error occurs
+ </li>
+ <li class="param">
+<span class="name">options</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Additional options for initializing the ArchiveFile instance
+ </li>
+ </ul>
+</div>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ long Task ID which can be used to cancel the operation with abort()
+ </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if parameter type does not match.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> function successCallback(archive) {
+ console.log("Success, can now read from archive " + archive);
+ }
+
+ function errorCallback(error) {
+ console.log(error);
+ }
+
+ tizen.archive.open("downloads/some_archive.zip", "r", successCallback, errorCallback);
+ </pre>
+</div>
+</dd>
+<dt class="method" id="ArchiveManager::abort">
+<a class="backward-compatibility-anchor" name="::Archive::ArchiveManager::abort"></a><code><b><span class="methodName">abort</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Cancels an operation with the given identifier.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void abort(long operationIdentifier);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">operationIdentifier</span>:
+ Task ID returned by an asynchronous function from this module
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul><li class="list"><p>
+ with error type UnknownError, if any error occurs.
+ </p></li></ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> function openSuccess(archive) {
+ operationId = archive.extractAll("downloads/extracted");
+ tizen.archive.abort(operationId);
+ }
+
+ tizen.archive.open("downloads/some_archive.zip", "r", openSuccess);
+ </pre>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="ArchiveFile">
+<a class="backward-compatibility-anchor" name="::Archive::ArchiveFile"></a><h3>2.5. ArchiveFile</h3>
+<div class="brief">
+ The ArchiveFile interface provides access to member files of the archive file.
+ </div>
+<pre class="webidl prettyprint"> interface ArchiveFile {
+ readonly attribute <a href="filesystem.html#FileMode">FileMode</a> mode;
+
+ readonly attribute unsigned long long? decompressedSize;
+
+ long add(<a href="#FileReference">FileReference</a> sourceFile,
+ optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? onsuccess,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? onerror,
+ optional <a href="#ArchiveFileProgressCallback">ArchiveFileProgressCallback</a>? onprogress,
+ optional <a href="#ArchiveFileEntryOptions">ArchiveFileEntryOptions</a>? options) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ long extractAll(<a href="#FileReference">FileReference</a> destinationDirectory,
+ optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? onsuccess,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? onerror,
+ optional <a href="#ArchiveFileProgressCallback">ArchiveFileProgressCallback</a>? onprogress,
+ optional boolean? overwrite) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ long getEntries(<a href="#ArchiveFileEntryArraySuccessCallback">ArchiveFileEntryArraySuccessCallback</a> onsuccess,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? onerror) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ long getEntryByName(DOMString name,
+ <a href="#ArchiveFileEntrySuccessCallback">ArchiveFileEntrySuccessCallback</a> onsuccess,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? onerror) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void close() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul>
+<li class="attribute" id="ArchiveFile::mode">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">FileMode </span><span class="name">mode</span></span><div class="brief">
+ attribute File mode when it is opened.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="ArchiveFile::decompressedSize">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">unsigned long long </span><span class="name">decompressedSize</span><span class="optional"> [nullable]</span></span><div class="brief">
+ Size of all the files included in the archive after decompression.
+ </div>
+<div class="description">
+ <p>
+The size is <var>null</var> until the archive is opened.
+ </p>
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+</ul>
+</div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="ArchiveFile::add">
+<a class="backward-compatibility-anchor" name="::Archive::ArchiveFile::add"></a><code><b><span class="methodName">add</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Adds a new member file to <em>ArchiveFile</em>.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">long add(<a href="#FileReference">FileReference</a> sourceFile, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? onsuccess, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? onerror, optional <a href="#ArchiveFileProgressCallback">ArchiveFileProgressCallback</a>? onprogress, optional <a href="#ArchiveFileEntryOptions">ArchiveFileEntryOptions</a>? options);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+If <em>sourceFile</em> refers to a directory,
+the directory and its content will be added to ArchiveFile.
+ </p>
+ <p>
+The errorCallback is launched with these error types:
+ </p>
+ <ul>
+ <li>
+NotFoundError: If the given <em>sourceFile</em> does not exist </li>
+ <li>
+IOError: If archiveFile can not be written due the lack of access permission </li>
+ <li>
+InvalidModificationError: If the operation results in a name conflict in the archive<br>i.e. two entries in the archive with the same name (including directory names). </li>
+ <li>
+UnknownError: In any case of any other error </li>
+ </ul>
+ <p>
+Name stored for new entries is constructed from <em>sourceFile</em> according to the
+<a href="#ArchiveFileEntryOptions::stripSourceDirectory">stripSourceDirectory</a> and <a href="#ArchiveFileEntryOptions::destination">destination</a> options. Names are constructed as follows:
+ </p>
+ <table>
+ <tr>
+ <th>
+source file </th>
+ <th>
+destination </th>
+ <th>
+stripSourceDirectory </th>
+ <th>
+resulting entry name </th>
+ </tr>
+ <tr>
+ <td>
+documents/subdir/second/justName.ext </td>
+ <td>
+<em>(empty)</em> </td>
+ <td>
+<var>false</var> </td>
+ <td>
+subdir/second/justName.ext </td>
+ </tr>
+ <tr>
+ <td>
+documents/subdir/second/justName.ext </td>
+ <td>
+<em>(empty)</em> </td>
+ <td>
+<var>true</var> </td>
+ <td>
+justName.ext </td>
+ </tr>
+ <tr>
+ <td>
+documents/subdir/justName.ext </td>
+ <td>
+"report3" </td>
+ <td>
+<var>false</var> </td>
+ <td>
+report3/subdir/justName.ext </td>
+ </tr>
+ <tr>
+ <td>
+documents/subdir/justName.ext </td>
+ <td>
+"report3" </td>
+ <td>
+<var>true</var> </td>
+ <td>
+report3/justName.ext </td>
+ </tr>
+ </table>
+ </div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/filesystem.write
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">sourceFile</span>:
+ File or directory to be added to archive
+ </li>
+ <li class="param">
+<span class="name">onsuccess</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Callback method to be invoked when this operation is completed successfully
+ </li>
+ <li class="param">
+<span class="name">onerror</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Callback method to be invoked when an error occurs
+ </li>
+ <li class="param">
+<span class="name">onprogress</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Callback method to be invoked to notify about operation progress <br>It is called every time a single source file has been completely added.
+If the source file is big then the callback can also be called while the file is being processed.
+ </li>
+ <li class="param">
+<span class="name">options</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Additional options used to control how the sourceFile will be compressed and stored in the archive
+ </li>
+ </ul>
+</div>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ long Task ID which can be used to cancel the operation with abort()
+ </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if parameter is of the wrong type.
+ </p></li>
+<li class="list"><p>
+ with error type InvalidStateError, if ArchiveFile is not open.
+ </p></li>
+<li class="list"><p>
+ with error type InvalidAccessError, if the file mode is <var>"r"</var>.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> function errorCallback(error) {
+ console.log(error);
+ }
+
+ function successCallback() {
+ console.log("done");
+ }
+
+ function progressCallback(opId, val, name) {
+ console.log("opId: " + opId + " with progress val: " + val);
+ }
+
+ function createSuccess(archive) {
+ archive.add("downloads/file.txt", successCallback, errorCallback, progressCallback);
+ }
+
+ tizen.archive.open("downloads/new_archive.zip", "w", createSuccess);
+ </pre>
+</div>
+</dd>
+<dt class="method" id="ArchiveFile::extractAll">
+<a class="backward-compatibility-anchor" name="::Archive::ArchiveFile::extractAll"></a><code><b><span class="methodName">extractAll</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Extracts every file from this <em>ArchiveFile</em> to a given directory.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">long extractAll(<a href="#FileReference">FileReference</a> destinationDirectory, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? onsuccess, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? onerror, optional <a href="#ArchiveFileProgressCallback">ArchiveFileProgressCallback</a>? onprogress, optional boolean? overwrite);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+All extracted files will be located in the given directory.
+ </p>
+ <p>
+The <var>overwrite</var> attribute determines whether extracted files can overwrite existing files.
+ </p>
+ <p>
+The errorCallback is launched with these error types:
+ </p>
+ <ul>
+ <li>
+NotFoundError: If the given <em>destinationDirectory</em> does not exist </li>
+ <li>
+IOError: If destinationDirectory can not be written to (e.g due to insufficient permissions) </li>
+ <li>
+InvalidModificationError: If during extracting it is detected that an existing file would
+have to be overwritten and the <em>overwrite</em> argument is <var>false</var> </li>
+ <li>
+UnknownError: In any other error case </li>
+ </ul>
+ </div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/filesystem.write
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">destinationDirectory</span>:
+ Directory where extracted files will be stored <br>Specified as a virtual path or a <em>File</em> object representing a directory.
+ </li>
+ <li class="param">
+<span class="name">onsuccess</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Callback method to be invoked when an archive is extracted successfully
+ </li>
+ <li class="param">
+<span class="name">onerror</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Callback method to be invoked when an error occurs
+ </li>
+ <li class="param">
+<span class="name">onprogress</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Callback method to be invoked while the extracting is in progress <br>The onprogress callback is called at least once. It will be invoked for every extracted file.
+ </li>
+ <li class="param">
+<span class="name">overwrite</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Flag indicating whether to overwrite or keep the existing files with the same name in the <var>destinationDirectory</var> location when extracting an archive <br>By default, this attribute is set to <var>false</var>.
+ </li>
+ </ul>
+</div>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ long Task ID which can be used to cancel the operation with abort()
+ </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if parameter is of the wrong type.
+ </p></li>
+<li class="list"><p>
+ with error type InvalidStateError, if ArchiveFile is not open.
+ </p></li>
+<li class="list"><p>
+ with error type InvalidAccessError, if the file mode is <var>"w"</var> or <var>"a"</var>.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> function errorCallback(error) {
+ console.log(error);
+ }
+
+ function successCallback() {
+ console.log("done");
+ }
+
+ function progressCallback(opId, val, name) {
+ console.log("extracting operation (: " + opId + ") is in progress (" + (val * 100).toFixed(1) + "%)");
+ }
+
+ function openSuccess(archive) {
+ archive.extractAll("music", successCallback, errorCallback, progressCallback);
+ }
+
+ tizen.archive.open("downloads/some_archive.zip", "r", openSuccess);
+ </pre>
+</div>
+</dd>
+<dt class="method" id="ArchiveFile::getEntries">
+<a class="backward-compatibility-anchor" name="::Archive::ArchiveFile::getEntries"></a><code><b><span class="methodName">getEntries</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Retrieves information about the member files in <em>ArchiveFile</em>.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">long getEntries(<a href="#ArchiveFileEntryArraySuccessCallback">ArchiveFileEntryArraySuccessCallback</a> onsuccess, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? onerror);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The errorCallback is launched with these error types:
+ </p>
+ <ul>
+ <li>
+UnknownError: In case of any error </li>
+ </ul>
+ </div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/filesystem.read
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">onsuccess</span>:
+ Callback method to be invoked when information about all the files in the archive is successfully retrieved
+ </li>
+ <li class="param">
+<span class="name">onerror</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Callback method to be invoked when an error occurs
+ </li>
+ </ul>
+</div>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ long Task ID which can be used to cancel the operation with abort()
+ </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if parameter is of the wrong type.
+ </p></li>
+<li class="list"><p>
+ with error type InvalidStateError, if ArchiveFile is not open.
+ </p></li>
+<li class="list"><p>
+ with error type InvalidAccessError, if the file mode is <var>"w"</var> or <var>"a"</var>.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> function errorCallback(error) {
+ console.log(error);
+ }
+
+ function getEntriesSuccess(entries) {
+ console.log("Entries length: " + entries.length);
+ for (var i=0; i < entries.length; i++) {
+ console.log(entries[i].name);
+ }
+ }
+
+ function openSuccess(archive) {
+ archive.getEntries(getEntriesSuccess, errorCallback);
+ }
+
+ tizen.archive.open("downloads/some_archive.zip", "r", openSuccess, errorCallback);
+ </pre>
+</div>
+</dd>
+<dt class="method" id="ArchiveFile::getEntryByName">
+<a class="backward-compatibility-anchor" name="::Archive::ArchiveFile::getEntryByName"></a><code><b><span class="methodName">getEntryByName</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Retrieves information about <em>ArchiveFileEntry</em> with the specified name in <em>ArchiveFile</em>.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">long getEntryByName(DOMString name, <a href="#ArchiveFileEntrySuccessCallback">ArchiveFileEntrySuccessCallback</a> onsuccess, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? onerror);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The errorCallback is launched with these error types:
+ </p>
+ <ul>
+ <li>
+NotFoundError: If <em>ArchiveFileEntry</em> with the specific name does not exist </li>
+ <li>
+UnknownError: In case of any other error </li>
+ </ul>
+ </div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/filesystem.read
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">name</span>:
+ Name of <em>ArchiveFileEntry</em> to extract
+ </li>
+ <li class="param">
+<span class="name">onsuccess</span>:
+ Callback method to be invoked when a file matched with the given name is found
+ </li>
+ <li class="param">
+<span class="name">onerror</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Callback method to be invoked when an error occurs
+ </li>
+ </ul>
+</div>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ long Task ID which can be used to cancel the operation with abort()
+ </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if parameter is of the wrong type.
+ </p></li>
+<li class="list"><p>
+ with error type InvalidStateError, if ArchiveFile is not opened.
+ </p></li>
+<li class="list"><p>
+ with error type InvalidAccessError, if the file mode is <var>"w"</var> or <var>"a"</var>.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> function errorCallback(error) {
+ console.log(error);
+ }
+
+ function getEntrySuccess(entry) {
+ console.log("Entry: " + entry.name + " size: " + entry.size);
+ }
+
+ function openSuccess(archive) {
+ archive.getEntryByName("arch/my_file.txt", getEntrySuccess, errorCallback);
+ }
+
+ tizen.archive.open("downloads/some_archive.zip", "r", openSuccess);
+ </pre>
+</div>
+</dd>
+<dt class="method" id="ArchiveFile::close">
+<a class="backward-compatibility-anchor" name="::Archive::ArchiveFile::close"></a><code><b><span class="methodName">close</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Closes the <em>ArchiveFile</em>.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void close();
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+Call this method when the archive file is not used any more. Once you call this method, the archive file object will not be available and any further operation attempt results in an <em>InvalidStateError</em>.<br>Calling <em>close()</em> on an archive file object which is already closed does not raise any exception.
+ </p>
+ </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul><li class="list"><p>
+ with error type UnknownError, if any other error occurs.
+ </p></li></ul>
+</li></ul>
+ </div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="ArchiveFileEntry">
+<a class="backward-compatibility-anchor" name="::Archive::ArchiveFileEntry"></a><h3>2.6. ArchiveFileEntry</h3>
+<div class="brief">
+ The ArchiveFileEntry interface provides access to ArchiveFile member information and file data.
+ </div>
+<pre class="webidl prettyprint"> interface ArchiveFileEntry {
+ readonly attribute DOMString name;
+
+ readonly attribute unsigned long long size;
+
+ readonly attribute unsigned long long? compressedSize;
+
+ readonly attribute Date modified;
+
+ long extract(<a href="#FileReference">FileReference</a> destinationDirectory,
+ optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? onsuccess,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? onerror,
+ optional <a href="#ArchiveFileProgressCallback">ArchiveFileProgressCallback</a>? onprogress,
+ optional boolean? stripName,
+ optional boolean? overwrite) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul>
+<li class="attribute" id="ArchiveFileEntry::name">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">DOMString </span><span class="name">name</span></span><div class="brief">
+ Path identifying the member file of ArchiveFile. <br>This is a full path with the directory and base name of the entry.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="ArchiveFileEntry::size">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">unsigned long long </span><span class="name">size</span></span><div class="brief">
+ Original size of the member file [bytes].
+ </div>
+<div class="description">
+ <p>
+If the ArchiveFileEntry member is a folder, the attribute value will be the sum of sizes of all files in this directory.
+ </p>
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="ArchiveFileEntry::compressedSize">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">unsigned long long </span><span class="name">compressedSize</span><span class="optional"> [nullable]</span></span><div class="brief">
+ Amount of storage space used by the member file, which may be compressed, in ArchiveFile [bytes].
+ </div>
+<div class="description">
+ <p>
+If ArchiveFileEntry member is a folder, the attribute will be sum of the sizes of all files in this directory.
+ </p>
+ <p>
+Until a new entry is added to the archive, the compressedSize is <var>null</var> </p>
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="ArchiveFileEntry::modified">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">Date </span><span class="name">modified</span></span><div class="brief">
+ Date and time stored with the member file.
+This is usually the modification date of the file.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+</ul>
+</div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="ArchiveFileEntry::extract">
+<a class="backward-compatibility-anchor" name="::Archive::ArchiveFileEntry::extract"></a><code><b><span class="methodName">extract</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Extracts ArchiveFileEntry to the given location.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">long extract(<a href="#FileReference">FileReference</a> destinationDirectory, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? onsuccess, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? onerror, optional <a href="#ArchiveFileProgressCallback">ArchiveFileProgressCallback</a>? onprogress, optional boolean? stripName, optional boolean? overwrite);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The errorCallback is launched with these error types:
+ </p>
+ <ul>
+ <li>
+NotFoundError: If the given <em>destinationDirectory</em> does not exist </li>
+ <li>
+InvalidModificationError: If the file already exists and overwriting is not allowed </li>
+ <li>
+IOError: If destinationDirectory can not be written to </li>
+ <li>
+UnknownError: In case of any other error </li>
+ </ul>
+ </div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/filesystem.write
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">destinationDirectory</span>:
+ Directory where extracted files will be stored <br>Given as a virtual path or a <em>File</em> object representing a directory.
+ </li>
+ <li class="param">
+<span class="name">onsuccess</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Callback method to be invoked when an extract operation is completed
+ </li>
+ <li class="param">
+<span class="name">onerror</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Callback method to be invoked when an error occurs
+ </li>
+ <li class="param">
+<span class="name">onprogress</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Callback method to be invoked while the extracting is in progress <br>The onprogress callback is called at least once. It will be invoked for every extracted file.
+ </li>
+ <li class="param">
+<span class="name">stripName</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Flag which determines if directory name part of <em>ArchiveFileEntry</em> should be removed or preserved <br>The default value is <var>false</var>. If it is <var>true</var>, use only base name (part after last slash) as a target path.
+ </li>
+ <li class="param">
+<span class="name">overwrite</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Flag which determines if it possible to overwrite files when the decompressed file already exists in this destination location <br>The default value is <var>false</var>.
+ </li>
+ </ul>
+</div>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ long Task ID which can be used to cancel the operation with abort()
+ </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if parameter is of the wrong type.
+ </p></li>
+<li class="list"><p>
+ with error type InvalidValuesError, if directory parameter does not represent a directory.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> function errorCallback(error) {
+ console.log(error);
+ }
+
+ function extractSuccessCallback() {
+ console.log("done");
+ }
+
+ function getEntrySuccess(entry) {
+ entry.extract("downloads/extract", extractSuccessCallback, errorCallback);
+ }
+
+ function openSuccess(archive) {
+ archive.getEntryByName("my_file.txt", getEntrySuccess, errorCallback);
+ }
+
+ tizen.archive.open("downloads/some_archive.zip", "r", openSuccess, errorCallback);
+ </pre>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="ArchiveFileSuccessCallback">
+<a class="backward-compatibility-anchor" name="::Archive::ArchiveFileSuccessCallback"></a><h3>2.7. ArchiveFileSuccessCallback</h3>
+<div class="brief">
+ The ArchiveFileSuccessCallback interface provides a SuccessCallback for the ArchiveManager::open() method.
+ </div>
+<pre class="webidl prettyprint"> [Callback=FunctionOnly, NoInterfaceObject] interface ArchiveFileSuccessCallback {
+ void onsuccess(<a href="#ArchiveFile">ArchiveFile</a> archive);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="ArchiveFileSuccessCallback::onsuccess">
+<a class="backward-compatibility-anchor" name="::Archive::ArchiveFileSuccessCallback::onsuccess"></a><code><b><span class="methodName">onsuccess</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when the archive file with the given name is ready to use.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void onsuccess(<a href="#ArchiveFile">ArchiveFile</a> archive);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">archive</span>:
+ Archive file object
+ </li>
+ </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="ArchiveFileEntrySuccessCallback">
+<a class="backward-compatibility-anchor" name="::Archive::ArchiveFileEntrySuccessCallback"></a><h3>2.8. ArchiveFileEntrySuccessCallback</h3>
+<div class="brief">
+ The ArchiveFileEntrySuccessCallback interface provides a SuccessCallback for the ArchiveFile::getEntryByName() method.
+ </div>
+<pre class="webidl prettyprint"> [Callback=FunctionOnly, NoInterfaceObject] interface ArchiveFileEntrySuccessCallback {
+ void onsuccess(<a href="#ArchiveFileEntry">ArchiveFileEntry</a> entry);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="ArchiveFileEntrySuccessCallback::onsuccess">
+<a class="backward-compatibility-anchor" name="::Archive::ArchiveFileEntrySuccessCallback::onsuccess"></a><code><b><span class="methodName">onsuccess</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when the file with the given name through getEntryByName() is found successfully.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void onsuccess(<a href="#ArchiveFileEntry">ArchiveFileEntry</a> entry);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">entry</span>:
+ ArchiveFileEntry object representing the file found in ArchiveFile
+ </li>
+ </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="ArchiveFileEntryArraySuccessCallback">
+<a class="backward-compatibility-anchor" name="::Archive::ArchiveFileEntryArraySuccessCallback"></a><h3>2.9. ArchiveFileEntryArraySuccessCallback</h3>
+<div class="brief">
+ The ArchiveFileEntryArraySuccessCallback interface provides a SuccessCallback for the ArchiveFile::getEntries() method.
+ </div>
+<pre class="webidl prettyprint"> [Callback=FunctionOnly, NoInterfaceObject] interface ArchiveFileEntryArraySuccessCallback {
+ void onsuccess(<a href="#ArchiveFileEntry">ArchiveFileEntry</a>[] entries);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="ArchiveFileEntryArraySuccessCallback::onsuccess">
+<a class="backward-compatibility-anchor" name="::Archive::ArchiveFileEntryArraySuccessCallback::onsuccess"></a><code><b><span class="methodName">onsuccess</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when all file entries in the archive file are retrieved successfully.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void onsuccess(<a href="#ArchiveFileEntry">ArchiveFileEntry</a>[] entries);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">entries</span>:
+ List of ArchiveFileEntry objects found in ArchiveFile
+ </li>
+ </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="ArchiveFileProgressCallback">
+<a class="backward-compatibility-anchor" name="::Archive::ArchiveFileProgressCallback"></a><h3>2.10. ArchiveFileProgressCallback</h3>
+<div class="brief">
+ The ArchiveFileProgressCallback interface provides a ProgressCallback for ArchiveFile and ArchiveFileEntry methods.
+ </div>
+<pre class="webidl prettyprint"> [Callback=FunctionOnly, NoInterfaceObject] interface ArchiveFileProgressCallback {
+ void onprogress(long operationIdentifier, double value, DOMString filename);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="ArchiveFileProgressCallback::onprogress">
+<a class="backward-compatibility-anchor" name="::Archive::ArchiveFileProgressCallback::onprogress"></a><code><b><span class="methodName">onprogress</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called to signal compressing or extracting operation progress.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void onprogress(long operationIdentifier, double value, DOMString filename);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">operationIdentifier</span>:
+ Operation identifier for which progress is reported
+ </li>
+ <li class="param">
+<span class="name">value</span>:
+ Progress of the operation, value between 0.0 and 1.0 where 1.0 is 100% progress
+ </li>
+ <li class="param">
+<span class="name">filename</span>:
+ Name of the compressed or extracted file
+ </li>
+ </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+<h2 id="full-webidl">3. Full WebIDL</h2>
+<pre class="webidl prettyprint">module Archive {
+
+ typedef (DOMString or <a href="filesystem.html#File">File</a>) FileReference;
+
+ enum ArchiveCompressionLevel {"STORE", "FAST", "NORMAL", "BEST"};
+
+ [NoInterfaceObject] interface ArchiveManagerObject {
+ readonly attribute <a href="#ArchiveManager">ArchiveManager</a> archive;
+ };
+
+ <a href="tizen.html#Tizen">Tizen</a> implements <a href="#ArchiveManagerObject">ArchiveManagerObject</a>;
+
+ dictionary ArchiveFileOptions {
+ boolean overwrite;
+
+ };
+
+ dictionary ArchiveFileEntryOptions {
+ DOMString destination;
+
+ boolean stripSourceDirectory;
+
+ <a href="#ArchiveCompressionLevel">ArchiveCompressionLevel</a> compressionLevel;
+
+ };
+
+ [NoInterfaceObject] interface ArchiveManager {
+ long open(<a href="#FileReference">FileReference</a> file,
+ <a href="filesystem.html#FileMode">FileMode</a> mode,
+ <a href="#ArchiveFileSuccessCallback">ArchiveFileSuccessCallback</a> onsuccess,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? onerror,
+ optional <a href="#ArchiveFileOptions">ArchiveFileOptions</a>? options) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void abort(long operationIdentifier) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ };
+
+ interface ArchiveFile {
+ readonly attribute <a href="filesystem.html#FileMode">FileMode</a> mode;
+
+ readonly attribute unsigned long long? decompressedSize;
+
+ long add(<a href="#FileReference">FileReference</a> sourceFile,
+ optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? onsuccess,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? onerror,
+ optional <a href="#ArchiveFileProgressCallback">ArchiveFileProgressCallback</a>? onprogress,
+ optional <a href="#ArchiveFileEntryOptions">ArchiveFileEntryOptions</a>? options) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ long extractAll(<a href="#FileReference">FileReference</a> destinationDirectory,
+ optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? onsuccess,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? onerror,
+ optional <a href="#ArchiveFileProgressCallback">ArchiveFileProgressCallback</a>? onprogress,
+ optional boolean? overwrite) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ long getEntries(<a href="#ArchiveFileEntryArraySuccessCallback">ArchiveFileEntryArraySuccessCallback</a> onsuccess,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? onerror) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ long getEntryByName(DOMString name,
+ <a href="#ArchiveFileEntrySuccessCallback">ArchiveFileEntrySuccessCallback</a> onsuccess,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? onerror) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void close() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ };
+
+ interface ArchiveFileEntry {
+ readonly attribute DOMString name;
+
+ readonly attribute unsigned long long size;
+
+ readonly attribute unsigned long long? compressedSize;
+
+ readonly attribute Date modified;
+
+ long extract(<a href="#FileReference">FileReference</a> destinationDirectory,
+ optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? onsuccess,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? onerror,
+ optional <a href="#ArchiveFileProgressCallback">ArchiveFileProgressCallback</a>? onprogress,
+ optional boolean? stripName,
+ optional boolean? overwrite) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ };
+
+ [Callback=FunctionOnly, NoInterfaceObject] interface ArchiveFileSuccessCallback {
+ void onsuccess(<a href="#ArchiveFile">ArchiveFile</a> archive);
+ };
+
+ [Callback=FunctionOnly, NoInterfaceObject] interface ArchiveFileEntrySuccessCallback {
+ void onsuccess(<a href="#ArchiveFileEntry">ArchiveFileEntry</a> entry);
+ };
+
+ [Callback=FunctionOnly, NoInterfaceObject] interface ArchiveFileEntryArraySuccessCallback {
+ void onsuccess(<a href="#ArchiveFileEntry">ArchiveFileEntry</a>[] entries);
+ };
+
+ [Callback=FunctionOnly, NoInterfaceObject] interface ArchiveFileProgressCallback {
+ void onprogress(long operationIdentifier, double value, DOMString filename);
+ };
+};</pre>
+</div>
+<div id="page-footer">
+<div class="copyright" align="center">
+ 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>.
+ </div>
+<script type="text/javascript">
+
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', 'UA-25976949-1']);
+ _gaq.push(['_setDomainName', 'tizen.org']);
+ _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>
+</div>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html PUBLIC "html">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="tizen.css" media="screen">
+<script type="text/javascript" src="snippet.js"></script><title>Exif API</title>
+</head>
+<body id="page-content" onload="prettyPrint()">
+<div class="api" id="::Exif">
+<div class="supported-platforms"><img class="wearable-mandatory emulator" title="Mandatory, Supported by Tizen Wearable emulator" src="ww_icon.png"></div>
+<div class="title"><h1>Exif API</h1></div>
+<div class="brief">
+ The Exif API provides interfaces and methods for manipulating <a href="http://en.wikipedia.org/wiki/Exchangeable_image_file_format">Exif</a> data from a JPEG file.
+The <em>ExifManager</em> object provides methods to retrieve the <em>ExifInformation</em> object from a JPEG file
+and save the Exif data from the <em>ExifInformation</em> object in the JPEG file.
+The <em>ExifInformation</em> object provides functionality to get and set the Exif attributes corresponding to the Exif tag.
+Changing the value of the attribute in the <em>ExifInformation</em> object stores the Exif data in the <em>ExifInformation</em> object. It does not change data in the JPEG file.
+For applying the modified Exif data to the JPEG file,
+the saveExifInfo() method of the <em>ExifManager</em> object should be called with the <em>ExifInformation</em> object that has the modified Exif data.
+ </div>
+<div class="description">
+ <p>
+For more information about how to use Exif API, see <a href="../../../../../org.tizen.guides/html/web/tizen/content/exif_w.htm">Exif Guide</a>.
+ </p>
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<h2>Table of Contents</h2>
+<ul class="toc">
+<li>1. <a href="#typedefs-section">Type Definitions</a><ul class="toc">
+<li>1.1. <a href="#WhiteBalanceMode">WhiteBalanceMode</a>
+</li>
+<li>1.2. <a href="#ExposureProgram">ExposureProgram</a>
+</li>
+</ul>
+</li>
+<li>2. <a href="#interfaces-section">Interfaces</a><ul class="toc">
+<li>2.1. <a href="#ExifManagerObject">ExifManagerObject</a>
+</li>
+<li>2.2. <a href="#ExifManager">ExifManager</a>
+</li>
+<li>2.3. <a href="#ExifInit">ExifInit</a>
+</li>
+<li>2.4. <a href="#ExifInformation">ExifInformation</a>
+</li>
+<li>2.5. <a href="#ExifInformationSuccessCallback">ExifInformationSuccessCallback</a>
+</li>
+<li>2.6. <a href="#ExifThumbnailSuccessCallback">ExifThumbnailSuccessCallback</a>
+</li>
+</ul>
+</li>
+<li>3. <a href="#full-webidl">Full WebIDL</a>
+</li>
+</ul>
+<hr>
+<h2 id="method-summary">Summary of Interfaces and Methods</h2>
+<table class="informaltable">
+<thead><tr>
+<th>Interface</th>
+<th>Method</th>
+</tr></thead>
+<tbody>
+<tr>
+<td><a href="#ExifManagerObject">ExifManagerObject</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#ExifManager">ExifManager</a></td>
+<td>void <a href="#ExifManager::getExifInfo">getExifInfo</a> (DOMString uri, <a href="#ExifInformationSuccessCallback">ExifInformationSuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)<br>
+ void <a href="#ExifManager::saveExifInfo">saveExifInfo</a> (<a href="#ExifInformation">ExifInformation</a> exifInfo, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)<br>
+ void <a href="#ExifManager::getThumbnail">getThumbnail</a> (DOMString uri, <a href="#ExifThumbnailSuccessCallback">ExifThumbnailSuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)</td>
+</tr>
+<tr>
+<td><a href="#ExifInit">ExifInit</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#ExifInformation">ExifInformation</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#ExifInformationSuccessCallback">ExifInformationSuccessCallback</a></td>
+<td>void <a href="#ExifInformationSuccessCallback::onsuccess">onsuccess</a> (<a href="#ExifInformation">ExifInformation</a> exifInfo)</td>
+</tr>
+<tr>
+<td><a href="#ExifThumbnailSuccessCallback">ExifThumbnailSuccessCallback</a></td>
+<td>void <a href="#ExifThumbnailSuccessCallback::onsuccess">onsuccess</a> (DOMString? uri)</td>
+</tr>
+</tbody>
+</table>
+<div class="typedefs" id="typedefs-section">
+<h2>1. Type Definitions</h2>
+<div class="enum" id="WhiteBalanceMode">
+<a class="backward-compatibility-anchor" name="::Exif::WhiteBalanceMode"></a><h3>1.1. WhiteBalanceMode</h3>
+<div class="brief">
+ Specifies a white balance mode for an image.
+ </div>
+<pre class="webidl prettyprint"> enum WhiteBalanceMode { "AUTO", "MANUAL" };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <ul>
+ <li>
+AUTO - Automatic White Balance mode </li>
+ <li>
+MANUAL - Manual White Balance mode </li>
+ </ul>
+ </div>
+</div>
+<div class="enum" id="ExposureProgram">
+<a class="backward-compatibility-anchor" name="::Exif::ExposureProgram"></a><h3>1.2. ExposureProgram</h3>
+<div class="brief">
+ Specifies an exposure balance program for an image.
+ </div>
+<pre class="webidl prettyprint"> enum ExposureProgram { "NOT_DEFINED", "MANUAL", "NORMAL", "APERTURE_PRIORITY", "SHUTTER_PRIORITY", "CREATIVE_PROGRAM", "ACTION_PROGRAM", "PORTRAIT_MODE", "LANDSCAPE_MODE" };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+Some additional information can be found in the <a href="http://en.wikipedia.org/wiki/List_of_digital_camera_modes">List of digital camera modes</a> article.
+ </p>
+ <ul>
+ <li>
+NOT_DEFINED - Exposure program info is not present or is unknown </li>
+ <li>
+MANUAL - In the manual mode both shutter speed and aperture are independently set manually (with ISO sensitivity also set manually) </li>
+ <li>
+APERTURE_PRIORITY - aka A, Av(Aperture value) mode enables manual control of the aperture, and shutter speed is calculated by the camera for proper exposure (given an ISO sensitivity) </li>
+ <li>
+SHUTTER_PRIORITY - aka S, Tv(Time value) mode enables manual control of the shutter speed, and aperture is calculated by the camera for proper exposure (given an ISO sensitivity) </li>
+ <li>
+CREATIVE_PROGRAM - Program mode makes the camera calculate both shutter speed and aperture (given a manually or automatically selected ISO) </li>
+ <li>
+ACTION_PROGRAM - Action or sports modes increase ISO and use a faster shutter speed to capture an action </li>
+ <li>
+PORTRAIT_MODE - Portrait mode widens the aperture to throw the background out of focus. The camera may recognize and focus on a human face </li>
+ <li>
+LANDSCAPE_MODE - Landscape modes use a small aperture to gain depth of a field </li>
+ </ul>
+ </div>
+</div>
+</div>
+<div class="interfaces" id="interfaces-section">
+<h2>2. Interfaces</h2>
+<div class="interface" id="ExifManagerObject">
+<a class="backward-compatibility-anchor" name="::Exif::ExifManagerObject"></a><h3>2.1. ExifManagerObject</h3>
+<div class="brief">
+ The ExifManagerObject interface defines what is instantiated by the <em>Tizen</em> object from the Tizen Platform.
+The <em>tizen.exif</em> object allows access to the Exif data of a JPEG file.
+ </div>
+<pre class="webidl prettyprint"> [NoInterfaceObject] interface ExifManagerObject {
+ readonly attribute <a href="#ExifManager">ExifManager</a> exif;
+ };</pre>
+<pre class="webidl prettyprint"> <a href="tizen.html#Tizen">Tizen</a> implements <a href="#ExifManagerObject">ExifManagerObject</a>;</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</div>
+<div class="interface" id="ExifManager">
+<a class="backward-compatibility-anchor" name="::Exif::ExifManager"></a><h3>2.2. ExifManager</h3>
+<div class="brief">
+ The ExifManager interface provides methods to retrieve the <em>ExifInformation</em> object and save the Exif data of the <em>ExifInformation</em> object in a JPEG file.
+ </div>
+<pre class="webidl prettyprint"> [NoInterfaceObject] interface ExifManager {
+
+ void getExifInfo(DOMString uri,
+ <a href="#ExifInformationSuccessCallback">ExifInformationSuccessCallback</a> successCallback,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback ) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void saveExifInfo(<a href="#ExifInformation">ExifInformation</a> exifInfo,
+ optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void getThumbnail(DOMString uri,
+ <a href="#ExifThumbnailSuccessCallback">ExifThumbnailSuccessCallback</a> successCallback,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+It provides access to the API functionalities through the <em>tizen.exif</em> interface.
+ </p>
+ </div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="ExifManager::getExifInfo">
+<a class="backward-compatibility-anchor" name="::Exif::ExifManager::getExifInfo"></a><code><b><span class="methodName">getExifInfo</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Gets the <em>ExifInformation</em> object to manipulate the Exif data in a JPEG file.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void getExifInfo(DOMString uri, <a href="#ExifInformationSuccessCallback">ExifInformationSuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+This function returns (via callback) the <em>ExifInformation</em> object that contains the Exif data in the JPEG file.
+ </p>
+ <p>
+The errorCallback is launched with these error types:
+ </p>
+ <ul>
+ <li>
+NotFoundError: If the file of the input parameters is not found or the file does not contain Exif data </li>
+ <li>
+IOError: If access to the image file is denied due to insufficient permissions </li>
+ <li>
+InvalidValuesError: If any input parameter contains invalid values </li>
+ <li>
+UnknownError: In any other error case </li>
+ </ul>
+ </div>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">uri</span>:
+ URI of the JPEG file, as available in ImageContent::contentURI or returned by File::toURI()
+ </li>
+ <li class="param">
+<span class="name">successCallback</span>:
+ Callback method to be invoked when Exif information has been retrieved successfully
+ </li>
+ <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Callback method to be invoked when an error occurs
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul><li class="list"><p>
+ with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
+ </p></li></ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> //Preconditions: please provide images/tizen.jpg file with present Exif data
+
+ // Defines success callback
+ function onSuccess(exifInfo) {
+ console.log("success to get Exif information object");
+ }
+
+ // Defines error callback
+ function onError(error) {
+ console.log("error occurred: " + error.name);
+ }
+
+ function resolveSuccess(file) {
+ tizen.exif.getExifInfo(file.toURI(), onSuccess, onError);
+ }
+
+ function resolveFail(error) {
+ console.log("error occurred: " + error.name);
+ }
+ tizen.filesystem.resolve("images/tizen.jpg", resolveSuccess, resolveFail);
+ </pre>
+</div>
+</dd>
+<dt class="method" id="ExifManager::saveExifInfo">
+<a class="backward-compatibility-anchor" name="::Exif::ExifManager::saveExifInfo"></a><code><b><span class="methodName">saveExifInfo</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Saves the Exif data of the <em>ExifInformation</em> object into the JPEG file.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void saveExifInfo(<a href="#ExifInformation">ExifInformation</a> exifInfo, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The errorCallback is launched with these error types:
+ </p>
+ <ul>
+ <li>
+NotFoundError: If the file of the input parameters is not found </li>
+ <li>
+InvalidValuesError: If any input parameter contains invalid values </li>
+ <li>
+UnknownError: In any other error case </li>
+ </ul>
+ </div>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">exifInfo</span>:
+ Exif information object that contains the Exif data in the JPEG file
+ </li>
+ <li class="param">
+<span class="name">successCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Callback method to be invoked when Exif data has been saved successfully
+ </li>
+ <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Callback method to be invoked when an error occurs
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul><li class="list"><p>
+ with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
+ </p></li></ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> //Preconditions: please provide images/tizen.jpg file with present Exif data
+
+ // Defines success callback
+ function onSaveSuccess() {
+ console.log("success to save Exif information");
+ }
+
+ // Defines error callback
+ function onSaveError(error) {
+ console.log("error occur" + error.name);
+ }
+
+ // Defines success callback
+ function onSuccess(exifInfo) {
+ console.log("success to get Exif information object");
+ exifInfo.orientation = "ROTATE_90";
+ tizen.exif.saveExifInfo(exifInfo, onSaveSuccess, onSaveError);
+ }
+
+ // Defines error callback
+ function onError(error) {
+ console.log("error occur" + error.name);
+ }
+
+ function resolveSuccess(file) {
+ tizen.exif.getExifInfo(file.toURI(), onSuccess, onError);
+ }
+
+ function resolveFail(error) {
+ console.log("error occurred: " + error.name);
+ }
+
+ tizen.filesystem.resolve("images/tizen.jpg", resolveSuccess, resolveFail);
+
+ </pre>
+</div>
+</dd>
+<dt class="method" id="ExifManager::getThumbnail">
+<a class="backward-compatibility-anchor" name="::Exif::ExifManager::getThumbnail"></a><code><b><span class="methodName">getThumbnail</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Gets the thumbnail of the specified JPEG file. If there is no thumbnail in the JPEG file, <var>null</var> is returned.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void getThumbnail(DOMString uri, <a href="#ExifThumbnailSuccessCallback">ExifThumbnailSuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+<em>successCallback</em> is invoked with a URI as the first argument.
+This URI is a <a href="http://en.wikipedia.org/wiki/Data_URI_scheme">data URI</a>.
+It can be used as an src attribute value of the img element.
+ </p>
+ <p>
+The errorCallback is launched with these error types:
+ </p>
+ <ul>
+ <li>
+NotFoundError: If the file of the input parameters is not found </li>
+ <li>
+IOError: If access to the thumbnail file is denied due to insufficient permissions </li>
+ <li>
+InvalidValuesError: If any of the input parameters contains an invalid value </li>
+ <li>
+UnknownError: In any other error case </li>
+ </ul>
+ </div>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">uri</span>:
+ URI of the JPEG file
+ </li>
+ <li class="param">
+<span class="name">successCallback</span>:
+ Callback method to be invoked when thumbnail data has been retrieved successfully
+ </li>
+ <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Callback method to be invoked when an error occurs
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul><li class="list"><p>
+ with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
+ </p></li></ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> //Preconditions: please provide images/tizen.jpg file with present Exif data
+
+ // Defines success callback
+ function onSuccess(thumbData) {
+ console.log("got thumbnail data of JPEG file");
+ if (thumbData) {
+ var img = new Image();
+ img.src = thumbData;
+ document.body.appendChild(img);
+ }
+ }
+
+ // Defines error callback
+ function onError(error) {
+ console.log("error occur" + error.name);
+ }
+
+ function resolveSuccess(file) {
+ tizen.exif.getThumbnail(file.toURI(), onSuccess, onError);
+ }
+
+ function resolveFail(error) {
+ console.log("error occurred: " + error.name);
+ }
+
+ tizen.filesystem.resolve("images/tizen.jpg", resolveSuccess, resolveFail);
+ </pre>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="dictionary" id="ExifInit">
+<a class="backward-compatibility-anchor" name="::Exif::ExifInit"></a><h3>2.3. ExifInit</h3>
+<div class="brief">
+ Dictionary for specifying <em>ExifInformation</em> attributes upon <em>ExifInformation</em> creation.
+ </div>
+<pre class="webidl prettyprint"> dictionary ExifInit {
+ DOMString uri;
+ unsigned long width;
+ unsigned long height;
+ DOMString deviceMaker;
+ DOMString deviceModel;
+ Date originalTime;
+ <a href="content.html#ImageContentOrientation">ImageContentOrientation</a> orientation;
+ double fNumber;
+ unsigned short[] isoSpeedRatings;
+ DOMString exposureTime;
+ <a href="#ExposureProgram">ExposureProgram</a> exposureProgram;
+ boolean flash;
+ double focalLength;
+ <a href="#WhiteBalanceMode">WhiteBalanceMode</a> whiteBalance;
+ <a href="tizen.html#SimpleCoordinates">SimpleCoordinates</a> gpsLocation;
+ double gpsAltitude;
+ DOMString gpsProcessingMethod;
+ Date gpsTime;
+ DOMString userComment;
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+This dictionary is used to input parameters when <em>ExifInformation</em> is created.
+For description of attributes please see the corresponding attributes in the <em>ExifInformation<em> interface.
+</em></em> </p>
+ </div>
+</div>
+<div class="interface" id="ExifInformation">
+<a class="backward-compatibility-anchor" name="::Exif::ExifInformation"></a><h3>2.4. ExifInformation</h3>
+<div class="brief">
+ The ExifInformation interface implements the <em>ExifInformation</em> object.
+ </div>
+<pre class="webidl prettyprint"> [Constructor(optional <a href="#ExifInit">ExifInit</a>? ExifInitDict)]
+ interface ExifInformation {
+ attribute DOMString uri;
+
+ attribute unsigned long? width;
+
+ attribute unsigned long? height;
+
+ attribute DOMString? deviceMaker;
+
+ attribute DOMString? deviceModel;
+
+ attribute Date? originalTime;
+
+ attribute <a href="content.html#ImageContentOrientation">ImageContentOrientation</a>? orientation;
+
+ attribute double? fNumber;
+
+ attribute unsigned short[]? isoSpeedRatings;
+
+ attribute DOMString? exposureTime;
+
+ attribute <a href="#ExposureProgram">ExposureProgram</a>? exposureProgram;
+
+ attribute boolean? flash;
+
+ attribute double? focalLength;
+
+ attribute <a href="#WhiteBalanceMode">WhiteBalanceMode</a>? whiteBalance;
+
+ attribute <a href="tizen.html#SimpleCoordinates">SimpleCoordinates</a>? gpsLocation;
+
+ attribute double? gpsAltitude;
+
+ attribute DOMString? gpsProcessingMethod;
+
+ attribute <a href="time.html#TZDate">TZDate</a>? gpsTime;
+
+ attribute DOMString? userComment;
+
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+When the format of a value is given in the attribute description then this format should be followed when updating values.
+ </p>
+ <p>
+Every Exif related attribute is nullable - null means that this information is missing in the file.
+By setting an attribute to null and saving <em>ExifInformation</em> one can remove that Exif tag from the file.
+ </p>
+ </div>
+<div class="constructors">
+<h4 id="ExifInformation::constructor">Constructors</h4>
+<dl><pre class="webidl prettyprint">ExifInformation(optional <a href="#ExifInit">ExifInit</a>? ExifInitDict);</pre></dl>
+</div>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul>
+<li class="attribute" id="ExifInformation::uri">
+<span class="attrName"><span class="type">DOMString </span><span class="name">uri</span></span><div class="brief">
+ URI of the image.
+ </div>
+<div class="description">
+ <p>
+The path to the file from which <em>ExifInformation</em> data is collected.
+ </p>
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="ExifInformation::width">
+<span class="attrName"><span class="type">unsigned long </span><span class="name">width</span><span class="optional"> [nullable]</span></span><div class="brief">
+ Width of the image i.e. the number of points (pixels) per image line.
+ </div>
+<div class="description">
+ <p>
+Note if the value of this attribute is changed, the new value is not verified against the actual size of the image.
+ </p>
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="ExifInformation::height">
+<span class="attrName"><span class="type">unsigned long </span><span class="name">height</span><span class="optional"> [nullable]</span></span><div class="brief">
+ Height of the image i.e. the number of lines in the image.
+ </div>
+<div class="description">
+ <p>
+Note if the value of this attribute is changed, the new value is not verified against the actual size of the image.
+ </p>
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="ExifInformation::deviceMaker">
+<span class="attrName"><span class="type">DOMString </span><span class="name">deviceMaker</span><span class="optional"> [nullable]</span></span><div class="brief">
+ Name of the camera manufacturer.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="ExifInformation::deviceModel">
+<span class="attrName"><span class="type">DOMString </span><span class="name">deviceModel</span><span class="optional"> [nullable]</span></span><div class="brief">
+ Model name or model number of the camera or input device.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="ExifInformation::originalTime">
+<span class="attrName"><span class="type">Date </span><span class="name">originalTime</span><span class="optional"> [nullable]</span></span><div class="brief">
+ Date and time when the picture was taken.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="ExifInformation::orientation">
+<span class="attrName"><span class="type">ImageContentOrientation </span><span class="name">orientation</span><span class="optional"> [nullable]</span></span><div class="brief">
+ Orientation of the image when displayed.
+ </div>
+<div class="description">
+ <p>
+This attribute shows the relation between the stored image data and the visual content orientation.
+In other words - how a stored image should be oriented when presented to the user.
+ </p>
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="ExifInformation::fNumber">
+<span class="attrName"><span class="type">double </span><span class="name">fNumber</span><span class="optional"> [nullable]</span></span><div class="brief">
+ The f-number when the image was taken.
+ </div>
+<div class="description">
+ <p>
+Exif specification: "Conversion is not made to the focal length of a 35 mm film".
+ </p>
+ <p>
+The <a href="http://en.wikipedia.org/wiki/F-number">f-number</a> is the ratio of the lens' focal length to the diameter of the entrance pupil.
+F-number is also called focal ratio, f-ratio, f-stop, or relative aperture.
+Example values: 1.4, 2, 2.8, 4, 5.6, 8, 11 ...
+ </p>
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="ExifInformation::isoSpeedRatings">
+<span class="attrName"><span class="type">unsigned short[]
+ </span><span class="name">isoSpeedRatings</span><span class="optional"> [nullable]</span></span><div class="brief">
+ Photo sensitivity (also called ISO speed and ISO latitude) of the camera or input device.
+ </div>
+<div class="description">
+ <p>
+Example values: 80, 100, 200, 400, 800, 1600, 3200 ..
+ </p>
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="ExifInformation::exposureTime">
+<span class="attrName"><span class="type">DOMString </span><span class="name">exposureTime</span><span class="optional"> [nullable]</span></span><div class="brief">
+ Exposure time, given in seconds.
+ </div>
+<div class="description">
+ <p>
+If exposure time is below one second it is expressed as 1/x.
+For example: 1 second exposure is "1", 0.25s is "1/4".
+ </p>
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="ExifInformation::exposureProgram">
+<span class="attrName"><span class="type">ExposureProgram </span><span class="name">exposureProgram</span><span class="optional"> [nullable]</span></span><div class="brief">
+ Exposure balance program used by the camera to set exposure when the picture was taken.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="ExifInformation::flash">
+<span class="attrName"><span class="type">boolean </span><span class="name">flash</span><span class="optional"> [nullable]</span></span><div class="brief">
+ Boolean value that indicates whether flash was fired when the picture was taken (true: flash fired).
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="ExifInformation::focalLength">
+<span class="attrName"><span class="type">double </span><span class="name">focalLength</span><span class="optional"> [nullable]</span></span><div class="brief">
+ Focal length of the lens, given in mm.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="ExifInformation::whiteBalance">
+<span class="attrName"><span class="type">WhiteBalanceMode </span><span class="name">whiteBalance</span><span class="optional"> [nullable]</span></span><div class="brief">
+ White balance mode set when the picture was taken.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="ExifInformation::gpsLocation">
+<span class="attrName"><span class="type">SimpleCoordinates </span><span class="name">gpsLocation</span><span class="optional"> [nullable]</span></span><div class="brief">
+ Latitude and longitude of the camera (from GPS) when the picture was taken.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="ExifInformation::gpsAltitude">
+<span class="attrName"><span class="type">double </span><span class="name">gpsAltitude</span><span class="optional"> [nullable]</span></span><div class="brief">
+ Altitude (from GPS) of the camera when the picture was taken.
+ </div>
+<div class="description">
+ <p>
+This value is expressed in meters above sea level (can be negative).
+ </p>
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="ExifInformation::gpsProcessingMethod">
+<span class="attrName"><span class="type">DOMString </span><span class="name">gpsProcessingMethod</span><span class="optional"> [nullable]</span></span><div class="brief">
+ Name of the method used for finding the location.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="ExifInformation::gpsTime">
+<span class="attrName"><span class="type">TZDate </span><span class="name">gpsTime</span><span class="optional"> [nullable]</span></span><div class="brief">
+ Date and time information relative to UTC (Universal Time Coordinated) provided by GPS when the photo was taken.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="ExifInformation::userComment">
+<span class="attrName"><span class="type">DOMString </span><span class="name">userComment</span><span class="optional"> [nullable]</span></span><div class="brief">
+ User comment.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+</ul>
+</div>
+</div>
+<div class="interface" id="ExifInformationSuccessCallback">
+<a class="backward-compatibility-anchor" name="::Exif::ExifInformationSuccessCallback"></a><h3>2.5. ExifInformationSuccessCallback</h3>
+<div class="brief">
+ The ExifInformationSuccessCallback interface provides a success callback that is invoked when the Exif information object has been retrieved.
+This callback interface specifies a success method with an <em>ExifInformation</em> object as an input parameter. It is used in exif.getExifInfo().
+ </div>
+<pre class="webidl prettyprint"> [Callback=FunctionOnly, NoInterfaceObject] interface ExifInformationSuccessCallback {
+ void onsuccess(<a href="#ExifInformation">ExifInformation</a> exifInfo);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="ExifInformationSuccessCallback::onsuccess">
+<a class="backward-compatibility-anchor" name="::Exif::ExifInformationSuccessCallback::onsuccess"></a><code><b><span class="methodName">onsuccess</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when the Exif information object has been successfully retrieved.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void onsuccess(<a href="#ExifInformation">ExifInformation</a> exifInfo);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">exifInfo</span>:
+ <em>ExifInformation</em> to be retrieved
+ </li>
+ </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="ExifThumbnailSuccessCallback">
+<a class="backward-compatibility-anchor" name="::Exif::ExifThumbnailSuccessCallback"></a><h3>2.6. ExifThumbnailSuccessCallback</h3>
+<div class="brief">
+ The ExifThumbnailSuccessCallback interface provides a success callback that is invoked when the Exif thumbnail has been retrieved.
+This callback interface specifies a success method with the URI for the thumbnail as an input parameter. It is used in exif.getThumbnail().
+ </div>
+<pre class="webidl prettyprint"> [Callback=FunctionOnly, NoInterfaceObject] interface ExifThumbnailSuccessCallback {
+ void onsuccess(DOMString? uri);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="ExifThumbnailSuccessCallback::onsuccess">
+<a class="backward-compatibility-anchor" name="::Exif::ExifThumbnailSuccessCallback::onsuccess"></a><code><b><span class="methodName">onsuccess</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when the thumbnail of the JPEG file has been successfully retrieved.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void onsuccess(DOMString? uri);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">uri</span><span class="optional"> [nullable]</span>:
+ URI for the thumbnail to be retrieved <br>If there is no thumbnail in the JPEG file, <var>null</var> is returned.
+ </li>
+ </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+<h2 id="full-webidl">3. Full WebIDL</h2>
+<pre class="webidl prettyprint">module Exif {
+
+ enum WhiteBalanceMode { "AUTO", "MANUAL" };
+
+ enum ExposureProgram { "NOT_DEFINED", "MANUAL", "NORMAL", "APERTURE_PRIORITY", "SHUTTER_PRIORITY", "CREATIVE_PROGRAM", "ACTION_PROGRAM", "PORTRAIT_MODE", "LANDSCAPE_MODE" };
+
+ [NoInterfaceObject] interface ExifManagerObject {
+ readonly attribute <a href="#ExifManager">ExifManager</a> exif;
+ };
+ <a href="tizen.html#Tizen">Tizen</a> implements <a href="#ExifManagerObject">ExifManagerObject</a>;
+
+ [NoInterfaceObject] interface ExifManager {
+
+ void getExifInfo(DOMString uri,
+ <a href="#ExifInformationSuccessCallback">ExifInformationSuccessCallback</a> successCallback,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback ) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void saveExifInfo(<a href="#ExifInformation">ExifInformation</a> exifInfo,
+ optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void getThumbnail(DOMString uri,
+ <a href="#ExifThumbnailSuccessCallback">ExifThumbnailSuccessCallback</a> successCallback,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ };
+
+ dictionary ExifInit {
+ DOMString uri;
+ unsigned long width;
+ unsigned long height;
+ DOMString deviceMaker;
+ DOMString deviceModel;
+ Date originalTime;
+ <a href="content.html#ImageContentOrientation">ImageContentOrientation</a> orientation;
+ double fNumber;
+ unsigned short[] isoSpeedRatings;
+ DOMString exposureTime;
+ <a href="#ExposureProgram">ExposureProgram</a> exposureProgram;
+ boolean flash;
+ double focalLength;
+ <a href="#WhiteBalanceMode">WhiteBalanceMode</a> whiteBalance;
+ <a href="tizen.html#SimpleCoordinates">SimpleCoordinates</a> gpsLocation;
+ double gpsAltitude;
+ DOMString gpsProcessingMethod;
+ Date gpsTime;
+ DOMString userComment;
+ };
+
+ [Constructor(optional <a href="#ExifInit">ExifInit</a>? ExifInitDict)]
+ interface ExifInformation {
+ attribute DOMString uri;
+
+ attribute unsigned long? width;
+
+ attribute unsigned long? height;
+
+ attribute DOMString? deviceMaker;
+
+ attribute DOMString? deviceModel;
+
+ attribute Date? originalTime;
+
+ attribute <a href="content.html#ImageContentOrientation">ImageContentOrientation</a>? orientation;
+
+ attribute double? fNumber;
+
+ attribute unsigned short[]? isoSpeedRatings;
+
+ attribute DOMString? exposureTime;
+
+ attribute <a href="#ExposureProgram">ExposureProgram</a>? exposureProgram;
+
+ attribute boolean? flash;
+
+ attribute double? focalLength;
+
+ attribute <a href="#WhiteBalanceMode">WhiteBalanceMode</a>? whiteBalance;
+
+ attribute <a href="tizen.html#SimpleCoordinates">SimpleCoordinates</a>? gpsLocation;
+
+ attribute double? gpsAltitude;
+
+ attribute DOMString? gpsProcessingMethod;
+
+ attribute <a href="time.html#TZDate">TZDate</a>? gpsTime;
+
+ attribute DOMString? userComment;
+
+ };
+
+ [Callback=FunctionOnly, NoInterfaceObject] interface ExifInformationSuccessCallback {
+ void onsuccess(<a href="#ExifInformation">ExifInformation</a> exifInfo);
+ };
+
+ [Callback=FunctionOnly, NoInterfaceObject] interface ExifThumbnailSuccessCallback {
+ void onsuccess(DOMString? uri);
+ };
+
+};</pre>
+</div>
+<div id="page-footer">
+<div class="copyright" align="center">
+ 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>.
+ </div>
+<script type="text/javascript">
+
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', 'UA-25976949-1']);
+ _gaq.push(['_setDomainName', 'tizen.org']);
+ _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>
+</div>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html PUBLIC "html">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="tizen.css" media="screen">
+<script type="text/javascript" src="snippet.js"></script><title>NFC API</title>
+</head>
+<body id="page-content" onload="prettyPrint()">
+<div class="api" id="::NFC">
+<div class="supported-platforms"><img class="wearable-optional" title="Optional, Supported by Tizen Wearable emulator" src="ww_icon_optional.png"></div>
+<div class="title"><h1>NFC API</h1></div>
+<div class="brief">
+ The NFC API provides a protocol for simple wireless interconnection of
+closely coupled devices operating at 13.56 MHz using Near Field Communication (NFC),
+which is an international standard (ISO/IEC 18092).
+To know more, see <a href="http://www.nfc-forum.org/specs/spec_list/">Technical Specifications</a>.
+ </div>
+<div class="description">
+ <p>
+There are three groups of application scenarios for NFC:
+ </p>
+ <ul>
+ <li>
+Exchanging some digital information or data by holding a device close to a wireless tag. </li>
+ <li>
+Exchanging some information or data between two devices by holding them close to each other. </li>
+ <li>
+Making payments by holding mobile phones close to point of sales terminals instead of swiping smart cards. </li>
+ </ul>
+ <p>
+For more information on the NFC features, see <a href="../../../../../org.tizen.guides/html/web/tizen/communication/nfc_w.htm">NFC Guide</a>.
+ </p>
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<h2>Table of Contents</h2>
+<ul class="toc">
+<li>1. <a href="#typedefs-section">Type Definitions</a><ul class="toc">
+<li>1.1. <a href="#NDEFRecordTextEncoding">NDEFRecordTextEncoding</a>
+</li>
+<li>1.2. <a href="#NFCTagType">NFCTagType</a>
+</li>
+<li>1.3. <a href="#CardEmulationMode">CardEmulationMode</a>
+</li>
+<li>1.4. <a href="#SecureElementType">SecureElementType</a>
+</li>
+<li>1.5. <a href="#CardEmulationCategoryType">CardEmulationCategoryType</a>
+</li>
+<li>1.6. <a href="#HCEEventType">HCEEventType</a>
+</li>
+<li>1.7. <a href="#AID">AID</a>
+</li>
+</ul>
+</li>
+<li>2. <a href="#interfaces-section">Interfaces</a><ul class="toc">
+<li>2.1. <a href="#NFCManagerObject">NFCManagerObject</a>
+</li>
+<li>2.2. <a href="#NFCManager">NFCManager</a>
+</li>
+<li>2.3. <a href="#NFCAdapter">NFCAdapter</a>
+</li>
+<li>2.4. <a href="#NFCTag">NFCTag</a>
+</li>
+<li>2.5. <a href="#NFCPeer">NFCPeer</a>
+</li>
+<li>2.6. <a href="#NDEFMessage">NDEFMessage</a>
+</li>
+<li>2.7. <a href="#NDEFRecord">NDEFRecord</a>
+</li>
+<li>2.8. <a href="#NDEFRecordText">NDEFRecordText</a>
+</li>
+<li>2.9. <a href="#NDEFRecordURI">NDEFRecordURI</a>
+</li>
+<li>2.10. <a href="#NDEFRecordMedia">NDEFRecordMedia</a>
+</li>
+<li>2.11. <a href="#HCEEventData">HCEEventData</a>
+</li>
+<li>2.12. <a href="#AIDData">AIDData</a>
+</li>
+<li>2.13. <a href="#NFCTagDetectCallback">NFCTagDetectCallback</a>
+</li>
+<li>2.14. <a href="#NFCPeerDetectCallback">NFCPeerDetectCallback</a>
+</li>
+<li>2.15. <a href="#NDEFMessageReadCallback">NDEFMessageReadCallback</a>
+</li>
+<li>2.16. <a href="#ByteArraySuccessCallback">ByteArraySuccessCallback</a>
+</li>
+<li>2.17. <a href="#CardEmulationModeChangeCallback">CardEmulationModeChangeCallback</a>
+</li>
+<li>2.18. <a href="#TransactionEventCallback">TransactionEventCallback</a>
+</li>
+<li>2.19. <a href="#ActiveSecureElementChangeCallback">ActiveSecureElementChangeCallback</a>
+</li>
+<li>2.20. <a href="#HCEEventReceiveCallback">HCEEventReceiveCallback</a>
+</li>
+<li>2.21. <a href="#AIDArraySuccessCallback">AIDArraySuccessCallback</a>
+</li>
+</ul>
+</li>
+<li>3. <a href="#api-features">Related Feature</a>
+</li>
+<li>4. <a href="#full-webidl">Full WebIDL</a>
+</li>
+</ul>
+<hr>
+<h2 id="method-summary">Summary of Interfaces and Methods</h2>
+<table class="informaltable">
+<thead><tr>
+<th>Interface</th>
+<th>Method</th>
+</tr></thead>
+<tbody>
+<tr>
+<td><a href="#NFCManagerObject">NFCManagerObject</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#NFCManager">NFCManager</a></td>
+<td>
+<a href="#NFCAdapter">NFCAdapter</a> <a href="#NFCManager::getDefaultAdapter">getDefaultAdapter</a> ()<br>
+ void <a href="#NFCManager::setExclusiveMode">setExclusiveMode</a> (boolean mode)</td>
+</tr>
+<tr>
+<td><a href="#NFCAdapter">NFCAdapter</a></td>
+<td>void <a href="#NFCAdapter::setPowered">setPowered</a> (boolean state, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)<br>
+ void <a href="#NFCAdapter::setTagListener">setTagListener</a> (<a href="#NFCTagDetectCallback">NFCTagDetectCallback</a> detectCallback, optional <a href="#NFCTagType">NFCTagType</a>[]? tagFilter)<br>
+ void <a href="#NFCAdapter::setPeerListener">setPeerListener</a> (<a href="#NFCPeerDetectCallback">NFCPeerDetectCallback</a> detectCallback)<br>
+ void <a href="#NFCAdapter::unsetTagListener">unsetTagListener</a> ()<br>
+ void <a href="#NFCAdapter::unsetPeerListener">unsetPeerListener</a> ()<br>
+ long <a href="#NFCAdapter::addCardEmulationModeChangeListener">addCardEmulationModeChangeListener</a> (<a href="#CardEmulationModeChangeCallback">CardEmulationModeChangeCallback</a> changeCallback)<br>
+ void <a href="#NFCAdapter::removeCardEmulationModeChangeListener">removeCardEmulationModeChangeListener</a> (long watchId)<br>
+ long <a href="#NFCAdapter::addTransactionEventListener">addTransactionEventListener</a> (<a href="#SecureElementType">SecureElementType</a> type, <a href="#TransactionEventCallback">TransactionEventCallback</a> eventCallback)<br>
+ void <a href="#NFCAdapter::removeTransactionEventListener">removeTransactionEventListener</a> (long watchId)<br>
+ long <a href="#NFCAdapter::addActiveSecureElementChangeListener">addActiveSecureElementChangeListener</a> (<a href="#ActiveSecureElementChangeCallback">ActiveSecureElementChangeCallback</a> changeCallback)<br>
+ void <a href="#NFCAdapter::removeActiveSecureElementChangeListener">removeActiveSecureElementChangeListener</a> (long watchId)<br>
+ <a href="#NDEFMessage">NDEFMessage</a>? <a href="#NFCAdapter::getCachedMessage">getCachedMessage</a> ()<br>
+ void <a href="#NFCAdapter::setExclusiveModeForTransaction">setExclusiveModeForTransaction</a> (boolean mode)<br>
+ long <a href="#NFCAdapter::addHCEEventListener">addHCEEventListener</a> (<a href="#HCEEventReceiveCallback">HCEEventReceiveCallback</a> eventCallback)<br>
+ void <a href="#NFCAdapter::removeHCEEventListener">removeHCEEventListener</a> (long watchId)<br>
+ void <a href="#NFCAdapter::sendHostAPDUResponse">sendHostAPDUResponse</a> (byte[] apdu, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)<br>
+ boolean <a href="#NFCAdapter::isActivatedHandlerForAID">isActivatedHandlerForAID</a> (<a href="#SecureElementType">SecureElementType</a> type, <a href="#AID">AID</a> aid)<br>
+ boolean <a href="#NFCAdapter::isActivatedHandlerForCategory">isActivatedHandlerForCategory</a> (<a href="#SecureElementType">SecureElementType</a> type, <a href="#CardEmulationCategoryType">CardEmulationCategoryType</a> category)<br>
+ void <a href="#NFCAdapter::registerAID">registerAID</a> (<a href="#SecureElementType">SecureElementType</a> type, <a href="#AID">AID</a> aid, <a href="#CardEmulationCategoryType">CardEmulationCategoryType</a> category)<br>
+ void <a href="#NFCAdapter::unregisterAID">unregisterAID</a> (<a href="#SecureElementType">SecureElementType</a> type, <a href="#AID">AID</a> aid, <a href="#CardEmulationCategoryType">CardEmulationCategoryType</a> category)<br>
+ void <a href="#NFCAdapter::getAIDsForCategory">getAIDsForCategory</a> (<a href="#SecureElementType">SecureElementType</a> type, <a href="#CardEmulationCategoryType">CardEmulationCategoryType</a> category, <a href="#AIDArraySuccessCallback">AIDArraySuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)</td>
+</tr>
+<tr>
+<td><a href="#NFCTag">NFCTag</a></td>
+<td>void <a href="#NFCTag::readNDEF">readNDEF</a> (<a href="#NDEFMessageReadCallback">NDEFMessageReadCallback</a> readCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)<br>
+ void <a href="#NFCTag::writeNDEF">writeNDEF</a> (<a href="#NDEFMessage">NDEFMessage</a> ndefMessage, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)<br>
+ void <a href="#NFCTag::transceive">transceive</a> (byte[] data, <a href="#ByteArraySuccessCallback">ByteArraySuccessCallback</a> dataCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)</td>
+</tr>
+<tr>
+<td><a href="#NFCPeer">NFCPeer</a></td>
+<td>void <a href="#NFCPeer::setReceiveNDEFListener">setReceiveNDEFListener</a> (<a href="#NDEFMessageReadCallback">NDEFMessageReadCallback</a> successCallback)<br>
+ void <a href="#NFCPeer::unsetReceiveNDEFListener">unsetReceiveNDEFListener</a> ()<br>
+ void <a href="#NFCPeer::sendNDEF">sendNDEF</a> (<a href="#NDEFMessage">NDEFMessage</a> ndefMessage, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)</td>
+</tr>
+<tr>
+<td><a href="#NDEFMessage">NDEFMessage</a></td>
+<td>byte[] <a href="#NDEFMessage::toByte">toByte</a> ()</td>
+</tr>
+<tr>
+<td><a href="#NDEFRecord">NDEFRecord</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#NDEFRecordText">NDEFRecordText</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#NDEFRecordURI">NDEFRecordURI</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#NDEFRecordMedia">NDEFRecordMedia</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#HCEEventData">HCEEventData</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#AIDData">AIDData</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#NFCTagDetectCallback">NFCTagDetectCallback</a></td>
+<td>void <a href="#NFCTagDetectCallback::onattach">onattach</a> (<a href="#NFCTag">NFCTag</a> nfcTag)<br>
+ void <a href="#NFCTagDetectCallback::ondetach">ondetach</a> ()</td>
+</tr>
+<tr>
+<td><a href="#NFCPeerDetectCallback">NFCPeerDetectCallback</a></td>
+<td>void <a href="#NFCPeerDetectCallback::onattach">onattach</a> (<a href="#NFCPeer">NFCPeer</a> nfcPeer)<br>
+ void <a href="#NFCPeerDetectCallback::ondetach">ondetach</a> ()</td>
+</tr>
+<tr>
+<td><a href="#NDEFMessageReadCallback">NDEFMessageReadCallback</a></td>
+<td>void <a href="#NDEFMessageReadCallback::onsuccess">onsuccess</a> (<a href="#NDEFMessage">NDEFMessage</a> ndefMessage)</td>
+</tr>
+<tr>
+<td><a href="#ByteArraySuccessCallback">ByteArraySuccessCallback</a></td>
+<td>void <a href="#ByteArraySuccessCallback::onsuccess">onsuccess</a> (byte[] data)</td>
+</tr>
+<tr>
+<td><a href="#CardEmulationModeChangeCallback">CardEmulationModeChangeCallback</a></td>
+<td>void <a href="#CardEmulationModeChangeCallback::onchanged">onchanged</a> (<a href="#CardEmulationMode">CardEmulationMode</a> mode)</td>
+</tr>
+<tr>
+<td><a href="#TransactionEventCallback">TransactionEventCallback</a></td>
+<td>void <a href="#TransactionEventCallback::ondetected">ondetected</a> (octet[] appletId, octet[] data)</td>
+</tr>
+<tr>
+<td><a href="#ActiveSecureElementChangeCallback">ActiveSecureElementChangeCallback</a></td>
+<td>void <a href="#ActiveSecureElementChangeCallback::onchanged">onchanged</a> (<a href="#SecureElementType">SecureElementType</a> type)</td>
+</tr>
+<tr>
+<td><a href="#HCEEventReceiveCallback">HCEEventReceiveCallback</a></td>
+<td>void <a href="#HCEEventReceiveCallback::ondetected">ondetected</a> (<a href="#HCEEventData">HCEEventData</a> data)</td>
+</tr>
+<tr>
+<td><a href="#AIDArraySuccessCallback">AIDArraySuccessCallback</a></td>
+<td>void <a href="#AIDArraySuccessCallback::onsuccess">onsuccess</a> (<a href="#AIDData">AIDData</a>[] aids)</td>
+</tr>
+</tbody>
+</table>
+<div class="typedefs" id="typedefs-section">
+<h2>1. Type Definitions</h2>
+<div class="enum" id="NDEFRecordTextEncoding">
+<a class="backward-compatibility-anchor" name="::NFC::NDEFRecordTextEncoding"></a><h3>1.1. NDEFRecordTextEncoding</h3>
+<div class="brief">
+ Specifies the encoding format for NDEF record text.
+ </div>
+<pre class="webidl prettyprint"> enum NDEFRecordTextEncoding { "UTF8", "UTF16" };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</div>
+<div class="enum" id="NFCTagType">
+<a class="backward-compatibility-anchor" name="::NFC::NFCTagType"></a><h3>1.2. NFCTagType</h3>
+<div class="brief">
+ Specifies the type of an NFC tag.
+ </div>
+<pre class="webidl prettyprint"> enum NFCTagType { "GENERIC_TARGET", "ISO14443_A", "ISO14443_4A", "ISO14443_3A",
+ "MIFARE_MINI", "MIFARE_1K", "MIFARE_4K", "MIFARE_ULTRA", "MIFARE_DESFIRE",
+ "ISO14443_B", "ISO14443_4B", "ISO14443_BPRIME", "FELICA", "JEWEL", "ISO15693",
+ "UNKNOWN_TARGET" };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The following values are supported:
+ </p>
+ <ul>
+ <li>
+GENERIC_TARGET </li>
+ <li>
+ISO14443_A </li>
+ <li>
+ISO14443_4A </li>
+ <li>
+ISO14443_3A </li>
+ <li>
+MIFARE_MINI </li>
+ <li>
+MIFARE_1K </li>
+ <li>
+MIFARE_4K </li>
+ <li>
+MIFARE_ULTRA </li>
+ <li>
+MIFARE_DESFIRE </li>
+ <li>
+ISO14443_B </li>
+ <li>
+ISO14443_4B </li>
+ <li>
+ISO14443_BPRIME </li>
+ <li>
+FELICA </li>
+ <li>
+JEWEL </li>
+ <li>
+ISO15693 </li>
+ <li>
+UNKNOWN_TARGET </li>
+ </ul>
+ </div>
+</div>
+<div class="enum" id="CardEmulationMode">
+<a class="backward-compatibility-anchor" name="::NFC::CardEmulationMode"></a><h3>1.3. CardEmulationMode</h3>
+<div class="brief">
+ Specifies the card emulation mode.
+ </div>
+<pre class="webidl prettyprint"> enum CardEmulationMode { "ALWAYS_ON", "OFF" };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The following values are supported:
+ </p>
+ <ul>
+ <li>
+ALWAYS_ON - Card emulation mode on </li>
+ <li>
+OFF - Card emulation mode off </li>
+ </ul>
+ </div>
+</div>
+<div class="enum" id="SecureElementType">
+<a class="backward-compatibility-anchor" name="::NFC::SecureElementType"></a><h3>1.4. SecureElementType</h3>
+<div class="brief">
+ Specifies the secure element types.
+ </div>
+<pre class="webidl prettyprint"> enum SecureElementType { "ESE", "UICC", "HCE" };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The following values are supported:
+ </p>
+ <ul>
+ <li>
+ESE - The eSE (Embedded Secure Element) secure element type </li>
+ <li>
+UICC - The UICC (Universal Integrated Circuit Card) secure element type </li>
+ <li>
+HCE - The HCE (Host Card Emulation) type. This allows a card to be emulated without secure element </li>
+ </ul>
+ </div>
+<p><span class="remark"> Remark : </span>
+ <em>HCE</em> is supported since Tizen 2.3.1
+ </p>
+</div>
+<div class="enum" id="CardEmulationCategoryType">
+<a class="backward-compatibility-anchor" name="::NFC::CardEmulationCategoryType"></a><h3>1.5. CardEmulationCategoryType</h3>
+<div class="brief">
+ Specifies the card emulation category types.
+ </div>
+<pre class="webidl prettyprint"> enum CardEmulationCategoryType { "PAYMENT", "OTHER" };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The following values are supported:
+ </p>
+ <ul>
+ <li>
+PAYMENT - Category used for NFC payment services </li>
+ <li>
+OTHER - Category that can be used for all other cards </li>
+ </ul>
+ </div>
+</div>
+<div class="enum" id="HCEEventType">
+<a class="backward-compatibility-anchor" name="::NFC::HCEEventType"></a><h3>1.6. HCEEventType</h3>
+<div class="brief">
+ Specifies the HCE event types.
+ </div>
+<pre class="webidl prettyprint"> enum HCEEventType { "DEACTIVATED", "ACTIVATED", "APDU_RECEIVED" };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The following values are supported:
+ </p>
+ <ul>
+ <li>
+DEACTIVATED - HCE deactivated </li>
+ <li>
+ACTIVATED - HCE activated </li>
+ <li>
+APDU_RECEIVED - APDU (Application Protocol Data Unit) received </li>
+ </ul>
+ </div>
+</div>
+<div class="typedef" id="AID">
+<a class="backward-compatibility-anchor" name="::NFC::AID"></a><h3>1.7. AID</h3>
+<div class="brief">
+ AID (Application ID) as specified in ISO/IEC 7816-4.
+ </div>
+<pre class="webidl prettyprint"> typedef DOMString AID;</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</div>
+</div>
+<div class="interfaces" id="interfaces-section">
+<h2>2. Interfaces</h2>
+<div class="interface" id="NFCManagerObject">
+<a class="backward-compatibility-anchor" name="::NFC::NFCManagerObject"></a><h3>2.1. NFCManagerObject</h3>
+<div class="brief">
+ The NFCManagerObject interface defines what is instantiated by the <em>Tizen</em> object from the Tizen Platform.
+The <em>tizen.nfc </em>object allows access to the functionality of the NFC API.
+ </div>
+<pre class="webidl prettyprint"> [NoInterfaceObject] interface NFCManagerObject {
+ readonly attribute <a href="#NFCManager">NFCManager</a> nfc;
+ };</pre>
+<pre class="webidl prettyprint"> <a href="tizen.html#Tizen">Tizen</a> implements <a href="#NFCManagerObject">NFCManagerObject</a>;</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</div>
+<div class="interface" id="NFCManager">
+<a class="backward-compatibility-anchor" name="::NFC::NFCManager"></a><h3>2.2. NFCManager</h3>
+<div class="brief">
+ The NFCManager interface provides access to the NFC tag/target.
+ </div>
+<pre class="webidl prettyprint"> [NoInterfaceObject] interface NFCManager {
+ const short NFC_RECORD_TNF_EMPTY = 0;
+ const short NFC_RECORD_TNF_WELL_KNOWN = 1;
+ const short NFC_RECORD_TNF_MIME_MEDIA = 2;
+ const short NFC_RECORD_TNF_URI = 3;
+ const short NFC_RECORD_TNF_EXTERNAL_RTD = 4;
+ const short NFC_RECORD_TNF_UNKNOWN = 5;
+ const short NFC_RECORD_TNF_UNCHANGED = 6;
+
+ <a href="#NFCAdapter">NFCAdapter</a> getDefaultAdapter() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void setExclusiveMode(boolean mode) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+It provides access to the API functionalities through the tizen.nfc interface.
+ </p>
+ </div>
+<div class="consts">
+<h4>Constants</h4>
+<dl>
+<li class="const" id="NFCManager::NFC_RECORD_TNF_EMPTY">
+<a class="backward-compatibility-anchor" name="::NFC::NFCManager::NFC_RECORD_TNF_EMPTY"></a><span class="name">NFC_RECORD_TNF_EMPTY</span><div class="brief">
+ A constant to indicate the empty format of an NDEF record's type field.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<br><br>
+</li>
+<li class="const" id="NFCManager::NFC_RECORD_TNF_WELL_KNOWN">
+<a class="backward-compatibility-anchor" name="::NFC::NFCManager::NFC_RECORD_TNF_WELL_KNOWN"></a><span class="name">NFC_RECORD_TNF_WELL_KNOWN</span><div class="brief">
+ A constant to indicate the Record Type Definition (RTD) format of an NDEF record's type field.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<br><br>
+</li>
+<li class="const" id="NFCManager::NFC_RECORD_TNF_MIME_MEDIA">
+<a class="backward-compatibility-anchor" name="::NFC::NFCManager::NFC_RECORD_TNF_MIME_MEDIA"></a><span class="name">NFC_RECORD_TNF_MIME_MEDIA</span><div class="brief">
+ A constant to indicate the MIME media types format in RFC 2046 [RFC 2046] of an NDEF record's type field.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<br><br>
+</li>
+<li class="const" id="NFCManager::NFC_RECORD_TNF_URI">
+<a class="backward-compatibility-anchor" name="::NFC::NFCManager::NFC_RECORD_TNF_URI"></a><span class="name">NFC_RECORD_TNF_URI</span><div class="brief">
+ A constant to indicate the absolute URI, as defined in the RFC 3986 [RFC 3986] format in RFC 2046 [RFC 2046] of an NDEF record's type field.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<br><br>
+</li>
+<li class="const" id="NFCManager::NFC_RECORD_TNF_EXTERNAL_RTD">
+<a class="backward-compatibility-anchor" name="::NFC::NFCManager::NFC_RECORD_TNF_EXTERNAL_RTD"></a><span class="name">NFC_RECORD_TNF_EXTERNAL_RTD</span><div class="brief">
+ A constant to indicate the NFC forum external type [NFC RTD] format in RFC 2046 [RFC 2046] of an NDEF record's type field.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<br><br>
+</li>
+<li class="const" id="NFCManager::NFC_RECORD_TNF_UNKNOWN">
+<a class="backward-compatibility-anchor" name="::NFC::NFCManager::NFC_RECORD_TNF_UNKNOWN"></a><span class="name">NFC_RECORD_TNF_UNKNOWN</span><div class="brief">
+ A constant to indicate the unknown type format in RFC 2046 [RFC 2046] of an NDEF record's type field.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<br><br>
+</li>
+<li class="const" id="NFCManager::NFC_RECORD_TNF_UNCHANGED">
+<a class="backward-compatibility-anchor" name="::NFC::NFCManager::NFC_RECORD_TNF_UNCHANGED"></a><span class="name">NFC_RECORD_TNF_UNCHANGED</span><div class="brief">
+ A constant to indicate whether the payload is an intermediate or final chunk of a chunked NDEF record.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<br><br>
+</li>
+</dl>
+</div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="NFCManager::getDefaultAdapter">
+<a class="backward-compatibility-anchor" name="::NFC::NFCManager::getDefaultAdapter"></a><code><b><span class="methodName">getDefaultAdapter</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Gets the default NFC adapter of the device.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint"><a href="#NFCAdapter">NFCAdapter</a> getDefaultAdapter();
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.common
+ </p>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ NFCAdapter The default NFCAdapter object.
+ </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, in any other error case.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try {
+ var adapter = tizen.nfc.getDefaultAdapter();
+ } catch (err) {
+ console.log(err.name +": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="NFCManager::setExclusiveMode">
+<a class="backward-compatibility-anchor" name="::NFC::NFCManager::setExclusiveMode"></a><code><b><span class="methodName">setExclusiveMode</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Gives priority to the current application for NFC operations.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void setExclusiveMode(boolean mode);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+If the current application has priority, and is in the foreground, the system will not generate
+application control requests to pick an application to handle NFC requests.
+Such a request is usually generated, for example, when detecting an NFC tag or receiving an NDEF message
+from a connected NFC peer-to-peer target.
+ </p>
+ <p>
+When the current application moves to the background, it loses the priority.
+ </p>
+ <p>
+The exclusive mode can only be set when NFC is on. If NFC is off, the mode is ignored.
+ </p>
+ </div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.common
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">mode</span>:
+ The value of the exclusive mode.
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, in any other error case.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try {
+ tizen.nfc.setExclusiveMode(true) ;
+ } catch (err) {
+ console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="NFCAdapter">
+<a class="backward-compatibility-anchor" name="::NFC::NFCAdapter"></a><h3>2.3. NFCAdapter</h3>
+<div class="brief">
+ The NFCAdapter interface provides access to control the adapter by offering methods to control local NFC behaviors, such as turning on/off an adapter.
+ </div>
+<pre class="webidl prettyprint"> [NoInterfaceObject] interface NFCAdapter {
+ readonly attribute boolean powered;
+
+ attribute <a href="#CardEmulationMode">CardEmulationMode</a> cardEmulationMode raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ attribute <a href="#SecureElementType">SecureElementType</a>? activeSecureElement raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void setPowered(boolean state,
+ optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void setTagListener(<a href="#NFCTagDetectCallback">NFCTagDetectCallback</a> detectCallback,
+ optional <a href="#NFCTagType">NFCTagType</a>[]? tagFilter) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void setPeerListener(<a href="#NFCPeerDetectCallback">NFCPeerDetectCallback</a> detectCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void unsetTagListener() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void unsetPeerListener() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ long addCardEmulationModeChangeListener(<a href="#CardEmulationModeChangeCallback">CardEmulationModeChangeCallback</a> changeCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void removeCardEmulationModeChangeListener(long watchId) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ long addTransactionEventListener(<a href="#SecureElementType">SecureElementType</a> type,
+ <a href="#TransactionEventCallback">TransactionEventCallback</a> eventCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void removeTransactionEventListener(long watchId) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ long addActiveSecureElementChangeListener(<a href="#ActiveSecureElementChangeCallback">ActiveSecureElementChangeCallback</a> changeCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void removeActiveSecureElementChangeListener(long watchId) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ <a href="#NDEFMessage">NDEFMessage</a>? getCachedMessage() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void setExclusiveModeForTransaction(boolean mode) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ long addHCEEventListener(<a href="#HCEEventReceiveCallback">HCEEventReceiveCallback</a> eventCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void removeHCEEventListener(long watchId) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void sendHostAPDUResponse(byte[] apdu, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ boolean isActivatedHandlerForAID(<a href="#SecureElementType">SecureElementType</a> type, <a href="#AID">AID</a> aid) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ boolean isActivatedHandlerForCategory(<a href="#SecureElementType">SecureElementType</a> type, <a href="#CardEmulationCategoryType">CardEmulationCategoryType</a> category) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void registerAID(<a href="#SecureElementType">SecureElementType</a> type, <a href="#AID">AID</a> aid, <a href="#CardEmulationCategoryType">CardEmulationCategoryType</a> category) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void unregisterAID(<a href="#SecureElementType">SecureElementType</a> type, <a href="#AID">AID</a> aid, <a href="#CardEmulationCategoryType">CardEmulationCategoryType</a> category) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void getAIDsForCategory(<a href="#SecureElementType">SecureElementType</a> type, <a href="#CardEmulationCategoryType">CardEmulationCategoryType</a> category, <a href="#AIDArraySuccessCallback">AIDArraySuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul>
+<li class="attribute" id="NFCAdapter::powered">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">boolean </span><span class="name">powered</span></span><div class="brief">
+ The state of the NFC adapter.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="NFCAdapter::cardEmulationMode">
+<span class="attrName"><span class="type">CardEmulationMode </span><span class="name">cardEmulationMode</span></span><div class="brief">
+ Card emulation mode of the NFC adapter.
+ </div>
+<div class="description">
+ <p>
+To be allowed to change <var>cardEmulationMode</var>, the following privilege must be declared in the application's <em>config.xml</em> file.
+ </p>
+ <ul>
+ <li>
+<b>ALWAYS_ON</b> - NFC card emulation feature is enabled. NFC card emulation related methods are available for use. </li>
+ <li>
+<b>OFF</b> - NFC card emulation related methods cannot be used </li>
+ </ul>
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.cardemulation
+ </p>
+<p><span class="remark"> Remark : </span>
+ To check if NFC card emulation is supported on this device, use <var>tizen.systeminfo.getCapability("http://tizen.org/feature/network.nfc.card_emulation")</var>.
+<br>If it is not supported, <var>NotSupportedError</var> is thrown.
+ </p>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege or a valid certificate to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type ServiceNotAvailableError, if the NFC service is not available.
+ </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if NFC card emulation is not supported in a device.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, if any other error occurs.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+</li>
+<li class="attribute" id="NFCAdapter::activeSecureElement">
+<span class="attrName"><span class="type">SecureElementType </span><span class="name">activeSecureElement</span><span class="optional"> [nullable]</span></span><div class="brief">
+ Active secure element type.
+ </div>
+<div class="description">
+ <p>
+To be allowed to change <var>activeSecureElement</var>, the following privilege must be declared in the application's <em>config.xml</em> file.
+ </p>
+ <p>
+If the NFC service is not available, it returns <var>null</var>.
+ </p>
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.cardemulation
+ </p>
+<p><span class="remark"> Remark : </span>
+ To check if NFC card emulation is supported on this device, use <var>tizen.systeminfo.getCapability("http://tizen.org/feature/network.nfc.card_emulation")</var>.
+<br>If it is not supported, <var>NotSupportedError</var> is thrown.
+ </p>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege or a valid certificate to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type ServiceNotAvailableError, if the NFC service is not available.
+ </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if NFC card emulation is not supported in a device.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, if any other error occurs.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+</li>
+</ul>
+</div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="NFCAdapter::setPowered">
+<a class="backward-compatibility-anchor" name="::NFC::NFCAdapter::setPowered"></a><code><b><span class="methodName">setPowered</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Sets the power of an NFC adapter to either an on state or an off state.
+ </div>
+<div class="deprecated"><p><font color="red"><i><b>Deprecated.</b>
+ It is deprecated since Tizen 2.3 and will be removed in Tizen 3.0. Instead, let the user turn NFC on/off through the Settings application. See the <a href="../../../../../org.tizen.tutorials/html/web/tizen/communication/nfc_tutorial_w.htm#Managing_NFC_Conn">Managing NFC</a> Tutorial.
+ </i></font></p></div>
+<div class="synopsis"><pre class="signature prettyprint">void setPowered(boolean state, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The ErrorCallback is launched with these error types:
+ </p>
+ <ul>
+ <li>
+ ServiceNotAvailableError - If the NFC device is busy. </li>
+ <li>
+ UnknownError - If any other error occurs. </li>
+ </ul>
+ </div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.admin
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">state</span>:
+ The state of the NFC adapter, <var>true</var> means on, <var>false</var> means off
+ </li>
+ <li class="param">
+<span class="name">successCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Callback method to be invoked when the NFC adapter is
+enabled or disabled successfully.
+ </li>
+ <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Callback method to be invoked when an error occurs.
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter
+is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if this functionality is not allowed.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> var gNfcAdapter;
+ var onPowerOn = function(){ // Called when NFC adapter is powered on
+ try {
+ console.log("Power on succeed");
+ // Implement NFC communication routines ...
+ gNfcAdapter.setPowered(
+ false, // Disable NFC adapter
+ function () {console.log("Power off succeed"); }, // Handle success
+ function () {console.log("Power off failed"); }); // Handle failure
+ } catch (err) {
+ console.log(err.name + ": " + err.message);
+ }
+ };
+ try {
+ gNfcAdapter = tizen.nfc.getDefaultAdapter();
+ if (!gNfcAdapter.powered) {
+ gNfcAdapter.setPowered(
+ true, // Enable NFC adapter
+ onPowerOn, // Handle success
+ function () {console.log("Power on failed")}); // Handle failure
+ } else {
+ onPowerOn();
+ }
+ } catch (err) {
+ console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="NFCAdapter::setTagListener">
+<a class="backward-compatibility-anchor" name="::NFC::NFCAdapter::setTagListener"></a><code><b><span class="methodName">setTagListener</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Registers a callback function to invoke when an NFC tag is detected.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void setTagListener(<a href="#NFCTagDetectCallback">NFCTagDetectCallback</a> detectCallback, optional <a href="#NFCTagType">NFCTagType</a>[]? tagFilter);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+If the registration completes successfully, detectCallback must be
+invoked when the NFC tag is detected.
+ </p>
+ <p>
+If no tagFilter is passed, it shall consider the default tagFilter, that is to set all tag types.
+ </p>
+ </div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.tag
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">detectCallback</span>:
+ Callback method to be invoked when an NFC tag is successfully detected.
+ </li>
+ <li class="param">
+<span class="name">tagFilter</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ A filter to be used when a specific NFC tag is detected.
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter
+is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type ServiceNotAvailableError, if the NFC service is not available.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, in any other error case.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> var adapter = tizen.nfc.getDefaultAdapter();
+ var onSuccessCB = {onattach : function(nfcTag) {
+ console.log("NFC Tag's type is " + nfcTag.type);
+ }, ondetach : function() {
+ console.log("NFC Tag is detached");
+ }};
+ adapter.setTagListener(onSuccessCB);
+ </pre>
+</div>
+</dd>
+<dt class="method" id="NFCAdapter::setPeerListener">
+<a class="backward-compatibility-anchor" name="::NFC::NFCAdapter::setPeerListener"></a><code><b><span class="methodName">setPeerListener</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Registers a callback function to be invoked when an NFC peer-to-peer target is detected.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void setPeerListener(<a href="#NFCPeerDetectCallback">NFCPeerDetectCallback</a> detectCallback);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+If the registration completes successfully, the detectCallback must be
+invoked when an NFC peer-to-peer target is detected.
+ </p>
+ </div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.p2p
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">detectCallback</span>:
+ Callback method to be invoked when an NFC peer-to-peer target is successfully detected.
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter
+is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type ServiceNotAvailableError, if the NFC service is not available.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, in any other error case.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> var adapter = tizen.nfc.getDefaultAdapter();
+ var onSuccessCB = {onattach : function(nfcPeer) {
+ console.log("NFC Target is detected");
+ }, ondetach : function() {
+ console.log("NFC Target is detached");
+ }};
+ adapter.setPeerListener(onSuccessCB);
+ </pre>
+</div>
+</dd>
+<dt class="method" id="NFCAdapter::unsetTagListener">
+<a class="backward-compatibility-anchor" name="::NFC::NFCAdapter::unsetTagListener"></a><code><b><span class="methodName">unsetTagListener</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Unregisters the listener for detecting an NFC tag.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void unsetTagListener();
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.tag
+ </p>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type ServiceNotAvailableError, if the NFC service is not available.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, in any other error case.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> var adapter = tizen.nfc.getDefaultAdapter();
+
+ // Receives NFCTag
+ var onSuccessCB = {
+ onattach : function(nfcTag) {
+ console.log("The attached NFC tag's type is " + nfcTag.type);
+ },
+ ondetach : function() {
+ console.log("NFC tag is detached.");
+
+ // Unregister the listener when the NFC tag is detached.
+ adapter.unsetTagListener();
+ }
+ };
+
+ // Registers to be notified when NFC tag is detected.
+ adapter.setTagListener(onSuccessCB);
+ </pre>
+</div>
+</dd>
+<dt class="method" id="NFCAdapter::unsetPeerListener">
+<a class="backward-compatibility-anchor" name="::NFC::NFCAdapter::unsetPeerListener"></a><code><b><span class="methodName">unsetPeerListener</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Unregisters the listener for detecting an NFC peer-to-peer target.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void unsetPeerListener();
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.p2p
+ </p>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type ServiceNotAvailableError, if the NFC service is not available.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, in any other error case.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> var adapter = tizen.nfc.getDefaultAdapter();
+
+ // Receives an NFC peer.
+ var onSuccessCB = {
+ onattach : function(nfcPeer) {
+ console.log("NFC peer target is attached.");
+ },
+ ondetach : function() {
+ console.log("NFC peer target is detached.");
+
+ // Unregisters the listener when NFC peer target is detached.
+ adapter.unsetPeerListener();
+ }
+ };
+
+ // Registers to be notified when NFC peer target is detected.
+ adapter.setPeerListener(onSuccessCB);
+ </pre>
+</div>
+</dd>
+<dt class="method" id="NFCAdapter::addCardEmulationModeChangeListener">
+<a class="backward-compatibility-anchor" name="::NFC::NFCAdapter::addCardEmulationModeChangeListener"></a><code><b><span class="methodName">addCardEmulationModeChangeListener</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Registers a callback function to invoke when the card emulation mode is changed.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">long addCardEmulationModeChangeListener(<a href="#CardEmulationModeChangeCallback">CardEmulationModeChangeCallback</a> changeCallback);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.cardemulation
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">changeCallback</span>:
+ Callback method to be invoked when the card emulation mode is changed
+ </li>
+ </ul>
+</div>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ long Subscription identifier
+ </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if NFC card emulation is not supported.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, in any other error case.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try {
+ var onSuccessCB = function(mode) {
+ console.log("The card emulation mode is " + mode);
+ };
+ var listenerId = adapter.addCardEmulationModeChangeListener(onSuccessCB) ;
+ } catch (err) {
+ console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="NFCAdapter::removeCardEmulationModeChangeListener">
+<a class="backward-compatibility-anchor" name="::NFC::NFCAdapter::removeCardEmulationModeChangeListener"></a><code><b><span class="methodName">removeCardEmulationModeChangeListener</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Unsubscribes from receiving notification of card emulation mode changes.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void removeCardEmulationModeChangeListener(long watchId);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.cardemulation
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">watchId</span>:
+ Subscription identifier to remove
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if NFC card emulation is not supported.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, in any other error case.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try {
+ adapter.removeCardEmulationModeChangeListener(listenerId) ;
+ } catch (err) {
+ console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="NFCAdapter::addTransactionEventListener">
+<a class="backward-compatibility-anchor" name="::NFC::NFCAdapter::addTransactionEventListener"></a><code><b><span class="methodName">addTransactionEventListener</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Registers a callback function to invoke when an external reader tries to access a secure element.
+Such an event may indicate initiating a financial transaction using the device.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">long addTransactionEventListener(<a href="#SecureElementType">SecureElementType</a> type, <a href="#TransactionEventCallback">TransactionEventCallback</a> eventCallback);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.cardemulation
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">type</span>:
+ Secure element type to listen
+ </li>
+ <li class="param">
+<span class="name">eventCallback</span>:
+ Callback method to be invoked when an external reader tries to access a secure element
+ </li>
+ </ul>
+</div>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ long Subscription identifier
+ </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if NFC card emulation is not supported.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, in any other error case.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try {
+ var listenerId = adapter.addTransactionEventListener("UICC", function(aid, data){console.log("transaction event occurs");}) ;
+ } catch (err) {
+ console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="NFCAdapter::removeTransactionEventListener">
+<a class="backward-compatibility-anchor" name="::NFC::NFCAdapter::removeTransactionEventListener"></a><code><b><span class="methodName">removeTransactionEventListener</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Unsubscribes from receiving notification of transaction events.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void removeTransactionEventListener(long watchId);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.cardemulation
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">watchId</span>:
+ Subscription identifier to remove
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if NFC card emulation is not supported.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, in any other error case.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try {
+ adapter.removeTransactionEventListener(listenerId) ;
+ } catch (err) {
+ console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="NFCAdapter::addActiveSecureElementChangeListener">
+<a class="backward-compatibility-anchor" name="::NFC::NFCAdapter::addActiveSecureElementChangeListener"></a><code><b><span class="methodName">addActiveSecureElementChangeListener</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Registers a callback function to invoke when an active secure element is changed.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">long addActiveSecureElementChangeListener(<a href="#ActiveSecureElementChangeCallback">ActiveSecureElementChangeCallback</a> changeCallback);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.cardemulation
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">changeCallback</span>:
+ Callback method to be invoked when an active secure element is changed
+ </li>
+ </ul>
+</div>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ long Subscription identifier
+ </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if NFC card emulation is not supported.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, in any other error case.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try {
+ var onSuccessCB = function(seType) {
+ console.log("Active secure element is " + seType);
+ };
+ var listenerId = adapter.addActiveSecureElementChangeListener(onSuccessCB) ;
+ } catch (err) {
+ console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="NFCAdapter::removeActiveSecureElementChangeListener">
+<a class="backward-compatibility-anchor" name="::NFC::NFCAdapter::removeActiveSecureElementChangeListener"></a><code><b><span class="methodName">removeActiveSecureElementChangeListener</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Unsubscribes from receiving notification of active secure element changes.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void removeActiveSecureElementChangeListener(long watchId);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.cardemulation
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">watchId</span>:
+ Subscription identifier to remove
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if NFC card emulation is not supported.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, in any other error case.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try {
+ adapter.removeActiveSecureElementChangeListener(listenerId) ;
+ } catch (err) {
+ console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="NFCAdapter::getCachedMessage">
+<a class="backward-compatibility-anchor" name="::NFC::NFCAdapter::getCachedMessage"></a><code><b><span class="methodName">getCachedMessage</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Gets the NDEF message cached when the tag is detected.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint"><a href="#NDEFMessage">NDEFMessage</a>? getCachedMessage();
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+If the operation completes successfully, the NDEF Message that is last read
+should be returned.
+ </p>
+ </div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.common
+ </p>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ NDEFMessage The NDEF Message that was last read.
+ </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, in any other error case.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> // Gets the cached message
+ var cachedMessage = tizen.nfc.getDefaultAdapter().getCachedMessage();
+ </pre>
+</div>
+</dd>
+<dt class="method" id="NFCAdapter::setExclusiveModeForTransaction">
+<a class="backward-compatibility-anchor" name="::NFC::NFCAdapter::setExclusiveModeForTransaction"></a><code><b><span class="methodName">setExclusiveModeForTransaction</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Gives priority to the current application for NFC transaction events.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void setExclusiveModeForTransaction(boolean mode);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+If the current application has priority, and is in the foreground, the system will not generate
+application control requests to pick an application to handle a transaction event request.
+ </p>
+ <p>
+When the current application moves to the background, it loses priority.
+ </p>
+ <p>
+An application is allowed to get priority only when it is in the foreground.
+Losing priority is always allowed regardless of an application's status.
+ </p>
+ </div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.cardemulation
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">mode</span>:
+ Value of the exclusive mode
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method or a valid certificate to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type ServiceNotAvailableError, if the application is not in the foreground and is trying to get priority.
+ </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if NFC card emulation is not supported.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, in any other error case.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try {
+ adapter.setExclusiveModeForTransaction(true) ;
+ } catch (err) {
+ console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="NFCAdapter::addHCEEventListener">
+<a class="backward-compatibility-anchor" name="::NFC::NFCAdapter::addHCEEventListener"></a><code><b><span class="methodName">addHCEEventListener</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Registers a callback function for receiving HCE event.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">long addHCEEventListener(<a href="#HCEEventReceiveCallback">HCEEventReceiveCallback</a> eventCallback);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.cardemulation
+ </p>
+<p><span class="remark"> Remark : </span>
+ To check if NFC HCE is supported on this device, use <var>tizen.systeminfo.getCapability("http://tizen.org/feature/network.nfc.card_emulation.hce")</var>.
+<br>If it is not supported, <var>NotSupportedError</var> is thrown.
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">eventCallback</span>:
+ Callback method to be invoked when host device receives an APDU that is defined in the ISO/IEC 7816-4 specification
+ </li>
+ </ul>
+</div>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ long Subscription identifier
+ </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if NFC HCE is not supported.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, in any other error case.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try {
+ var onDetectedCB = function(event_data) {
+ console.log("HCE event type is " + event_data.eventType);
+ console.log("APDU is " + event_data.apdu);
+ };
+ var listenerId = adapter.addHCEEventListener(onDetectedCB) ;
+ } catch (err) {
+ console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="NFCAdapter::removeHCEEventListener">
+<a class="backward-compatibility-anchor" name="::NFC::NFCAdapter::removeHCEEventListener"></a><code><b><span class="methodName">removeHCEEventListener</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Unsubscribes from receiving notification of a HCE event.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void removeHCEEventListener(long watchId);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.cardemulation
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">watchId</span>:
+ Subscription identifier to remove
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if NFC HCE is not supported.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, in any other error case.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try {
+ adapter.removeHCEEventListener(listenerId) ;
+ } catch (err) {
+ console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="NFCAdapter::sendHostAPDUResponse">
+<a class="backward-compatibility-anchor" name="::NFC::NFCAdapter::sendHostAPDUResponse"></a><code><b><span class="methodName">sendHostAPDUResponse</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ send host APDU response to CLF (Contactless Front-end).
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void sendHostAPDUResponse(byte[] apdu, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The ErrorCallback is launched with these error types:
+ </p>
+ <ul>
+ <li>
+ ServiceNotAvailableError - If the NFC service is not available. </li>
+ <li>
+ UnknownError - If any other error occurs. </li>
+ </ul>
+ </div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.cardemulation
+ </p>
+<p><span class="remark"> Remark : </span>
+ To check if NFC HCE is supported on this device, use <var>tizen.systeminfo.getCapability("http://tizen.org/feature/network.nfc.card_emulation.hce")</var>.
+<br>If it is not supported, <var>NotSupportedError</var> is thrown.
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">apdu</span>:
+ The APDU data to send. APDU is defined in the ISO/IEC 7816-4 specification.
+ </li>
+ <li class="param">
+<span class="name">successCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Invoked when an APDU is successfully sent to the NFC reader.
+ </li>
+ <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Invoked in case any error occurs while sending.
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if NFC HCE is not supported.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try {
+ var successCB = function() {
+ console.log("Sending APDU reponse was successful.");
+ };
+
+ var errorCB = function() {
+ console.log("Sending APDU reponse failed.");
+ };
+
+ var apdu_response= [0x00,0xA4,0x04,0x00,0x04,0x11,0x12, 0x13, 0x14]; //set apdu response.
+ adapter.sendHostAPDUResponse(apdu_response, successCB, errorCB) ;
+ } catch (err) {
+ console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="NFCAdapter::isActivatedHandlerForAID">
+<a class="backward-compatibility-anchor" name="::NFC::NFCAdapter::isActivatedHandlerForAID"></a><code><b><span class="methodName">isActivatedHandlerForAID</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Allows an application to query whether an application is currently the activated handler for a specific AID and secure element type.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">boolean isActivatedHandlerForAID(<a href="#SecureElementType">SecureElementType</a> type, <a href="#AID">AID</a> aid);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.cardemulation
+ </p>
+<p><span class="remark"> Remark : </span>
+ To check if NFC HCE is supported on this device, use <var>tizen.systeminfo.getCapability("http://tizen.org/feature/network.nfc.card_emulation.hce")</var>.
+<br>If it is not supported, <var>NotSupportedError</var> is thrown.
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">type</span>:
+ The secure element type
+ </li>
+ <li class="param">
+<span class="name">aid</span>:
+ Application ID, specified in ISO/IEC 7816-4
+ </li>
+ </ul>
+</div>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ boolean <em>true</em> if current application is activated handler for the AID
+ </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if NFC HCE is not supported.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, in any other error case.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try {
+ var aid = "ABC0012345";
+ var isActiveHandler = adapter.isActivatedHandlerForAID("HCE", aid);
+ if(isActiveHandler){
+ console.log("current application is activated handler for the AID");
+ }
+ } catch (err) {
+ console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="NFCAdapter::isActivatedHandlerForCategory">
+<a class="backward-compatibility-anchor" name="::NFC::NFCAdapter::isActivatedHandlerForCategory"></a><code><b><span class="methodName">isActivatedHandlerForCategory</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Allows an application to query whether an application is currently the activated handler for a specific card emulation category and secure element type.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">boolean isActivatedHandlerForCategory(<a href="#SecureElementType">SecureElementType</a> type, <a href="#CardEmulationCategoryType">CardEmulationCategoryType</a> category);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.cardemulation
+ </p>
+<p><span class="remark"> Remark : </span>
+ To check if NFC HCE is supported on this device, use <var>tizen.systeminfo.getCapability("http://tizen.org/feature/network.nfc.card_emulation.hce")</var>.
+<br>If it is not supported, <var>NotSupportedError</var> is thrown.
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">type</span>:
+ The secure element type
+ </li>
+ <li class="param">
+<span class="name">category</span>:
+ The card emulation category type
+ </li>
+ </ul>
+</div>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ boolean <em>true</em> if current application is activated handler for the category
+ </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if NFC HCE is not supported.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, in any other error case.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try {
+ var isActiveHandler = adapter.isActivatedHandlerForCategory("ESE", "PAYMENT") ;
+ if(isActiveHandler){
+ console.log("current application is activated handler for the category");
+ }
+ } catch (err) {
+ console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="NFCAdapter::registerAID">
+<a class="backward-compatibility-anchor" name="::NFC::NFCAdapter::registerAID"></a><code><b><span class="methodName">registerAID</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Registers an AID for a specific category and secure element type.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void registerAID(<a href="#SecureElementType">SecureElementType</a> type, <a href="#AID">AID</a> aid, <a href="#CardEmulationCategoryType">CardEmulationCategoryType</a> category);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.cardemulation
+ </p>
+<p><span class="remark"> Remark : </span>
+ To check if NFC HCE is supported on this device, use <var>tizen.systeminfo.getCapability("http://tizen.org/feature/network.nfc.card_emulation.hce")</var>.
+<br>If it is not supported, <var>NotSupportedError</var> is thrown.
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">type</span>:
+ The secure element type
+ </li>
+ <li class="param">
+<span class="name">aid</span>:
+ Application Id, specified in ISO/IEC 7816-4
+ </li>
+ <li class="param">
+<span class="name">category</span>:
+ The card emulation category type
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if NFC HCE is not supported.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, in any other error case.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try {
+
+ var aid = "ABC0012345";
+ adapter.registerAID("HCE", aid, "PAYMENT") ;
+ } catch (err) {
+ console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="NFCAdapter::unregisterAID">
+<a class="backward-compatibility-anchor" name="::NFC::NFCAdapter::unregisterAID"></a><code><b><span class="methodName">unregisterAID</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Unregisters an AID that was previously registered for a specific card emulation category and secure element type. An application can only remove the AIDs which it registered.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void unregisterAID(<a href="#SecureElementType">SecureElementType</a> type, <a href="#AID">AID</a> aid, <a href="#CardEmulationCategoryType">CardEmulationCategoryType</a> category);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.cardemulation
+ </p>
+<p><span class="remark"> Remark : </span>
+ To check if NFC HCE is supported on this device, use <var>tizen.systeminfo.getCapability("http://tizen.org/feature/network.nfc.card_emulation.hce")</var>.
+<br>If it is not supported, <var>NotSupportedError</var> is thrown.
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">type</span>:
+ The secure element type
+ </li>
+ <li class="param">
+<span class="name">aid</span>:
+ Application Id, specified in ISO/IEC 7816-4
+ </li>
+ <li class="param">
+<span class="name">category</span>:
+ The card emulation category type
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if NFC HCE is not supported.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, in any other error case.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try {
+
+ var aid = "ABC0012345";
+ adapter.unregisterAID("HCE", aid, "PAYMENT") ;
+ } catch (err) {
+ console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="NFCAdapter::getAIDsForCategory">
+<a class="backward-compatibility-anchor" name="::NFC::NFCAdapter::getAIDsForCategory"></a><code><b><span class="methodName">getAIDsForCategory</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Retrieves AIDs that were previously registered for a specific card emulation category and secure element type. An application can only retrieve the AIDs which it registered.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void getAIDsForCategory(<a href="#SecureElementType">SecureElementType</a> type, <a href="#CardEmulationCategoryType">CardEmulationCategoryType</a> category, <a href="#AIDArraySuccessCallback">AIDArraySuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The ErrorCallback is launched with these error types:
+ </p>
+ <ul>
+ <li>
+ ServiceNotAvailableError - If the NFC service is not available. </li>
+ <li>
+ UnknownError - If any other error occurs. </li>
+ </ul>
+ </div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.cardemulation
+ </p>
+<p><span class="remark"> Remark : </span>
+ To check if NFC HCE is supported on this device, use <var>tizen.systeminfo.getCapability("http://tizen.org/feature/network.nfc.card_emulation.hce")</var>.
+<br>If it is not supported, <var>NotSupportedError</var> is thrown.
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">type</span>:
+ The secure element type
+ </li>
+ <li class="param">
+<span class="name">category</span>:
+ The card emulation category type
+ </li>
+ <li class="param">
+<span class="name">successCallback</span>:
+ Invoked when the AIDs are retrieved successfully.
+ </li>
+ <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Invoked in case any error occurs while retrieving.
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if NFC HCE is not supported.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="NFCTag">
+<a class="backward-compatibility-anchor" name="::NFC::NFCTag"></a><h3>2.4. NFCTag</h3>
+<div class="brief">
+ The NFCTag interface provides access to the NFC tag.
+ </div>
+<pre class="webidl prettyprint"> [NoInterfaceObject] interface NFCTag {
+ readonly attribute <a href="#NFCTagType">NFCTagType</a> type;
+
+ readonly attribute boolean isSupportedNDEF;
+
+ readonly attribute long ndefSize;
+
+ readonly attribute object properties;
+
+ readonly attribute boolean isConnected;
+
+
+ void readNDEF(<a href="#NDEFMessageReadCallback">NDEFMessageReadCallback</a> readCallback,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void writeNDEF(<a href="#NDEFMessage">NDEFMessage</a> ndefMessage,
+ optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void transceive(byte[] data,
+ <a href="#ByteArraySuccessCallback">ByteArraySuccessCallback</a> dataCallback,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul>
+<li class="attribute" id="NFCTag::type">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">NFCTagType </span><span class="name">type</span></span><div class="brief">
+ The type of the NFC tag.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="NFCTag::isSupportedNDEF">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">boolean </span><span class="name">isSupportedNDEF</span></span><div class="brief">
+ An attribute to check if the NFC Tag supports the NDEF format.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="NFCTag::ndefSize">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">long </span><span class="name">ndefSize</span></span><div class="brief">
+ The size of an NDEF message stored in the tag.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="NFCTag::properties">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">object </span><span class="name">properties</span></span><div class="brief">
+ The value is all tag information.
+ </div>
+<div class="description">
+ <p>
+It is pairs of key and value.
+The array's index is the pair's key and value is its value.
+ </p>
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> var adapter = tizen.nfc.getDefaultAdapter();
+ var onSuccessCB = {onattach : function(nfcTag) {
+ console.log("NFC Tag's type is " + nfcTag.type);
+ for(var i in nfcTag.properties) {
+ console.log("key:" + i + " value:" + nfcTag.properties[i]);
+ }
+ }, ondetach : function() {
+ console.log("NFC Tag is detached");
+ }};
+ adapter.setTagListener(onSuccessCB);
+
+ </pre>
+</div>
+</li>
+<li class="attribute" id="NFCTag::isConnected">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">boolean </span><span class="name">isConnected</span></span><div class="brief">
+ The value is necessary to check if this tag is connected.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+</ul>
+</div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="NFCTag::readNDEF">
+<a class="backward-compatibility-anchor" name="::NFC::NFCTag::readNDEF"></a><code><b><span class="methodName">readNDEF</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Reads the NDEF data from the NFC tag.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void readNDEF(<a href="#NDEFMessageReadCallback">NDEFMessageReadCallback</a> readCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The ErrorCallback is launched with these error types:
+ </p>
+ <ul>
+ <li>
+ ServiceNotAvailableError - If the NFC service is not available. </li>
+ <li>
+ InvalidValuesError - If the current Tag doesn't support the NDEF standard. </li>
+ <li>
+ UnknownError - If any other error occurs. </li>
+ </ul>
+ </div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.tag
+ </p>
+<p><span class="remark"> Remark : </span>
+ If an NFC tag does not support the NDEF standard, <var>InvalidValuesError</var> would be returned instead of <var>NotSupportedError</var> since <em>Tizen 2.3</em>.
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">readCallback</span>:
+ Callback method to be invoked in case reading the NDEF Data is completed successfully.
+ </li>
+ <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Callback method to be invoked in case any error occurs while reading the NDEF Data.
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter
+is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+</dd>
+<dt class="method" id="NFCTag::writeNDEF">
+<a class="backward-compatibility-anchor" name="::NFC::NFCTag::writeNDEF"></a><code><b><span class="methodName">writeNDEF</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Writes the NDEF data to the NFC tag.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void writeNDEF(<a href="#NDEFMessage">NDEFMessage</a> ndefMessage, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The ErrorCallback is launched with these error types:
+ </p>
+ <ul>
+ <li>
+ InvalidValuesError: If any of the input parameters contain an invalid value or the current Tag does not support the NDEF standard. </li>
+ <li>
+ ServiceNotAvailableError: If the NFC service is not available. </li>
+ <li>
+ UnknownError: In any other error case. </li>
+ </ul>
+ </div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.tag
+ </p>
+<p><span class="remark"> Remark : </span>
+ If an NFC tag does not support the NDEF standard, <var>InvalidValuesError</var> would be returned instead of <var>NotSupportedError</var> since <em>Tizen 2.3</em>.
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">ndefMessage</span>:
+ The NDEF message to write to an NFC tag.
+ </li>
+ <li class="param">
+<span class="name">successCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Callback method to be invoked in case writing the NDEF Data is completed successfully.
+ </li>
+ <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Callback method to be invoked in case any error occurs while writing the NDEF Data.
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter
+is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+</dd>
+<dt class="method" id="NFCTag::transceive">
+<a class="backward-compatibility-anchor" name="::NFC::NFCTag::transceive"></a><code><b><span class="methodName">transceive</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Accesses the raw format card. The transceive function is the only way to access the raw format card (not formatted).
+Each tag type requires its own command to access tags.
+This API provides low level access of the tag operation. (Note that you must know each tag technology.)
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void transceive(byte[] data, <a href="#ByteArraySuccessCallback">ByteArraySuccessCallback</a> dataCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The ErrorCallback is launched with these error types:
+ </p>
+ <ul>
+ <li>
+ InvalidValuesError - If any of the input parameters contain an invalid value. </li>
+ <li>
+ ServiceNotAvailableError - If the NFC service is not available. </li>
+ <li>
+ UnknownError - If any other error occurs. </li>
+ </ul>
+ </div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.tag
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">data</span>:
+ The raw data to transceive with the NFC tag.
+ </li>
+ <li class="param">
+<span class="name">dataCallback</span>:
+ Invoked in case transceiving the raw data is completed successfully.
+ </li>
+ <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Invoked in case any error occurs while transceiving the NDEF Data.
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter
+is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="NFCPeer">
+<a class="backward-compatibility-anchor" name="::NFC::NFCPeer"></a><h3>2.5. NFCPeer</h3>
+<div class="brief">
+ The NFCPeer interface provides access to the NFC peer-to-peer target.
+ </div>
+<pre class="webidl prettyprint"> [NoInterfaceObject] interface NFCPeer {
+ readonly attribute boolean isConnected;
+
+ void setReceiveNDEFListener(<a href="#NDEFMessageReadCallback">NDEFMessageReadCallback</a> successCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void unsetReceiveNDEFListener() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void sendNDEF(<a href="#NDEFMessage">NDEFMessage</a> ndefMessage,
+ optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul><li class="attribute" id="NFCPeer::isConnected">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">boolean </span><span class="name">isConnected</span></span><div class="brief">
+ The value is necessary to check if this NFC peer-to-peer target is connected.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li></ul>
+</div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="NFCPeer::setReceiveNDEFListener">
+<a class="backward-compatibility-anchor" name="::NFC::NFCPeer::setReceiveNDEFListener"></a><code><b><span class="methodName">setReceiveNDEFListener</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Registers a callback function to be invoked when an NDEF message is received from the connected NFC peer-to-peer target.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void setReceiveNDEFListener(<a href="#NDEFMessageReadCallback">NDEFMessageReadCallback</a> successCallback);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.p2p
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">successCallback</span>:
+ Invoked in case receiving the message is completed successfully.
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter
+is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type ServiceNotAvailableError, if the NFC service is not available.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, in any other error case.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> var adapter = tizen.nfc.getDefaultAdapter();
+
+ // Receives NFCPeer
+ var onSuccessCB = {onattach : function(nfcPeer) {
+ console.log("NFC Target is detected");
+ nfcPeer.setReceiveNDEFListener(
+ function(message){
+ console.log("Receive message");
+ });
+ }, ondetach : function() {
+ console.log("NFC Target is detached");
+ }};
+
+ adapter.setPeerListener(onSuccessCB);
+ </pre>
+</div>
+</dd>
+<dt class="method" id="NFCPeer::unsetReceiveNDEFListener">
+<a class="backward-compatibility-anchor" name="::NFC::NFCPeer::unsetReceiveNDEFListener"></a><code><b><span class="methodName">unsetReceiveNDEFListener</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Unregisters the listener for receiving NDEF messages from the NFC peer-to-peer target connected.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void unsetReceiveNDEFListener();
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.p2p
+ </p>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type ServiceNotAvailableError, if the NFC service is not available.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, in any other error case.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> var adapter = tizen.nfc.getDefaultAdapter();
+ var onSuccessCB = {onattach : function(nfcPeer) {
+ console.log("NFC Target is detected");
+ nfcPeer.setReceiveNDEFListener(
+ function(message){
+ console.log("Receive message");
+ nfcPeer.unsetReceiveNDEFListener();
+ });
+ }, ondetach : function() {
+ console.log("NFC Target is detached");
+ }};
+ }
+
+ adapter.setPeerListener(onSuccessCB);
+ </pre>
+</div>
+</dd>
+<dt class="method" id="NFCPeer::sendNDEF">
+<a class="backward-compatibility-anchor" name="::NFC::NFCPeer::sendNDEF"></a><code><b><span class="methodName">sendNDEF</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Sends data to the NFC peer-to-peer target.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void sendNDEF(<a href="#NDEFMessage">NDEFMessage</a> ndefMessage, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The ErrorCallback is launched with these error types:
+ </p>
+ <ul>
+ <li>
+ InvalidValuesError: If any of the input parameters contain an invalid value. </li>
+ <li>
+ ServiceNotAvailableError: If the NFC service is not available. </li>
+ <li>
+ UnknownError: In any other error case. </li>
+ </ul>
+ </div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/nfc.p2p
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">ndefMessage</span>:
+ The NDEF message to send to the NFC peer-to-peer target.
+ </li>
+ <li class="param">
+<span class="name">successCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Invoked in case sending data to the NFC peer-to-peer target is completed successfully.
+ </li>
+ <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Invoked in case any error occurs while sending.
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter
+is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="NDEFMessage">
+<a class="backward-compatibility-anchor" name="::NFC::NDEFMessage"></a><h3>2.6. NDEFMessage</h3>
+<div class="brief">
+ The NDEFMessage interface. An NDEFmessage is composed of multiple NDEFRecords.
+The NDEFMessage must have at least one NDEFRecord.
+ </div>
+<pre class="webidl prettyprint"> [Constructor(),
+ Constructor(<a href="#NDEFRecord">NDEFRecord</a>[] ndefRecords),
+ Constructor(byte[] rawData)]
+ interface NDEFMessage {
+ readonly attribute long recordCount;
+
+ attribute <a href="#NDEFRecord">NDEFRecord</a>[] records;
+
+ byte[] toByte() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="constructors">
+<h4 id="NDEFMessage::constructor">Constructors</h4>
+<dl>
+<pre class="webidl prettyprint">NDEFMessage();</pre>
+<pre class="webidl prettyprint">NDEFMessage(<a href="#NDEFRecord">NDEFRecord</a>[] ndefRecords);</pre>
+<pre class="webidl prettyprint">NDEFMessage(byte[] rawData);</pre>
+</dl>
+</div>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul>
+<li class="attribute" id="NDEFMessage::recordCount">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">long </span><span class="name">recordCount</span></span><div class="brief">
+ The number of records in the NDEFMessage.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="NDEFMessage::records">
+<span class="attrName"><span class="type">NDEFRecord[]
+ </span><span class="name">records</span></span><div class="brief">
+ The array of NDEFRecord objects in the NDEFMessage.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+</ul>
+</div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="NDEFMessage::toByte">
+<a class="backward-compatibility-anchor" name="::NFC::NDEFMessage::toByte"></a><code><b><span class="methodName">toByte</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Gets the serial byte array of the NDEF message.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">byte[] toByte();
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+If the operation completes successfully, it returns the serial byte array of the NDEF message.
+ </p>
+ </div>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ byte[] The raw data in the NDEFMessage.
+ </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if the records whose type is not NDEFRecord are included in the NDEFMessage.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, in any other error case.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> // Gets the cached message.
+ var cachedMessage = tizen.nfc.getDefaultAdapter().getCachedMessage();
+ var raw = cachedMessage.toByte();
+ </pre>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="NDEFRecord">
+<a class="backward-compatibility-anchor" name="::NFC::NDEFRecord"></a><h3>2.7. NDEFRecord</h3>
+<div class="brief">
+ The NDEFRecord interface.
+ </div>
+<pre class="webidl prettyprint"> [Constructor(short tnf, byte[] type, byte[] payload, optional byte[]? id),
+ Constructor(byte[] raw_data)]
+ interface NDEFRecord {
+ readonly attribute short tnf;
+
+ readonly attribute byte[] type;
+
+ readonly attribute byte[] id;
+
+ readonly attribute byte[] payload;
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="constructors">
+<h4 id="NDEFRecord::constructor">Constructors</h4>
+<dl>
+<pre class="webidl prettyprint">NDEFRecord(short tnf, byte[] type, byte[] payload, optional byte[]? id);</pre>
+<pre class="webidl prettyprint">NDEFRecord(byte[] raw_data);</pre>
+</dl>
+</div>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul>
+<li class="attribute" id="NDEFRecord::tnf">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">short </span><span class="name">tnf</span></span><div class="brief">
+ The value of the record type (TNF value).
+ </div>
+<div class="description">
+ <p>
+At least the following values must be supported:
+ </p>
+ <ul>
+ <li>
+NFC_RECORD_TNF_EMPTY - The record type is empty </li>
+ <li>
+NFC_RECORD_TNF_WELL_KNOWN - Record Type Definition (RTD) format [NFC RTD] </li>
+ <li>
+NFC_RECORD_TNF_MIME_MEDIA - MIME media types in RFC 2046 [RFC 2046] </li>
+ <li>
+NFC_RECORD_TNF_URI - Absolute URI as defined in RFC 3986 [RFC 3986] </li>
+ <li>
+NFC_RECORD_TNF_EXTERNAL_RTD - NFC forum external type [NFC RTD] </li>
+ <li>
+NFC_RECORD_TNF_UNKNOWN - The payload type is unknown </li>
+ <li>
+NFC_RECORD_TNF_UNCHANGED - It means the payload is an intermediate or final chunk of a chunked NDEF record </li>
+ </ul>
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="NDEFRecord::type">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">byte[]
+ </span><span class="name">type</span></span><div class="brief">
+ The specified type in byte array.
+ </div>
+<div class="description">
+ <p>
+The byte array contains <var>0</var> to <var>255</var> bytes.
+ </p>
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="NDEFRecord::id">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">byte[]
+ </span><span class="name">id</span></span><div class="brief">
+ The record ID.
+ </div>
+<div class="description">
+ <p>
+The byte array contains <var>0</var> to <var>255</var> bytes.
+ </p>
+ <p>
+By default, this attribute is set to an empty array.
+ </p>
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="NDEFRecord::payload">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">byte[]
+ </span><span class="name">payload</span></span><div class="brief">
+ The record payload.
+ </div>
+<div class="description">
+ <p>
+The byte array contains <var>0</var> to <var>(2 ** 32 - 1)</var> bytes.
+ </p>
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> // Creates a new NDEF record.
+ var newRecord = new tizen.NDEFRecordURI("https://www.tizen.org/");
+ var payload = newRecord.payload;
+ </pre>
+</div>
+</li>
+</ul>
+</div>
+</div>
+<div class="interface" id="NDEFRecordText">
+<a class="backward-compatibility-anchor" name="::NFC::NDEFRecordText"></a><h3>2.8. NDEFRecordText</h3>
+<div class="brief">
+ The NDEFRecord that has text type payload.
+ </div>
+<pre class="webidl prettyprint"> [Constructor(DOMString text, DOMString languageCode, optional DOMString? encoding)]
+ interface NDEFRecordText : <a href="#NDEFRecord">NDEFRecord</a> {
+ readonly attribute DOMString text;
+
+ readonly attribute DOMString languageCode;
+
+ readonly attribute <a href="#NDEFRecordTextEncoding">NDEFRecordTextEncoding</a> encoding;
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+
+ <div class="constructors">
+<h4 id="NDEFRecordText::constructor">Constructors</h4>
+<dl><pre class="webidl prettyprint">NDEFRecordText(DOMString text, DOMString languageCode, optional DOMString? encoding);</pre></dl>
+</div>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul>
+<li class="attribute" id="NDEFRecordText::text">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">DOMString </span><span class="name">text</span></span><div class="brief">
+ The encoded text.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="NDEFRecordText::languageCode">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">DOMString </span><span class="name">languageCode</span></span><div class="brief">
+ The language code string value, followed by IANA[RFC 3066] (for example, en-US, ko-KR).
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="NDEFRecordText::encoding">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">NDEFRecordTextEncoding </span><span class="name">encoding</span></span><div class="brief">
+ The encoding type. By default, this attribute is set to UTF8.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+</ul>
+</div>
+</div>
+<div class="interface" id="NDEFRecordURI">
+<a class="backward-compatibility-anchor" name="::NFC::NDEFRecordURI"></a><h3>2.9. NDEFRecordURI</h3>
+<div class="brief">
+ The NDEFRecord that has URI type payload.
+ </div>
+<pre class="webidl prettyprint"> [Constructor(DOMString uri)]
+ interface NDEFRecordURI : <a href="#NDEFRecord">NDEFRecord</a> {
+ readonly attribute DOMString uri;
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+
+ <div class="constructors">
+<h4 id="NDEFRecordURI::constructor">Constructors</h4>
+<dl><pre class="webidl prettyprint">NDEFRecordURI(DOMString uri);</pre></dl>
+</div>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul><li class="attribute" id="NDEFRecordURI::uri">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">DOMString </span><span class="name">uri</span></span><div class="brief">
+ The URI string that is stored in the payload.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li></ul>
+</div>
+</div>
+<div class="interface" id="NDEFRecordMedia">
+<a class="backward-compatibility-anchor" name="::NFC::NDEFRecordMedia"></a><h3>2.10. NDEFRecordMedia</h3>
+<div class="brief">
+ The NDEFRecord that has mime type payload.
+ </div>
+<pre class="webidl prettyprint"> [Constructor(DOMString mimeType, byte[] data)]
+ interface NDEFRecordMedia : <a href="#NDEFRecord">NDEFRecord</a> {
+ readonly attribute DOMString mimeType;
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+
+ <div class="constructors">
+<h4 id="NDEFRecordMedia::constructor">Constructors</h4>
+<dl>
+<pre class="webidl prettyprint">NDEFRecordMedia(DOMString mimeType, byte[] data);</pre>
+<div class="description">
+ <ul>
+ <li>
+<b>data</b> : Mime type payload. The byte array contains <var>0</var> to <var>(2 ** 32 - 1)</var> bytes. </li>
+ </ul>
+ </div>
+</dl>
+</div>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul><li class="attribute" id="NDEFRecordMedia::mimeType">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">DOMString </span><span class="name">mimeType</span></span><div class="brief">
+ The mime type [RFC 2046] (for example, text/plain, image/jpeg ).
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li></ul>
+</div>
+</div>
+<div class="interface" id="HCEEventData">
+<a class="backward-compatibility-anchor" name="::NFC::HCEEventData"></a><h3>2.11. HCEEventData</h3>
+<div class="brief">
+ The HCEEventData interface represents HCE event data.
+ </div>
+<pre class="webidl prettyprint"> [NoInterfaceObject] interface HCEEventData {
+ readonly attribute <a href="#HCEEventType">HCEEventType</a> eventType;
+
+ readonly attribute byte[] apdu;
+
+ readonly attribute long length;
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul>
+<li class="attribute" id="HCEEventData::eventType">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">HCEEventType </span><span class="name">eventType</span></span><div class="brief">
+ HCE event type.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="HCEEventData::apdu">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">byte[]
+ </span><span class="name">apdu</span></span><div class="brief">
+ The bytes array of APDU
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="HCEEventData::length">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">long </span><span class="name">length</span></span><div class="brief">
+ The length of APDU
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+</ul>
+</div>
+</div>
+<div class="interface" id="AIDData">
+<a class="backward-compatibility-anchor" name="::NFC::AIDData"></a><h3>2.12. AIDData</h3>
+<div class="brief">
+ The AID data interface represents registerd AID data
+ </div>
+<pre class="webidl prettyprint"> [NoInterfaceObject] interface AIDData{
+ readonly attribute <a href="#SecureElementType">SecureElementType</a> type;
+
+ readonly attribute <a href="#AID">AID</a> aid;
+
+ readonly attribute boolean readOnly;
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul>
+<li class="attribute" id="AIDData::type">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">SecureElementType </span><span class="name">type</span></span><div class="brief">
+ Secure Element type.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="AIDData::aid">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">AID </span><span class="name">aid</span></span><div class="brief">
+ The AID (Application ID) data, specified in ISO/IEC 7816-4
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="AIDData::readOnly">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">boolean </span><span class="name">readOnly</span></span><div class="brief">
+ An attribute to indicate whether the registered AID is read-only or not
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+</ul>
+</div>
+</div>
+<div class="interface" id="NFCTagDetectCallback">
+<a class="backward-compatibility-anchor" name="::NFC::NFCTagDetectCallback"></a><h3>2.13. NFCTagDetectCallback</h3>
+<div class="brief">
+ The NFCTagDetectCallback interface specifies a success callback to be invoked when an NFC tag is detected or lost.
+ </div>
+<pre class="webidl prettyprint"> [Callback, NoInterfaceObject] interface NFCTagDetectCallback {
+ void onattach(<a href="#NFCTag">NFCTag</a> nfcTag);
+ void ondetach();
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+This callback interface specifies two methods:
+ </p>
+ <ul>
+ <li>
+ onattach: Invoked when an NFC tag is detected </li>
+ <li>
+ ondetach: Invoked when an NFC tag is lost </li>
+ </ul>
+ <p>
+It is used in NFCAdapter.setTagListener().
+ </p>
+ </div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="NFCTagDetectCallback::onattach">
+<a class="backward-compatibility-anchor" name="::NFC::NFCTagDetectCallback::onattach"></a><code><b><span class="methodName">onattach</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ The method invoked when a tag is attached.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void onattach(<a href="#NFCTag">NFCTag</a> nfcTag);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">nfcTag</span>:
+ The attached NFC tag.
+ </li>
+ </ul>
+</div>
+</dd>
+<dt class="method" id="NFCTagDetectCallback::ondetach">
+<a class="backward-compatibility-anchor" name="::NFC::NFCTagDetectCallback::ondetach"></a><code><b><span class="methodName">ondetach</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ The method invoked when the connected tag is detached.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void ondetach();
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="NFCPeerDetectCallback">
+<a class="backward-compatibility-anchor" name="::NFC::NFCPeerDetectCallback"></a><h3>2.14. NFCPeerDetectCallback</h3>
+<div class="brief">
+ The NFCPeerDetectCallback interface specifies a success callback to be invoked when an NFC peer-to-peer target is detected or lost.
+ </div>
+<pre class="webidl prettyprint"> [Callback, NoInterfaceObject] interface NFCPeerDetectCallback {
+ void onattach(<a href="#NFCPeer">NFCPeer</a> nfcPeer);
+ void ondetach();
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+This callback interface specifies two methods:
+ </p>
+ <ul>
+ <li>
+ onattach: Invoked when an NFC peer-to-peer target is detected </li>
+ <li>
+ ondetach: Invoked when an NFC peer-to-peer target is lost </li>
+ </ul>
+ <p>
+It is used in NFCAdapter.setPeerListener().
+ </p>
+ </div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="NFCPeerDetectCallback::onattach">
+<a class="backward-compatibility-anchor" name="::NFC::NFCPeerDetectCallback::onattach"></a><code><b><span class="methodName">onattach</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ The method invoked when the NFC peer-to-peer target is attached.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void onattach(<a href="#NFCPeer">NFCPeer</a> nfcPeer);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">nfcPeer</span>:
+ The attached NFC peer-to-peer target.
+ </li>
+ </ul>
+</div>
+</dd>
+<dt class="method" id="NFCPeerDetectCallback::ondetach">
+<a class="backward-compatibility-anchor" name="::NFC::NFCPeerDetectCallback::ondetach"></a><code><b><span class="methodName">ondetach</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ The method invoked when the connected NFC peer-to-peer target is detached.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void ondetach();
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="NDEFMessageReadCallback">
+<a class="backward-compatibility-anchor" name="::NFC::NDEFMessageReadCallback"></a><h3>2.15. NDEFMessageReadCallback</h3>
+<div class="brief">
+ The NDEFMessageReadCallback interface specifies a success callback to be invoked when data has been read successfully from the NFC tag or target.
+ </div>
+<pre class="webidl prettyprint"> [Callback=FunctionOnly, NoInterfaceObject] interface NDEFMessageReadCallback {
+ void onsuccess(<a href="#NDEFMessage">NDEFMessage</a> ndefMessage);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+This callback interface specifies a success method with
+an NDEF message as an input parameter.
+It is used in asynchronous
+operations, such as NFCTag.readNDEF() or NFCPeer.setReceiveNDEFListener().
+ </p>
+ </div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="NDEFMessageReadCallback::onsuccess">
+<a class="backward-compatibility-anchor" name="::NFC::NDEFMessageReadCallback::onsuccess"></a><code><b><span class="methodName">onsuccess</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ The method invoked when the asynchronous call completes successfully.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void onsuccess(<a href="#NDEFMessage">NDEFMessage</a> ndefMessage);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">ndefMessage</span>:
+ NDEF message that is read from the NFC tag or target.
+ </li>
+ </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="ByteArraySuccessCallback">
+<a class="backward-compatibility-anchor" name="::NFC::ByteArraySuccessCallback"></a><h3>2.16. ByteArraySuccessCallback</h3>
+<div class="brief">
+ The ByteArraySuccessCallback interface specifies a success callback to be invoked when NFCTag.transceive() completes successfully.
+ </div>
+<pre class="webidl prettyprint"> [Callback=FunctionOnly, NoInterfaceObject] interface ByteArraySuccessCallback {
+ void onsuccess(byte[] data);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+This callback interface specifies a success method, with
+raw data as an input parameter. It is used in NFCTag.transceive().
+ </p>
+ </div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="ByteArraySuccessCallback::onsuccess">
+<a class="backward-compatibility-anchor" name="::NFC::ByteArraySuccessCallback::onsuccess"></a><code><b><span class="methodName">onsuccess</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ The method invoked when the asynchronous call completes successfully.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void onsuccess(byte[] data);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">data</span>:
+ The raw data that is read from the NFC tag or response of a transceive operation.
+ </li>
+ </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="CardEmulationModeChangeCallback">
+<a class="backward-compatibility-anchor" name="::NFC::CardEmulationModeChangeCallback"></a><h3>2.17. CardEmulationModeChangeCallback</h3>
+<div class="brief">
+ The CardEmulationModeChangeCallback interface specifies a success callback to be invoked when the card emulation mode is changed.
+ </div>
+<pre class="webidl prettyprint"> [Callback=FunctionOnly, NoInterfaceObject] interface CardEmulationModeChangeCallback {
+ void onchanged(<a href="#CardEmulationMode">CardEmulationMode</a> mode);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="CardEmulationModeChangeCallback::onchanged">
+<a class="backward-compatibility-anchor" name="::NFC::CardEmulationModeChangeCallback::onchanged"></a><code><b><span class="methodName">onchanged</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when the card emulation mode is changed.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void onchanged(<a href="#CardEmulationMode">CardEmulationMode</a> mode);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">mode</span>:
+ Changed card emulation mode
+ </li>
+ </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="TransactionEventCallback">
+<a class="backward-compatibility-anchor" name="::NFC::TransactionEventCallback"></a><h3>2.18. TransactionEventCallback</h3>
+<div class="brief">
+ The TransactionEventCallback interface specifies a success callback to be invoked when an external reader tries to access a secure element.
+ </div>
+<pre class="webidl prettyprint"> [Callback=FunctionOnly, NoInterfaceObject] interface TransactionEventCallback {
+ void ondetected(octet[] appletId, octet[] data);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="TransactionEventCallback::ondetected">
+<a class="backward-compatibility-anchor" name="::NFC::TransactionEventCallback::ondetected"></a><code><b><span class="methodName">ondetected</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when the asynchronous call completes successfully.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void ondetected(octet[] appletId, octet[] data);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">appletId</span>:
+ ID of the applet in which the transaction has happened
+ </li>
+ <li class="param">
+<span class="name">data</span>:
+ Transaction data
+ </li>
+ </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="ActiveSecureElementChangeCallback">
+<a class="backward-compatibility-anchor" name="::NFC::ActiveSecureElementChangeCallback"></a><h3>2.19. ActiveSecureElementChangeCallback</h3>
+<div class="brief">
+ The ActiveSecureElementChangeCallback interface specifies a success callback to be invoked when an active secure element is changed.
+ </div>
+<pre class="webidl prettyprint"> [Callback=FunctionOnly, NoInterfaceObject] interface ActiveSecureElementChangeCallback {
+ void onchanged(<a href="#SecureElementType">SecureElementType</a> type);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="ActiveSecureElementChangeCallback::onchanged">
+<a class="backward-compatibility-anchor" name="::NFC::ActiveSecureElementChangeCallback::onchanged"></a><code><b><span class="methodName">onchanged</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when the type of an active secure element is changed.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void onchanged(<a href="#SecureElementType">SecureElementType</a> type);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">type</span>:
+ Type of a newly changed active secure element
+ </li>
+ </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="HCEEventReceiveCallback">
+<a class="backward-compatibility-anchor" name="::NFC::HCEEventReceiveCallback"></a><h3>2.20. HCEEventReceiveCallback</h3>
+<div class="brief">
+ The HCEEventReceiveCallback interface specifies a success callback to be invoked when an HCE event is detected.
+ </div>
+<pre class="webidl prettyprint">[Callback=FunctionOnly, NoInterfaceObject] interface HCEEventReceiveCallback {
+ void ondetected(<a href="#HCEEventData">HCEEventData</a> data);
+};</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="HCEEventReceiveCallback::ondetected">
+<a class="backward-compatibility-anchor" name="::NFC::HCEEventReceiveCallback::ondetected"></a><code><b><span class="methodName">ondetected</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when HCE event is detected.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void ondetected(<a href="#HCEEventData">HCEEventData</a> data);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">data</span>:
+ HCE event data
+ </li>
+ </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="AIDArraySuccessCallback">
+<a class="backward-compatibility-anchor" name="::NFC::AIDArraySuccessCallback"></a><h3>2.21. AIDArraySuccessCallback</h3>
+<div class="brief">
+ The AIDArraySuccessCallback interface specifies a success callback to be invoked when an NFCAdaptor.getAIDsForCategory() completes successfully.
+ </div>
+<pre class="webidl prettyprint">[Callback=FunctionOnly, NoInterfaceObject] interface AIDArraySuccessCallback {
+ void onsuccess(<a href="#AIDData">AIDData</a>[] aids);
+};</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="AIDArraySuccessCallback::onsuccess">
+<a class="backward-compatibility-anchor" name="::NFC::AIDArraySuccessCallback::onsuccess"></a><code><b><span class="methodName">onsuccess</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ The method invoked when the asynchronous call completes successfully.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void onsuccess(<a href="#AIDData">AIDData</a>[] aids);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">aids</span>:
+ The list of AIDs
+ </li>
+ </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+<h2 id="api-features">3. Related Feature</h2>
+<div id="def-api-features" class="def-api-features">
+ You can check if this API is supported with <em>tizen.systeminfo.getCapability()</em> and decide enable/disable codes that need this API.
+ <div class="def-api-feature">
+<p><div class="description">
+ <p>
+To guarantee that the NFC application runs on a device with the NFC feature, declare the following feature requirements in the config file:
+ </p>
+ </div></p>
+<li class="feature">http://tizen.org/feature/network.nfc</li>
+</div>
+<div class="def-api-feature">
+<p><div class="description">
+ <p>
+To guarantee that the NFC card emulation application runs on a device with the NFC card emulation feature, declare the following feature requirements in the config file:
+ </p>
+ </div></p>
+<li class="feature">http://tizen.org/feature/network.nfc.card_emulation</li>
+</div>
+<div class="def-api-feature">
+<p><div class="description">
+ <p>
+To guarantee that the NFC host-based card emulation application runs on a device with the NFC host-based card emulation feature, declare the following feature requirements in the config file:
+ </p>
+ </div></p>
+<li class="feature">http://tizen.org/feature/network.nfc.card_emulation.hce</li>
+</div>
+<p></p>
+ For more information, see <a href="../../../../../org.tizen.gettingstarted/html/details/app_filtering.htm#web">Application Filtering</a>.
+</div>
+<h2 id="full-webidl">4. Full WebIDL</h2>
+<pre class="webidl prettyprint">module NFC {
+ enum NDEFRecordTextEncoding { "UTF8", "UTF16" };
+
+ enum NFCTagType { "GENERIC_TARGET", "ISO14443_A", "ISO14443_4A", "ISO14443_3A",
+ "MIFARE_MINI", "MIFARE_1K", "MIFARE_4K", "MIFARE_ULTRA", "MIFARE_DESFIRE",
+ "ISO14443_B", "ISO14443_4B", "ISO14443_BPRIME", "FELICA", "JEWEL", "ISO15693",
+ "UNKNOWN_TARGET" };
+
+ enum CardEmulationMode { "ALWAYS_ON", "OFF" };
+
+ enum SecureElementType { "ESE", "UICC", "HCE" };
+
+ enum CardEmulationCategoryType { "PAYMENT", "OTHER" };
+
+ enum HCEEventType { "DEACTIVATED", "ACTIVATED", "APDU_RECEIVED" };
+
+ typedef DOMString AID;
+
+ [NoInterfaceObject] interface NFCManagerObject {
+ readonly attribute <a href="#NFCManager">NFCManager</a> nfc;
+ };
+ <a href="tizen.html#Tizen">Tizen</a> implements <a href="#NFCManagerObject">NFCManagerObject</a>;
+
+ [NoInterfaceObject] interface NFCManager {
+ const short NFC_RECORD_TNF_EMPTY = 0;
+ const short NFC_RECORD_TNF_WELL_KNOWN = 1;
+ const short NFC_RECORD_TNF_MIME_MEDIA = 2;
+ const short NFC_RECORD_TNF_URI = 3;
+ const short NFC_RECORD_TNF_EXTERNAL_RTD = 4;
+ const short NFC_RECORD_TNF_UNKNOWN = 5;
+ const short NFC_RECORD_TNF_UNCHANGED = 6;
+
+ <a href="#NFCAdapter">NFCAdapter</a> getDefaultAdapter() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void setExclusiveMode(boolean mode) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ };
+
+
+ [NoInterfaceObject] interface NFCAdapter {
+ readonly attribute boolean powered;
+
+ attribute <a href="#CardEmulationMode">CardEmulationMode</a> cardEmulationMode raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ attribute <a href="#SecureElementType">SecureElementType</a>? activeSecureElement raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void setPowered(boolean state,
+ optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void setTagListener(<a href="#NFCTagDetectCallback">NFCTagDetectCallback</a> detectCallback,
+ optional <a href="#NFCTagType">NFCTagType</a>[]? tagFilter) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void setPeerListener(<a href="#NFCPeerDetectCallback">NFCPeerDetectCallback</a> detectCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void unsetTagListener() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void unsetPeerListener() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ long addCardEmulationModeChangeListener(<a href="#CardEmulationModeChangeCallback">CardEmulationModeChangeCallback</a> changeCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void removeCardEmulationModeChangeListener(long watchId) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ long addTransactionEventListener(<a href="#SecureElementType">SecureElementType</a> type,
+ <a href="#TransactionEventCallback">TransactionEventCallback</a> eventCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void removeTransactionEventListener(long watchId) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ long addActiveSecureElementChangeListener(<a href="#ActiveSecureElementChangeCallback">ActiveSecureElementChangeCallback</a> changeCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void removeActiveSecureElementChangeListener(long watchId) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ <a href="#NDEFMessage">NDEFMessage</a>? getCachedMessage() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void setExclusiveModeForTransaction(boolean mode) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ long addHCEEventListener(<a href="#HCEEventReceiveCallback">HCEEventReceiveCallback</a> eventCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void removeHCEEventListener(long watchId) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void sendHostAPDUResponse(byte[] apdu, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ boolean isActivatedHandlerForAID(<a href="#SecureElementType">SecureElementType</a> type, <a href="#AID">AID</a> aid) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ boolean isActivatedHandlerForCategory(<a href="#SecureElementType">SecureElementType</a> type, <a href="#CardEmulationCategoryType">CardEmulationCategoryType</a> category) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void registerAID(<a href="#SecureElementType">SecureElementType</a> type, <a href="#AID">AID</a> aid, <a href="#CardEmulationCategoryType">CardEmulationCategoryType</a> category) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void unregisterAID(<a href="#SecureElementType">SecureElementType</a> type, <a href="#AID">AID</a> aid, <a href="#CardEmulationCategoryType">CardEmulationCategoryType</a> category) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void getAIDsForCategory(<a href="#SecureElementType">SecureElementType</a> type, <a href="#CardEmulationCategoryType">CardEmulationCategoryType</a> category, <a href="#AIDArraySuccessCallback">AIDArraySuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ };
+
+
+ [NoInterfaceObject] interface NFCTag {
+ readonly attribute <a href="#NFCTagType">NFCTagType</a> type;
+
+ readonly attribute boolean isSupportedNDEF;
+
+ readonly attribute long ndefSize;
+
+ readonly attribute object properties;
+
+ readonly attribute boolean isConnected;
+
+
+ void readNDEF(<a href="#NDEFMessageReadCallback">NDEFMessageReadCallback</a> readCallback,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void writeNDEF(<a href="#NDEFMessage">NDEFMessage</a> ndefMessage,
+ optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void transceive(byte[] data,
+ <a href="#ByteArraySuccessCallback">ByteArraySuccessCallback</a> dataCallback,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ };
+
+
+ [NoInterfaceObject] interface NFCPeer {
+ readonly attribute boolean isConnected;
+
+ void setReceiveNDEFListener(<a href="#NDEFMessageReadCallback">NDEFMessageReadCallback</a> successCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void unsetReceiveNDEFListener() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void sendNDEF(<a href="#NDEFMessage">NDEFMessage</a> ndefMessage,
+ optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ };
+
+ [Constructor(),
+ Constructor(<a href="#NDEFRecord">NDEFRecord</a>[] ndefRecords),
+ Constructor(byte[] rawData)]
+ interface NDEFMessage {
+ readonly attribute long recordCount;
+
+ attribute <a href="#NDEFRecord">NDEFRecord</a>[] records;
+
+ byte[] toByte() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ };
+
+ [Constructor(short tnf, byte[] type, byte[] payload, optional byte[]? id),
+ Constructor(byte[] raw_data)]
+ interface NDEFRecord {
+ readonly attribute short tnf;
+
+ readonly attribute byte[] type;
+
+ readonly attribute byte[] id;
+
+ readonly attribute byte[] payload;
+ };
+
+ [Constructor(DOMString text, DOMString languageCode, optional DOMString? encoding)]
+ interface NDEFRecordText : <a href="#NDEFRecord">NDEFRecord</a> {
+ readonly attribute DOMString text;
+
+ readonly attribute DOMString languageCode;
+
+ readonly attribute <a href="#NDEFRecordTextEncoding">NDEFRecordTextEncoding</a> encoding;
+ };
+
+ [Constructor(DOMString uri)]
+ interface NDEFRecordURI : <a href="#NDEFRecord">NDEFRecord</a> {
+ readonly attribute DOMString uri;
+ };
+ [Constructor(DOMString mimeType, byte[] data)]
+ interface NDEFRecordMedia : <a href="#NDEFRecord">NDEFRecord</a> {
+ readonly attribute DOMString mimeType;
+ };
+
+ [NoInterfaceObject] interface HCEEventData {
+ readonly attribute <a href="#HCEEventType">HCEEventType</a> eventType;
+
+ readonly attribute byte[] apdu;
+
+ readonly attribute long length;
+ };
+
+ [NoInterfaceObject] interface AIDData{
+ readonly attribute <a href="#SecureElementType">SecureElementType</a> type;
+
+ readonly attribute <a href="#AID">AID</a> aid;
+
+ readonly attribute boolean readOnly;
+ };
+
+ [Callback, NoInterfaceObject] interface NFCTagDetectCallback {
+ void onattach(<a href="#NFCTag">NFCTag</a> nfcTag);
+ void ondetach();
+ };
+
+ [Callback, NoInterfaceObject] interface NFCPeerDetectCallback {
+ void onattach(<a href="#NFCPeer">NFCPeer</a> nfcPeer);
+ void ondetach();
+ };
+
+ [Callback=FunctionOnly, NoInterfaceObject] interface NDEFMessageReadCallback {
+ void onsuccess(<a href="#NDEFMessage">NDEFMessage</a> ndefMessage);
+ };
+
+ [Callback=FunctionOnly, NoInterfaceObject] interface ByteArraySuccessCallback {
+ void onsuccess(byte[] data);
+ };
+
+
+ [Callback=FunctionOnly, NoInterfaceObject] interface CardEmulationModeChangeCallback {
+ void onchanged(<a href="#CardEmulationMode">CardEmulationMode</a> mode);
+ };
+
+ [Callback=FunctionOnly, NoInterfaceObject] interface TransactionEventCallback {
+ void ondetected(octet[] appletId, octet[] data);
+ };
+
+ [Callback=FunctionOnly, NoInterfaceObject] interface ActiveSecureElementChangeCallback {
+ void onchanged(<a href="#SecureElementType">SecureElementType</a> type);
+ };
+
+[Callback=FunctionOnly, NoInterfaceObject] interface HCEEventReceiveCallback {
+ void ondetected(<a href="#HCEEventData">HCEEventData</a> data);
+};
+
+[Callback=FunctionOnly, NoInterfaceObject] interface AIDArraySuccessCallback {
+ void onsuccess(<a href="#AIDData">AIDData</a>[] aids);
+};
+
+};</pre>
+</div>
+<div id="page-footer">
+<div class="copyright" align="center">
+ 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>.
+ </div>
+<script type="text/javascript">
+
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', 'UA-25976949-1']);
+ _gaq.push(['_setDomainName', 'tizen.org']);
+ _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>
+</div>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html PUBLIC "html">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="tizen.css" media="screen">
+<script type="text/javascript" src="snippet.js"></script><title>Push API</title>
+</head>
+<body id="page-content" onload="prettyPrint()">
+<div class="api" id="::Push">
+<div class="supported-platforms"><img class="wearable-optional emulator" title="Optional, Supported by Tizen Wearable emulator" src="ww_icon_optional.png"></div>
+<div class="title"><h1>Push API</h1></div>
+<div class="brief">
+ The Push API provides functionality for receiving push notifications
+from the Tizen push server.
+The push service is a client daemon that maintains a permanent connection
+between your device and the Tizen push server in order to process your registration
+and deregistration requests and deliver push notifications to applications on a device.
+ </div>
+<div class="description">
+ <p>
+If the application is connected, the push service passes the notification data over
+the connection. Otherwise, the push service posts a UI notification with the data.
+It will be delivered when a user launches the application by selecting the posting.
+ </p>
+ <p>
+To receive push notifications, follow the steps below:
+ </p>
+ <ul>
+ <li>
+Get administrative permission for an application on your device </li>
+ <li>
+Register the application </li>
+ <li>
+Connect to the push service </li>
+ <li>
+Get notification data </li>
+ </ul>
+ <p>
+To use Push features, you must <a href="../../../../../org.tizen.tutorials/html/web/tizen/communication/push_tutorial_w.htm#Registering">register to the Push service</a>.
+ </p>
+ <p>
+For more information on the Push features, see <a href="../../../../../org.tizen.guides/html/web/tizen/communication/push_w.htm">Push Guide</a>.
+ </p>
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<h2>Table of Contents</h2>
+<ul class="toc">
+<li>1. <a href="#typedefs-section">Type Definitions</a><ul class="toc"><li>1.1. <a href="#PushRegistrationId">PushRegistrationId</a>
+</li></ul>
+</li>
+<li>2. <a href="#interfaces-section">Interfaces</a><ul class="toc">
+<li>2.1. <a href="#PushManagerObject">PushManagerObject</a>
+</li>
+<li>2.2. <a href="#PushManager">PushManager</a>
+</li>
+<li>2.3. <a href="#PushMessage">PushMessage</a>
+</li>
+<li>2.4. <a href="#PushRegisterSuccessCallback">PushRegisterSuccessCallback</a>
+</li>
+<li>2.5. <a href="#PushNotificationCallback">PushNotificationCallback</a>
+</li>
+</ul>
+</li>
+<li>3. <a href="#api-features">Related Feature</a>
+</li>
+<li>4. <a href="#full-webidl">Full WebIDL</a>
+</li>
+</ul>
+<hr>
+<h2 id="method-summary">Summary of Interfaces and Methods</h2>
+<table class="informaltable">
+<thead><tr>
+<th>Interface</th>
+<th>Method</th>
+</tr></thead>
+<tbody>
+<tr>
+<td><a href="#PushManagerObject">PushManagerObject</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#PushManager">PushManager</a></td>
+<td>void <a href="#PushManager::registerService">registerService</a> (<a href="application.html#ApplicationControl">ApplicationControl</a> appControl, <a href="#PushRegisterSuccessCallback">PushRegisterSuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)<br>
+ void <a href="#PushManager::unregisterService">unregisterService</a> (optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)<br>
+ void <a href="#PushManager::connectService">connectService</a> (<a href="#PushNotificationCallback">PushNotificationCallback</a> notificationCallback)<br>
+ void <a href="#PushManager::disconnectService">disconnectService</a> ()<br>
+ <a href="#PushRegistrationId">PushRegistrationId</a> <a href="#PushManager::getRegistrationId">getRegistrationId</a> ()<br>
+ void <a href="#PushManager::getUnreadNotifications">getUnreadNotifications</a> ()</td>
+</tr>
+<tr>
+<td><a href="#PushMessage">PushMessage</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#PushRegisterSuccessCallback">PushRegisterSuccessCallback</a></td>
+<td>void <a href="#PushRegisterSuccessCallback::onsuccess">onsuccess</a> (<a href="#PushRegistrationId">PushRegistrationId</a> id)</td>
+</tr>
+<tr>
+<td><a href="#PushNotificationCallback">PushNotificationCallback</a></td>
+<td>void <a href="#PushNotificationCallback::onsuccess">onsuccess</a> (<a href="#PushMessage">PushMessage</a> message)</td>
+</tr>
+</tbody>
+</table>
+<div class="typedefs" id="typedefs-section">
+<h2>1. Type Definitions</h2>
+<div class="typedef" id="PushRegistrationId">
+<a class="backward-compatibility-anchor" name="::Push::PushRegistrationId"></a><h3>1.1. PushRegistrationId</h3>
+<div class="brief">
+ A push service registration identifier.
+ </div>
+<pre class="webidl prettyprint"> typedef DOMString PushRegistrationId;</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</div>
+</div>
+<div class="interfaces" id="interfaces-section">
+<h2>2. Interfaces</h2>
+<div class="interface" id="PushManagerObject">
+<a class="backward-compatibility-anchor" name="::Push::PushManagerObject"></a><h3>2.1. PushManagerObject</h3>
+<div class="brief">
+ The PushManagerObject interface defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
+ </div>
+<pre class="webidl prettyprint"> [NoInterfaceObject] interface PushManagerObject {
+ readonly attribute <a href="#PushManager">PushManager</a> push;
+ };</pre>
+<pre class="webidl prettyprint"> <a href="tizen.html#Tizen">Tizen</a> implements <a href="#PushManagerObject">PushManagerObject</a>;</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The <em>tizen.push </em>object allows access to the functionality of the Push API.
+ </p>
+ </div>
+</div>
+<div class="interface" id="PushManager">
+<a class="backward-compatibility-anchor" name="::Push::PushManager"></a><h3>2.2. PushManager</h3>
+<div class="brief">
+ The PushManager interface provides methods to manage push registration and notification.
+ </div>
+<pre class="webidl prettyprint"> [NoInterfaceObject] interface PushManager {
+ void registerService(<a href="application.html#ApplicationControl">ApplicationControl</a> appControl, <a href="#PushRegisterSuccessCallback">PushRegisterSuccessCallback</a> successCallback,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void unregisterService(optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void connectService(<a href="#PushNotificationCallback">PushNotificationCallback</a> notificationCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void disconnectService() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ <a href="#PushRegistrationId">PushRegistrationId</a> getRegistrationId() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void getUnreadNotifications() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="PushManager::registerService">
+<a class="backward-compatibility-anchor" name="::Push::PushManager::registerService"></a><code><b><span class="methodName">registerService</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Registers an application to the Tizen push server.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void registerService(<a href="application.html#ApplicationControl">ApplicationControl</a> appControl, <a href="#PushRegisterSuccessCallback">PushRegisterSuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The <em>ErrorCallback()</em> is launched with these error types:
+ </p>
+ <ul>
+ <li>
+InvalidValuesError - If any of the input parameters contain an invalid value. </li>
+ <li>
+UnknownError - If any other error occurs. </li>
+ </ul>
+ </div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/push
+ </p>
+<p><span class="remark"> Remark : </span>
+ In order to use the push messaging service, see the native <a href="../../../../../org.tizen.guides/html/native/messaging/push_n.htm">Push Messaging Guide</a>.
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">appControl</span>:
+ The data to deliver via notification service when the process is not running.<br> For more information, see <a href="application.html">Application API</a>.
+ </li>
+ <li class="param">
+<span class="name">successCallback</span>:
+ The method to be called when the registration request succeeds.
+ </li>
+ <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ The method to be called when the registration request fails.
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if any input parameter
+is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type InvalidValuesError, if any input parameters
+do not contain a valid value.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, if any other error occurs.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> // Defines the data to be used when this process is launched by notification service.
+ var service = new tizen.ApplicationControl("http://tizen.org/appcontrol/operation/push_test");
+
+ // Defines the error callback.
+ function errorCallback(response) {
+ console.log( 'The following error occurred: ' + response.name);
+ }
+
+ // Defines the registration success callback
+ function registerSuccessCallback(id) {
+ console.log("Registration succeeded with id: " + id);
+ }
+
+ // Requests registration.
+ tizen.push.registerService(service, registerSuccessCallback, errorCallback);
+ </pre>
+</div>
+</dd>
+<dt class="method" id="PushManager::unregisterService">
+<a class="backward-compatibility-anchor" name="::Push::PushManager::unregisterService"></a><code><b><span class="methodName">unregisterService</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Unregisters an application from the Tizen push server.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void unregisterService(optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The <em>ErrorCallback()</em> is launched with these error types:
+ </p>
+ <ul>
+ <li>
+UnknownError - If an unknown error occurs. </li>
+ </ul>
+ </div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/push
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">successCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ The method to be called when the request is successfully unregistered.
+ </li>
+ <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ The method to be called when the unregistration request fails.
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type InvalidValuesError, if any input parameters do not contain a valid value.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, if any other error occurs.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> // Defines the error callback
+ function errorCallback(response) {
+ console.log( 'The following error occurred: ' + response.name);
+ }
+
+ // Defines the unregistration success callback
+ function unregisterSuccessCallback() {
+ console.log("Unregistration succeeded.");
+ }
+
+ // Requests unregistration
+ tizen.push.unregisterService(unregisterSuccessCallback, errorCallback);
+ </pre>
+</div>
+</dd>
+<dt class="method" id="PushManager::connectService">
+<a class="backward-compatibility-anchor" name="::Push::PushManager::connectService"></a><code><b><span class="methodName">connectService</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Connects to the push service and receives push notifications.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void connectService(<a href="#PushNotificationCallback">PushNotificationCallback</a> notificationCallback);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/push
+ </p>
+<p><span class="remark"> Remark : </span>
+ The <em>connectService()</em> method must be called after the <em>registerService()</em> method.
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">notificationCallback</span>:
+ The method to be called when the notification message arrives.
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type InvalidValuesError, if any input parameters do not contain a valid value.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, if any other error occurs.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> // Defines the connect success callback
+ function notificationCallback(noti) {
+ console.log("Notification received with alert message: " + noti.alertMessage);
+ }
+
+ // Requests for push service connection
+ tizen.push.connectService(notificationCallback);
+ </pre>
+</div>
+</dd>
+<dt class="method" id="PushManager::disconnectService">
+<a class="backward-compatibility-anchor" name="::Push::PushManager::disconnectService"></a><code><b><span class="methodName">disconnectService</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Disconnects the push service and stops receiving push notifications.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void disconnectService();
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/push
+ </p>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, if any other error occurs.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> // Requests disconnection
+ tizen.push.disconnectService();
+ </pre>
+</div>
+</dd>
+<dt class="method" id="PushManager::getRegistrationId">
+<a class="backward-compatibility-anchor" name="::Push::PushManager::getRegistrationId"></a><code><b><span class="methodName">getRegistrationId</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Gets the push service registration ID for this application if the registration process is successful. <var>null </var>is returned if the application has not been registered yet.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint"><a href="#PushRegistrationId">PushRegistrationId</a> getRegistrationId();
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/push
+ </p>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, if any other error occurs.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> var registrationId = tizen.push.getRegistrationId();
+ if ( registrationId != null ) {
+ console.log("The registration id: " + registrationId);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="PushManager::getUnreadNotifications">
+<a class="backward-compatibility-anchor" name="::Push::PushManager::getUnreadNotifications"></a><code><b><span class="methodName">getUnreadNotifications</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Requests to get unread push notifications. As a consequence, the PushNotificationCallback which was set using the connectService() method will be invoked to retrieve the notifications..
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void getUnreadNotifications();
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The connectService() method must be called to connect to Tizen push server and receive push notifications before calling the getUnreadNotifications() method.
+If connectService is not called, <var>ServiceNotAvailableError</var> occurs.<br>If any unread message exists, you will get unread push notification message through <var>PushNotificationCallback</var> of connectService().
+For instance, if there are 10 unread messages, the <var>PushNotificationCallback</var> will be invoked 10 times.<br><br>If an application receives unread messages, the messages are removed from the system.
+ </p>
+ <p>
+When an application registers with the push server to receive push notifications,
+the push server stores messages for the application until they are delivered.
+While the application is not running, messages cannot be delivered.
+This method allows retrieving such missed push messages.
+Once a missed push notification is retrieved the server deletes it from its database.
+ </p>
+ </div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/push
+ </p>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type ServiceNotAvailableError, if the network is unreachable for some reason(e.g disconnected to the Tizen push server)
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, if any other error occurs.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> // Defines the connect success callback
+ function notificationCallback(message) {
+ console.log("New push message : " + message.alertMessage + ", date : " + message.date + ", data : " + message.appData);
+ }
+ }
+
+ // Requests for push service connection
+ tizen.push.connectService(notificationCallback);
+ tizen.push.getUnreadNotifications();
+ </pre>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="PushMessage">
+<a class="backward-compatibility-anchor" name="::Push::PushMessage"></a><h3>2.3. PushMessage</h3>
+<div class="brief">
+ The PushMessage interface specifies the push message that is delivered from the push service.
+ </div>
+<pre class="webidl prettyprint"> [NoInterfaceObject] interface PushMessage {
+ readonly attribute DOMString appData;
+
+ readonly attribute DOMString alertMessage;
+
+ readonly attribute Date date;
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul>
+<li class="attribute" id="PushMessage::appData">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">DOMString </span><span class="name">appData</span></span><div class="brief">
+ An attribute to store the push notification data.
+ </div>
+<div class="description">
+ <p>
+This data is the message that the sender wants to send and its length must be less than 1 KB.
+ </p>
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="PushMessage::alertMessage">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">DOMString </span><span class="name">alertMessage</span></span><div class="brief">
+ An attribute to store the push notification message that is displayed as an alert message to the user.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="PushMessage::date">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">Date </span><span class="name">date</span></span><div class="brief">
+ An attribute to store the date/time when a push notification message is received.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+</ul>
+</div>
+</div>
+<div class="interface" id="PushRegisterSuccessCallback">
+<a class="backward-compatibility-anchor" name="::Push::PushRegisterSuccessCallback"></a><h3>2.4. PushRegisterSuccessCallback</h3>
+<div class="brief">
+ The PushRegisterSuccessCallback interface specifies the success callback for a push service registration request.
+ </div>
+<pre class="webidl prettyprint"> [Callback=FunctionOnly, NoInterfaceObject]
+ interface PushRegisterSuccessCallback {
+ void onsuccess(<a href="#PushRegistrationId">PushRegistrationId</a> id);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+This success callback is invoked when a push service registration request is successful.
+ </p>
+ </div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="PushRegisterSuccessCallback::onsuccess">
+<a class="backward-compatibility-anchor" name="::Push::PushRegisterSuccessCallback::onsuccess"></a><code><b><span class="methodName">onsuccess</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when a push service registration request is successful.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void onsuccess(<a href="#PushRegistrationId">PushRegistrationId</a> id);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">id</span>:
+ The registration ID.
+ </li>
+ </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="PushNotificationCallback">
+<a class="backward-compatibility-anchor" name="::Push::PushNotificationCallback"></a><h3>2.5. PushNotificationCallback</h3>
+<div class="brief">
+ The PushNotificationCallback interface specifies the notification callback for the received push notification message.
+ </div>
+<pre class="webidl prettyprint"> [Callback=FunctionOnly, NoInterfaceObject]
+ interface PushNotificationCallback {
+ void onsuccess(<a href="#PushMessage">PushMessage</a> message);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+This notification callback is invoked when the push notification message arrives.
+ </p>
+ </div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="PushNotificationCallback::onsuccess">
+<a class="backward-compatibility-anchor" name="::Push::PushNotificationCallback::onsuccess"></a><code><b><span class="methodName">onsuccess</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when the push notification message arrives.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void onsuccess(<a href="#PushMessage">PushMessage</a> message);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">message</span>:
+ The received push notification message.
+ </li>
+ </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+<h2 id="api-features">3. Related Feature</h2>
+<div id="def-api-features" class="def-api-features">
+ You can check if this API is supported with <em>tizen.systeminfo.getCapability()</em> and decide enable/disable codes that need this API.
+ <div class="def-api-feature">
+<p><div class="description">
+ <p>
+To guarantee that the push application runs on a device with the push feature, declare the following feature requirements in the config file:
+ </p>
+ </div></p>
+<li class="feature">http://tizen.org/feature/network.push</li>
+</div>
+<p></p>
+ For more information, see <a href="../../../../../org.tizen.gettingstarted/html/details/app_filtering.htm#web">Application Filtering</a>.
+</div>
+<h2 id="full-webidl">4. Full WebIDL</h2>
+<pre class="webidl prettyprint">module Push {
+ typedef DOMString PushRegistrationId;
+
+ [NoInterfaceObject] interface PushManagerObject {
+ readonly attribute <a href="#PushManager">PushManager</a> push;
+ };
+ <a href="tizen.html#Tizen">Tizen</a> implements <a href="#PushManagerObject">PushManagerObject</a>;
+
+ [NoInterfaceObject] interface PushManager {
+ void registerService(<a href="application.html#ApplicationControl">ApplicationControl</a> appControl, <a href="#PushRegisterSuccessCallback">PushRegisterSuccessCallback</a> successCallback,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void unregisterService(optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void connectService(<a href="#PushNotificationCallback">PushNotificationCallback</a> notificationCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void disconnectService() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ <a href="#PushRegistrationId">PushRegistrationId</a> getRegistrationId() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void getUnreadNotifications() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ };
+
+ [NoInterfaceObject] interface PushMessage {
+ readonly attribute DOMString appData;
+
+ readonly attribute DOMString alertMessage;
+
+ readonly attribute Date date;
+ };
+
+ [Callback=FunctionOnly, NoInterfaceObject]
+ interface PushRegisterSuccessCallback {
+ void onsuccess(<a href="#PushRegistrationId">PushRegistrationId</a> id);
+ };
+
+ [Callback=FunctionOnly, NoInterfaceObject]
+ interface PushNotificationCallback {
+ void onsuccess(<a href="#PushMessage">PushMessage</a> message);
+ };
+
+};</pre>
+</div>
+<div id="page-footer">
+<div class="copyright" align="center">
+ 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>.
+ </div>
+<script type="text/javascript">
+
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', 'UA-25976949-1']);
+ _gaq.push(['_setDomainName', 'tizen.org']);
+ _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>
+</div>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html PUBLIC "html">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="tizen.css" media="screen">
+<script type="text/javascript" src="snippet.js"></script><title>SecureElement API</title>
+</head>
+<body id="page-content" onload="prettyPrint()">
+<div class="api" id="::SecureElement">
+<div class="supported-platforms"><img class="wearable-optional" title="Optional, Not supported by Tizen Wearable emulator" src="ww_icon_optional.png"></div>
+<div class="title"><h1>SecureElement API</h1></div>
+<div class="brief">
+ The SecureElement API provides functionality to communicate with applications in several Secure Elements.
+A Secure Element is a secure smart card chip. It can be a UICC/SIM, an embedded Secure Element, or a Secure SD card that is inserted in a device.
+<p>
+For more information about how to use SecureElement API, see <a href="../../../../../org.tizen.guides/html/web/tizen/communication/secure_element_w.htm">SecureElement Guide</a>.
+ </p>
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<h2>Table of Contents</h2>
+<ul class="toc">
+<li>1. <a href="#interfaces-section">Interfaces</a><ul class="toc">
+<li>1.1. <a href="#SEServiceManagerObject">SEServiceManagerObject</a>
+</li>
+<li>1.2. <a href="#SEService">SEService</a>
+</li>
+<li>1.3. <a href="#Reader">Reader</a>
+</li>
+<li>1.4. <a href="#Session">Session</a>
+</li>
+<li>1.5. <a href="#Channel">Channel</a>
+</li>
+<li>1.6. <a href="#SEChangeListener">SEChangeListener</a>
+</li>
+<li>1.7. <a href="#ReaderArraySuccessCallback">ReaderArraySuccessCallback</a>
+</li>
+<li>1.8. <a href="#SessionSuccessCallback">SessionSuccessCallback</a>
+</li>
+<li>1.9. <a href="#ChannelSuccessCallback">ChannelSuccessCallback</a>
+</li>
+<li>1.10. <a href="#TransmitSuccessCallback">TransmitSuccessCallback</a>
+</li>
+</ul>
+</li>
+<li>2. <a href="#api-features">Related Feature</a>
+</li>
+<li>3. <a href="#full-webidl">Full WebIDL</a>
+</li>
+</ul>
+<hr>
+<h2 id="method-summary">Summary of Interfaces and Methods</h2>
+<table class="informaltable">
+<thead><tr>
+<th>Interface</th>
+<th>Method</th>
+</tr></thead>
+<tbody>
+<tr>
+<td><a href="#SEServiceManagerObject">SEServiceManagerObject</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#SEService">SEService</a></td>
+<td>void <a href="#SEService::getReaders">getReaders</a> (<a href="#ReaderArraySuccessCallback">ReaderArraySuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)<br>
+ unsigned long <a href="#SEService::registerSEListener">registerSEListener</a> (<a href="#SEChangeListener">SEChangeListener</a> listener)<br>
+ void <a href="#SEService::unregisterSEListener">unregisterSEListener</a> (unsigned long id)<br>
+ void <a href="#SEService::shutdown">shutdown</a> ()</td>
+</tr>
+<tr>
+<td><a href="#Reader">Reader</a></td>
+<td>DOMString <a href="#Reader::getName">getName</a> ()<br>
+ void <a href="#Reader::openSession">openSession</a> (<a href="#SessionSuccessCallback">SessionSuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)<br>
+ void <a href="#Reader::closeSessions">closeSessions</a> ()</td>
+</tr>
+<tr>
+<td><a href="#Session">Session</a></td>
+<td>void <a href="#Session::openBasicChannel">openBasicChannel</a> (byte[] aid, <a href="#ChannelSuccessCallback">ChannelSuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)<br>
+ void <a href="#Session::openLogicalChannel">openLogicalChannel</a> (byte[] aid, <a href="#ChannelSuccessCallback">ChannelSuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)<br>
+ byte[] <a href="#Session::getATR">getATR</a> ()<br>
+ void <a href="#Session::close">close</a> ()<br>
+ void <a href="#Session::closeChannels">closeChannels</a> ()</td>
+</tr>
+<tr>
+<td><a href="#Channel">Channel</a></td>
+<td>void <a href="#Channel::close">close</a> ()<br>
+ void <a href="#Channel::transmit">transmit</a> (byte[] command, <a href="#TransmitSuccessCallback">TransmitSuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)<br>
+ byte[] <a href="#Channel::getSelectResponse">getSelectResponse</a> ()</td>
+</tr>
+<tr>
+<td><a href="#SEChangeListener">SEChangeListener</a></td>
+<td>void <a href="#SEChangeListener::onSEReady">onSEReady</a> (<a href="#Reader">Reader</a> reader)<br>
+ void <a href="#SEChangeListener::onSENotReady">onSENotReady</a> (<a href="#Reader">Reader</a> reader)</td>
+</tr>
+<tr>
+<td><a href="#ReaderArraySuccessCallback">ReaderArraySuccessCallback</a></td>
+<td>void <a href="#ReaderArraySuccessCallback::onsuccess">onsuccess</a> (<a href="#Reader">Reader</a>[] readers)</td>
+</tr>
+<tr>
+<td><a href="#SessionSuccessCallback">SessionSuccessCallback</a></td>
+<td>void <a href="#SessionSuccessCallback::onsuccess">onsuccess</a> (<a href="#Session">Session</a> session)</td>
+</tr>
+<tr>
+<td><a href="#ChannelSuccessCallback">ChannelSuccessCallback</a></td>
+<td>void <a href="#ChannelSuccessCallback::onsuccess">onsuccess</a> (<a href="#Channel">Channel</a> channel)</td>
+</tr>
+<tr>
+<td><a href="#TransmitSuccessCallback">TransmitSuccessCallback</a></td>
+<td>void <a href="#TransmitSuccessCallback::onsuccess">onsuccess</a> (byte[] response)</td>
+</tr>
+</tbody>
+</table>
+<div class="interfaces" id="interfaces-section">
+<h2>1. Interfaces</h2>
+<div class="interface" id="SEServiceManagerObject">
+<a class="backward-compatibility-anchor" name="::SecureElement::SEServiceManagerObject"></a><h3>1.1. SEServiceManagerObject</h3>
+<div class="brief">
+ The SEServiceManagerObject interface defines what is instantiated by the Tizen object from the Tizen Platform.
+ </div>
+<pre class="webidl prettyprint"> [NoInterfaceObject] interface SEServiceManagerObject {
+ readonly attribute <a href="#SEService">SEService</a> seService;
+ };</pre>
+<pre class="webidl prettyprint"> <a href="tizen.html#Tizen">Tizen</a> implements <a href="#SEServiceManagerObject">SEServiceManagerObject</a>;</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The <em>tizen.seService</em> object allows access to the functionality of the SecureElement API.
+ </p>
+ </div>
+</div>
+<div class="interface" id="SEService">
+<a class="backward-compatibility-anchor" name="::SecureElement::SEService"></a><h3>1.2. SEService</h3>
+<div class="brief">
+ The SEService interface provides access to the available Secure Element readers.
+ </div>
+<pre class="webidl prettyprint"> [NoInterfaceObject] interface SEService
+ {
+ void getReaders(<a href="#ReaderArraySuccessCallback">ReaderArraySuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ unsigned long registerSEListener(<a href="#SEChangeListener">SEChangeListener</a> listener) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ void unregisterSEListener(unsigned long id) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void shutdown() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+It provides access to the API functionalities through the <em>tizen.seService</em> interface.
+ </p>
+ </div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="SEService::getReaders">
+<a class="backward-compatibility-anchor" name="::SecureElement::SEService::getReaders"></a><code><b><span class="methodName">getReaders</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Gets all the available Secure Element readers.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void getReaders(<a href="#ReaderArraySuccessCallback">ReaderArraySuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The ErrorCallback is launched with these error types:
+ </p>
+ <ul>
+ <li>
+ UnknownError - If any error occurs during retrieval. </li>
+ </ul>
+ </div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/secureelement
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">successCallback</span>:
+ Callback method that is invoked when the list of available Secure Element readers has been successfully retrieved
+ </li>
+ <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Callback method that is invoked when an error occurs
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try {
+ function success(readers) {
+ for (var i = 0; i < readers.length; i++) {
+ if (readers[i].isPresent) {
+ console.log ("Reader Name : " + readers[i].getName());
+ }
+ }
+ }
+ function error(err) {
+ console.log (err.name + ": " + err.message);
+ }
+ tizen.seService.getReaders(success, error);
+ } catch (err) {
+ console.log (err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="SEService::registerSEListener">
+<a class="backward-compatibility-anchor" name="::SecureElement::SEService::registerSEListener"></a><code><b><span class="methodName">registerSEListener</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Registers a callback function that is invoked when an available Secure Element reader is detected.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">unsigned long registerSEListener(<a href="#SEChangeListener">SEChangeListener</a> listener);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/secureelement
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">listener</span>:
+ Listener to be called for successful detection of available Secure Element readers
+ </li>
+ </ul>
+</div>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ unsigned long An identifier used to clear the watch subscription
+ </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, if any other error occurs.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try {
+ var seListener = tizen.seService.registerSEListener({
+ onSEReady:function(reader) {
+ console.log (reader.getName() + "is ready.");
+ }, onSENotReady:function(reader) {
+ console.log (reader.getName() + "is not ready.");
+ }});
+ } catch (err) {
+ console.log (err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="SEService::unregisterSEListener">
+<a class="backward-compatibility-anchor" name="::SecureElement::SEService::unregisterSEListener"></a><code><b><span class="methodName">unregisterSEListener</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Unregisters the listener from notifying any detection of an available Secure Element reader.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void unregisterSEListener(unsigned long id);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/secureelement
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">id</span>:
+ A subscription identifier that is returned by the <em>registerSEListener()</em> method
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type InvalidValuesError, if any of the input parameters contains an invalid value.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, if any other error occurs.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> var seListener; //seListener obtained from registerSEListener
+ try {
+ tizen.seService.unregisterSEListener(seListener);
+ } catch (err) {
+ console.log (err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="SEService::shutdown">
+<a class="backward-compatibility-anchor" name="::SecureElement::SEService::shutdown"></a><code><b><span class="methodName">shutdown</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Shuts down Secure Elements after releasing all resources.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void shutdown();
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/secureelement
+ </p>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, if any other error occurs.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try {
+ tizen.seService.shutdown();
+ } catch (err) {
+ console.log (err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="Reader">
+<a class="backward-compatibility-anchor" name="::SecureElement::Reader"></a><h3>1.3. Reader</h3>
+<div class="brief">
+ The Reader interface that is connected to this device.
+ </div>
+<pre class="webidl prettyprint"> [NoInterfaceObject] interface Reader
+ {
+ readonly attribute boolean isPresent;
+ DOMString getName() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ void openSession(<a href="#SessionSuccessCallback">SessionSuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ void closeSessions() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+This interface offers methods to control sessions on the reader.
+ </p>
+ </div>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul><li class="attribute" id="Reader::isPresent">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">boolean </span><span class="name">isPresent</span></span><div class="brief">
+ Boolean value that indicates whether a Secure Element is present on a reader.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li></ul>
+</div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="Reader::getName">
+<a class="backward-compatibility-anchor" name="::SecureElement::Reader::getName"></a><code><b><span class="methodName">getName</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Gets the reader's name.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">DOMString getName();
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/secureelement
+ </p>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ DOMString The name of the reader
+ </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, if any other error occurs.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try {
+ function success(readers) {
+ for (var i = 0; i < readers.length; i++) {
+ if (readers[i].isPresent) {
+ console.log ("Reader Name : " + readers[i].getName());
+ }
+ }
+ }
+ function error(err) {
+ console.log (err.name + ": " + err.message);
+ }
+ tizen.seService.getReaders(success, error);
+ } catch (err) {
+ console.log (err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="Reader::openSession">
+<a class="backward-compatibility-anchor" name="::SecureElement::Reader::openSession"></a><code><b><span class="methodName">openSession</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Opens a session on a reader.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void openSession(<a href="#SessionSuccessCallback">SessionSuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The ErrorCallback is launched with these error types:
+ </p>
+ <ul>
+ <li>
+ IOError - An error occurred in communication with the Secure Element in this reader. </li>
+ <li>
+ InvalidStateError - If a Secure Element is not present on this reader. </li>
+ <li>
+ UnknownError - If any other error occurs. </li>
+ </ul>
+ </div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/secureelement
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">successCallback</span>:
+ Callback method that is invoked when a session has been successfully opened
+ </li>
+ <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Callback method that is invoked when an error occurs
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try {
+ function success(session) {
+ console.log ("Open Session Success : " + !session.isClosed);
+ }
+ function error(err) {
+ console.log (err.name + ": " + err.message);
+ }
+ reader.openSession(success, error);
+ } catch (err) {
+ console.log (err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="Reader::closeSessions">
+<a class="backward-compatibility-anchor" name="::SecureElement::Reader::closeSessions"></a><code><b><span class="methodName">closeSessions</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Closes all sessions opened on a reader.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void closeSessions();
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/secureelement
+ </p>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError in any other error case.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try {
+ reader.closeSessions();
+ } catch (err) {
+ console.log (err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="Session">
+<a class="backward-compatibility-anchor" name="::SecureElement::Session"></a><h3>1.4. Session</h3>
+<div class="brief">
+ The Session interface is connected to one of the readers and offers methods to control channels in a session.
+ </div>
+<pre class="webidl prettyprint"> [NoInterfaceObject] interface Session
+ {
+ readonly attribute boolean isClosed;
+ void openBasicChannel(byte[] aid, <a href="#ChannelSuccessCallback">ChannelSuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ void openLogicalChannel(byte[] aid, <a href="#ChannelSuccessCallback">ChannelSuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ byte[] getATR() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ void close() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ void closeChannels() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul><li class="attribute" id="Session::isClosed">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">boolean </span><span class="name">isClosed</span></span><div class="brief">
+ Boolean value that indicates whether a session is closed.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li></ul>
+</div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="Session::openBasicChannel">
+<a class="backward-compatibility-anchor" name="::SecureElement::Session::openBasicChannel"></a><code><b><span class="methodName">openBasicChannel</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Opens a basic channel in a session.
+The basic channel (defined in the ISO7816-4 specification) is opened by default and its channel ID is <var>0</var>.
+Once this channel has been opened by an application, it is considered to be "locked" to other applications, and they cannot open any channel, until the basic channel is closed.
+Some Secure Elements might always deny opening a basic channel.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void openBasicChannel(byte[] aid, <a href="#ChannelSuccessCallback">ChannelSuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The optional select response data of an applet can be retrieved with byte[] getSelectResponse().
+ </p>
+ <p>
+The ErrorCallback is launched with these error types:
+ </p>
+ <ul>
+ <li>
+ IOError - If an error occurs while communicating with the Secure Element in the reader. </li>
+ <li>
+ SecurityError - If access to this AID or the default application on this session is not allowed . </li>
+ <li>
+ InvalidStateError - If this session is closed. </li>
+ <li>
+ NotFoundError - If the application of the AID does not exist in the Secure Element. </li>
+ <li>
+ NoChannelError - If basic channel is unavailable. </li>
+ <li>
+ UnknownError - If any other error occurs. </li>
+ </ul>
+ </div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/secureelement
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">aid</span>:
+ ID of the applet to select on this channel<br>If the array is empty, the default applet is selected in this session.
+ </li>
+ <li class="param">
+<span class="name">successCallback</span>:
+ Callback method that is invoked when a basic channel has been successfully opened
+ </li>
+ <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Callback method that is invoked when an error occurs
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter
+is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type InvalidValuesError, if the AID's length is not within the limit: 5 to 16(inclusive).
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try {
+ function successChannel(channel) {
+ if (channel.isBasicChannel) {
+ console.log ("Basic channel is opened.");
+ } else {
+ console.log ("Logical channel is opened.");
+ }
+ }
+ function errorChannel(err) {
+ console.log ("openBasicChannel Error :" + err.name +": " + err.message);
+ }
+
+ function successSession(session) {
+ console.log ("Open Session Success : " + !session.isClosed);
+ // This aid is for test. Use aid for your applet in secure element.
+ session.openBasicChannel([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe], successChannel, errorChannel);
+ }
+ function errorSession(err) {
+ console.log ("openSession Error : " + err.name + ": " + err.message);
+ }
+ reader.openSession(successSession, errorSession);
+ } catch (err) {
+ console.log (err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="Session::openLogicalChannel">
+<a class="backward-compatibility-anchor" name="::SecureElement::Session::openLogicalChannel"></a><code><b><span class="methodName">openLogicalChannel</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Opens a logical channel in a session by the specified applet ID.
+The logical channel is defined in the ISO7816-4 specification.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void openLogicalChannel(byte[] aid, <a href="#ChannelSuccessCallback">ChannelSuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The optional select response data of an applet can be retrieved with byte[] getSelectResponse().
+ </p>
+ <p>
+The ErrorCallback is launched with these error types:
+ </p>
+ <ul>
+ <li>
+ IOError - If an error occurs while communicating with the Secure Element in the reader. </li>
+ <li>
+ SecurityError - If access to this AID or the default application in this session is not allowed. </li>
+ <li>
+ InvalidStateError - If this session is closed. </li>
+ <li>
+ NotFoundError - If the application of the AID does not exist in the Secure Element. </li>
+ <li>
+ NoChannelError - If logical channel is unavailable. </li>
+ <li>
+ UnknownError - If any other error occurs. </li>
+ </ul>
+ </div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/secureelement
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">aid</span>:
+ ID of the applet to select on this channel<br>If the array is empty, the default application is selected in this session.
+ </li>
+ <li class="param">
+<span class="name">successCallback</span>:
+ Callback method that is invoked when a logical channel has been successfully opened
+ </li>
+ <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Callback method that is invoked when an error occurs
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type InvalidValuesError, if the AID's length is not within the limit: 5 to 16(inclusive).
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> var session; //Session obtained from openSession callback
+ try {
+ function successChannel(channel) {
+ if (channel.isBasicChannel) {
+ console.log ("Basic channel is opened.");
+ } else {
+ console.log ("Logical channel is opened.");
+ }
+ }
+ function errorChannel(err) {
+ console.log ("openLogicalChannel Error :" + err.name + ": " + err.message);
+ }
+
+ // This aid is for test. Use aid for your applet in secure element.
+ session.openLogicalChannel([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe], successChannel, errorChannel);
+ } catch (err) {
+ console.log (err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="Session::getATR">
+<a class="backward-compatibility-anchor" name="::SecureElement::Session::getATR"></a><code><b><span class="methodName">getATR</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Gets the answer to reset(ATR) of a Secure Element.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">byte[] getATR();
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/secureelement
+ </p>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ byte[] The ATR of a Secure Element
+ </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, if any other error occurs.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> var session; //Session obtained from openSession callback
+ try {
+ var atr = session.getATR();
+ } catch (err) {
+ console.log (err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="Session::close">
+<a class="backward-compatibility-anchor" name="::SecureElement::Session::close"></a><code><b><span class="methodName">close</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Closes a session.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void close();
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/secureelement
+ </p>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, if any other error occurs.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> var session; //Session obtained from openSession callback
+ try {
+ session.close();
+ } catch (err) {
+ console.log (err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="Session::closeChannels">
+<a class="backward-compatibility-anchor" name="::SecureElement::Session::closeChannels"></a><code><b><span class="methodName">closeChannels</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Closes all channels on this session.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void closeChannels();
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/secureelement
+ </p>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError in any other error case.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> var session; //Session obtained from openSession callback
+ try {
+ session.closeChannels();
+ } catch (err) {
+ console.log (err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="Channel">
+<a class="backward-compatibility-anchor" name="::SecureElement::Channel"></a><h3>1.5. Channel</h3>
+<div class="brief">
+ The Channel interface is open to a Secure Element and offers methods to send Application Protocol Data Units(APDU) to the Secure Element.
+The channel is defined in the ISO7816-4.
+ </div>
+<pre class="webidl prettyprint"> [NoInterfaceObject] interface Channel {
+ readonly attribute boolean isBasicChannel;
+ void close() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void transmit(byte[] command, <a href="#TransmitSuccessCallback">TransmitSuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ byte[] getSelectResponse() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul><li class="attribute" id="Channel::isBasicChannel">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">boolean </span><span class="name">isBasicChannel</span></span><div class="brief">
+ Boolean value that indicates whether it is a basic channel.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li></ul>
+</div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="Channel::close">
+<a class="backward-compatibility-anchor" name="::SecureElement::Channel::close"></a><code><b><span class="methodName">close</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Closes a channel.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void close();
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/secureelement
+ </p>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, if any other error occurs.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> var channel; //Obtained from openLogicalChannel or openBasicChannel
+ try {
+ channel.close();
+ } catch (err) {
+ console.log (err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="Channel::transmit">
+<a class="backward-compatibility-anchor" name="::SecureElement::Channel::transmit"></a><code><b><span class="methodName">transmit</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Transmits an APDU command to a Secure Element. The APDU command is defined in ISO7816-4.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void transmit(byte[] command, <a href="#TransmitSuccessCallback">TransmitSuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+Some commands that are not allowed to be sent are:
+ </p>
+ <ul>
+ <li>
+ MANAGE_CHANNEL commands. </li>
+ <li>
+ SELECT by DF Name (p1=04). </li>
+ <li>
+ The commands that CLA bytes with channel numbers are de-masked. </li>
+ </ul>
+ <p>
+The ErrorCallback is launched with these error types:
+ </p>
+ <ul>
+ <li>
+ InvalidValuesError - If the command contain an invalid value. </li>
+ <li>
+ IOError - An error occurred while communicating with the Secure Element in the reader. </li>
+ <li>
+ SecurityError - If the command is not allowed. </li>
+ <li>
+ InvalidStateError - If this channel is closed. </li>
+ <li>
+ UnknownError - If any other error occurs. </li>
+ </ul>
+ </div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/secureelement
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">command</span>:
+ APDU command to transmit through this channel
+ </li>
+ <li class="param">
+<span class="name">successCallback</span>:
+ Callback method that is invoked when a command has been successfully transmitted
+ </li>
+ <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Callback method that is invoked when an error occurs
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+</dd>
+<dt class="method" id="Channel::getSelectResponse">
+<a class="backward-compatibility-anchor" name="::SecureElement::Channel::getSelectResponse"></a><code><b><span class="methodName">getSelectResponse</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Gets the data as received from the application select command including the status words.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">byte[] getSelectResponse();
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3
+ </p>
+<div class="description">
+ <p>
+When opening a channel, when an applet ID of secure element is selected,
+a response is generated to the select command. This method retrieves the response.
+ </p>
+ <p>
+The return value is a byte array containing the data bytes in the following order:
+ </p>
+ <p>
+[<first data byte>, ..., <last data byte>, <status word1>, <status word2>]
+ </p>
+ <ul>
+ <li>
+Only the status words are returned if the application select command has no returned data. </li>
+ <li>
+Null if an application select command has not been performed or
+the selection response can not be retrieved by the reader implementation. </li>
+ </ul>
+ </div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/secureelement
+ </p>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ bytes[] The data as returned by the application select command including the status words
+ </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul><li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to call this method.
+ </p></li></ul>
+</li></ul>
+ </div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="SEChangeListener">
+<a class="backward-compatibility-anchor" name="::SecureElement::SEChangeListener"></a><h3>1.6. SEChangeListener</h3>
+<div class="brief">
+ The SEChangeListener interface provides the success callback that is invoked when a Secure Element reader is detected or lost.
+ </div>
+<pre class="webidl prettyprint"> [Callback, NoInterfaceObject] interface SEChangeListener {
+ void onSEReady(<a href="#Reader">Reader</a> reader);
+ void onSENotReady(<a href="#Reader">Reader</a> reader);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+It is used in <em>SEService.registerSEListener()</em>.
+ </p>
+ </div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="SEChangeListener::onSEReady">
+<a class="backward-compatibility-anchor" name="::SecureElement::SEChangeListener::onSEReady"></a><code><b><span class="methodName">onSEReady</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when a Secure Element reader is detected.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void onSEReady(<a href="#Reader">Reader</a> reader);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">reader</span>:
+ Newly detected Secure Element reader
+ </li>
+ </ul>
+</div>
+</dd>
+<dt class="method" id="SEChangeListener::onSENotReady">
+<a class="backward-compatibility-anchor" name="::SecureElement::SEChangeListener::onSENotReady"></a><code><b><span class="methodName">onSENotReady</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when a Secure Element reader is lost.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void onSENotReady(<a href="#Reader">Reader</a> reader);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">reader</span>:
+ Lost Secure Element reader
+ </li>
+ </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="ReaderArraySuccessCallback">
+<a class="backward-compatibility-anchor" name="::SecureElement::ReaderArraySuccessCallback"></a><h3>1.7. ReaderArraySuccessCallback</h3>
+<div class="brief">
+ The ReaderArraySuccessCallback callback interface provides a success callback that is invoked when a list of available Secure Element readers is retrieved.
+ </div>
+<pre class="webidl prettyprint"> [Callback=FunctionOnly, NoInterfaceObject] interface ReaderArraySuccessCallback {
+ void onsuccess(<a href="#Reader">Reader</a>[] readers);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+It specifies a success method with an array of <em>Reader</em> objects as an input parameter.
+It is used in asynchronous operations such as <em>SEService.getReaders()</em>.
+ </p>
+ </div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="ReaderArraySuccessCallback::onsuccess">
+<a class="backward-compatibility-anchor" name="::SecureElement::ReaderArraySuccessCallback::onsuccess"></a><code><b><span class="methodName">onsuccess</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when an asynchronous call completes successfully.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void onsuccess(<a href="#Reader">Reader</a>[] readers);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">readers</span>:
+ List of available Secure Element readers
+ </li>
+ </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="SessionSuccessCallback">
+<a class="backward-compatibility-anchor" name="::SecureElement::SessionSuccessCallback"></a><h3>1.8. SessionSuccessCallback</h3>
+<div class="brief">
+ The SessionSuccessCallback interface specifies the success callback that is invoked when a session on a specific reader is open.
+ </div>
+<pre class="webidl prettyprint"> [Callback=FunctionOnly, NoInterfaceObject] interface SessionSuccessCallback {
+ void onsuccess(<a href="#Session">Session</a> session);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+This callback interface specifies a success method with a <em>Session</em> object as an input parameter.
+It is used in asynchronous operations such as <em>Reader.openSession()</em>.
+ </p>
+ </div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="SessionSuccessCallback::onsuccess">
+<a class="backward-compatibility-anchor" name="::SecureElement::SessionSuccessCallback::onsuccess"></a><code><b><span class="methodName">onsuccess</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when an asynchronous call completes successfully.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void onsuccess(<a href="#Session">Session</a> session);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">session</span>:
+ Open session
+ </li>
+ </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="ChannelSuccessCallback">
+<a class="backward-compatibility-anchor" name="::SecureElement::ChannelSuccessCallback"></a><h3>1.9. ChannelSuccessCallback</h3>
+<div class="brief">
+ The ChannelSuccessCallback interface specifies the success callback that is invoked when a channel is open to communicate with a specific applet.
+ </div>
+<pre class="webidl prettyprint"> [Callback=FunctionOnly, NoInterfaceObject] interface ChannelSuccessCallback {
+ void onsuccess(<a href="#Channel">Channel</a> channel);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+This callback interface specifies a success method with a <em>Channel</em> object as an input parameter.
+It is used in asynchronous operations such as <em>Session.openBasicChannel() </em>or <em>Session.openLogicalChannel()</em>.
+ </p>
+ </div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="ChannelSuccessCallback::onsuccess">
+<a class="backward-compatibility-anchor" name="::SecureElement::ChannelSuccessCallback::onsuccess"></a><code><b><span class="methodName">onsuccess</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when an asynchronous call completes successfully.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void onsuccess(<a href="#Channel">Channel</a> channel);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">channel</span>:
+ Open channel
+ </li>
+ </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="TransmitSuccessCallback">
+<a class="backward-compatibility-anchor" name="::SecureElement::TransmitSuccessCallback"></a><h3>1.10. TransmitSuccessCallback</h3>
+<div class="brief">
+ The TransmitSuccessCallback interface specifies the success callback that is invoked when <em>Channel.transmit() </em>completes successfully.
+ </div>
+<pre class="webidl prettyprint"> [Callback=FunctionOnly, NoInterfaceObject] interface TransmitSuccessCallback {
+ void onsuccess(byte[] response);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+This callback interface specifies a success method with an array of bytes as an input parameter. It is used in <em>Channel.transmit()</em>.
+ </p>
+ </div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="TransmitSuccessCallback::onsuccess">
+<a class="backward-compatibility-anchor" name="::SecureElement::TransmitSuccessCallback::onsuccess"></a><code><b><span class="methodName">onsuccess</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when an asynchronous call completes successfully.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void onsuccess(byte[] response);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">response</span>:
+ APDU command response that is transmitted on a channel
+ </li>
+ </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+<h2 id="api-features">2. Related Feature</h2>
+<div id="def-api-features" class="def-api-features">
+ You can check if this API is supported with <em>tizen.systeminfo.getCapability()</em> and decide enable/disable codes that need this API.
+ <div class="def-api-feature">
+<p><div class="description">
+ <p>
+To guarantee this application will run on a device with a Secure Element, add the below feature declaration to the config file:
+ </p>
+ </div></p>
+<li class="feature">http://tizen.org/feature/network.secure_element</li>
+</div>
+<p></p>
+ For more information, see <a href="../../../../../org.tizen.gettingstarted/html/details/app_filtering.htm#web">Application Filtering</a>.
+</div>
+<h2 id="full-webidl">3. Full WebIDL</h2>
+<pre class="webidl prettyprint">module SecureElement {
+ [NoInterfaceObject] interface SEServiceManagerObject {
+ readonly attribute <a href="#SEService">SEService</a> seService;
+ };
+ <a href="tizen.html#Tizen">Tizen</a> implements <a href="#SEServiceManagerObject">SEServiceManagerObject</a>;
+
+ [NoInterfaceObject] interface SEService
+ {
+ void getReaders(<a href="#ReaderArraySuccessCallback">ReaderArraySuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ unsigned long registerSEListener(<a href="#SEChangeListener">SEChangeListener</a> listener) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ void unregisterSEListener(unsigned long id) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void shutdown() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ };
+
+ [NoInterfaceObject] interface Reader
+ {
+ readonly attribute boolean isPresent;
+ DOMString getName() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ void openSession(<a href="#SessionSuccessCallback">SessionSuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ void closeSessions() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ };
+ [NoInterfaceObject] interface Session
+ {
+ readonly attribute boolean isClosed;
+ void openBasicChannel(byte[] aid, <a href="#ChannelSuccessCallback">ChannelSuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ void openLogicalChannel(byte[] aid, <a href="#ChannelSuccessCallback">ChannelSuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ byte[] getATR() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ void close() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ void closeChannels() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ };
+
+ [NoInterfaceObject] interface Channel {
+ readonly attribute boolean isBasicChannel;
+ void close() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void transmit(byte[] command, <a href="#TransmitSuccessCallback">TransmitSuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ byte[] getSelectResponse() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ };
+
+ [Callback, NoInterfaceObject] interface SEChangeListener {
+ void onSEReady(<a href="#Reader">Reader</a> reader);
+ void onSENotReady(<a href="#Reader">Reader</a> reader);
+ };
+
+ [Callback=FunctionOnly, NoInterfaceObject] interface ReaderArraySuccessCallback {
+ void onsuccess(<a href="#Reader">Reader</a>[] readers);
+ };
+
+ [Callback=FunctionOnly, NoInterfaceObject] interface SessionSuccessCallback {
+ void onsuccess(<a href="#Session">Session</a> session);
+ };
+
+ [Callback=FunctionOnly, NoInterfaceObject] interface ChannelSuccessCallback {
+ void onsuccess(<a href="#Channel">Channel</a> channel);
+ };
+
+ [Callback=FunctionOnly, NoInterfaceObject] interface TransmitSuccessCallback {
+ void onsuccess(byte[] response);
+ };
+};</pre>
+</div>
+<div id="page-footer">
+<div class="copyright" align="center">
+ 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>.
+ </div>
+<script type="text/javascript">
+
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', 'UA-25976949-1']);
+ _gaq.push(['_setDomainName', 'tizen.org']);
+ _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>
+</div>
+</body>
+</html>
</li>
<li>2.8. <a href="#UltravioletSensor">UltravioletSensor</a>
</li>
-<li>2.9. <a href="#SensorData">SensorData</a>
+<li>2.9. <a href="#HRMRawSensor">HRMRawSensor</a>
</li>
-<li>2.10. <a href="#SensorLightData">SensorLightData</a>
+<li>2.10. <a href="#SensorData">SensorData</a>
</li>
-<li>2.11. <a href="#SensorMagneticData">SensorMagneticData</a>
+<li>2.11. <a href="#SensorLightData">SensorLightData</a>
</li>
-<li>2.12. <a href="#SensorPressureData">SensorPressureData</a>
+<li>2.12. <a href="#SensorMagneticData">SensorMagneticData</a>
</li>
-<li>2.13. <a href="#SensorProximityData">SensorProximityData</a>
+<li>2.13. <a href="#SensorPressureData">SensorPressureData</a>
</li>
-<li>2.14. <a href="#SensorUltravioletData">SensorUltravioletData</a>
+<li>2.14. <a href="#SensorProximityData">SensorProximityData</a>
</li>
-<li>2.15. <a href="#SensorDataSuccessCallback">SensorDataSuccessCallback</a>
+<li>2.15. <a href="#SensorUltravioletData">SensorUltravioletData</a>
+</li>
+<li>2.16. <a href="#SensorHRMRawData">SensorHRMRawData</a>
+</li>
+<li>2.17. <a href="#SensorDataSuccessCallback">SensorDataSuccessCallback</a>
</li>
</ul>
</li>
<td>void <a href="#UltravioletSensor::getUltravioletSensorData">getUltravioletSensorData</a> (<a href="#SensorDataSuccessCallback">SensorDataSuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)</td>
</tr>
<tr>
+<td><a href="#HRMRawSensor">HRMRawSensor</a></td>
+<td>void <a href="#HRMRawSensor::getHRMRawSensorData">getHRMRawSensorData</a> (<a href="#SensorDataSuccessCallback">SensorDataSuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)</td>
+</tr>
+<tr>
<td><a href="#SensorData">SensorData</a></td>
<td></td>
</tr>
<td></td>
</tr>
<tr>
+<td><a href="#SensorHRMRawData">SensorHRMRawData</a></td>
+<td></td>
+</tr>
+<tr>
<td><a href="#SensorDataSuccessCallback">SensorDataSuccessCallback</a></td>
<td>void <a href="#SensorDataSuccessCallback::onsuccess">onsuccess</a> (optional <a href="#SensorData">SensorData</a>? sensorData)</td>
</tr>
<div class="brief">
Specifies the sensor type available to the API.
</div>
-<pre class="webidl prettyprint"> enum SensorType { "LIGHT", "MAGNETIC", "PRESSURE", "PROXIMITY", "ULTRAVIOLET" };</pre>
+<pre class="webidl prettyprint"> enum SensorType { "LIGHT", "MAGNETIC", "PRESSURE", "PROXIMITY", "ULTRAVIOLET", "HRM_RAW" };</pre>
<p><span class="version">
Since: </span>
2.3
PROXIMITY - Proximity sensor </li>
<li>
ULTRAVIOLET - Ultraviolet sensor </li>
+ <li>
+HRM_RAW - HRM sensor </li>
</ul>
</div>
+<p><span class="remark"> Remark : </span>
+ <em>HRM_RAW</em> is supported since Tizen 2.3.1
+ </p>
</div>
<div class="enum" id="ProximityState">
<a class="backward-compatibility-anchor" name="::Sensor::ProximityState"></a><h3>1.2. ProximityState</h3>
PROXIMITY - tizen.systeminfo.getCapability(<em>"http://tizen.org/feature/sensor.proximity"</em>) </li>
<li>
ULTRAVIOLET - tizen.systeminfo.getCapability(<em>"http://tizen.org/feature/sensor.ultraviolet"</em>) </li>
+ <li>
+ HRM_RAW - tizen.systeminfo.getCapability(<em>"http://tizen.org/feature/sensor.heart_rate_monitor"</em>) </li>
</ul>
</div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/healthinfo
+ </p>
+<p><span class="remark"> Remark : </span>
+ <b>http://tizen.org/privilege/healthinfo</b> is required only for <a href="#SensorType">HRM_RAW </a> type. <em>HRM_RAW</em> is supported since Tizen 2.3.1
+ </p>
<div class="parameters">
<p><span class="param">Parameters:</span></p>
<ul>
<li class="param">
-<span class="name">type</span>:
+<span class="name">type</span>:
Sensor type to access
</li>
</ul>
<li class="list"><p>
with error type NotSupportedError, if the given <var>type</var> is not supported on the device.
</p></li>
+<li class="list"><p>
+ with error type SecurityError, this error is only thrown for <em> HRM_RAW </em> sensor type when an application does not have http://tizen.org/privilege/healthinfo privilege in config.xml.
+ </p></li>
</ul>
</li></ul>
</div>
<p><span class="param">Parameters:</span></p>
<ul>
<li class="param">
-<span class="name">successCallback</span>:
+<span class="name">successCallback</span>:
Callback method to be invoked when sensor has been successfully started
</li>
<li class="param">
-<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
Callback method to be invoked when an error occurs
</li>
</ul>
<p><span class="param">Parameters:</span></p>
<ul>
<li class="param">
-<span class="name">successCallback</span>:
+<span class="name">successCallback</span>:
Callback method to be invoked when the sensor data changes
</li>
</ul>
Since: </span>
2.3
</p>
-
+
<div class="methods">
<h4>Methods</h4>
<dl>
<p><span class="param">Parameters:</span></p>
<ul>
<li class="param">
-<span class="name">successCallback</span>:
+<span class="name">successCallback</span>:
Callback method to be invoked when the sensor data has been read
</li>
<li class="param">
-<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
Callback method to be invoked when an error occurs
</li>
</ul>
Since: </span>
2.3
</p>
-
+
<div class="methods">
<h4>Methods</h4>
<dl>
<p><span class="param">Parameters:</span></p>
<ul>
<li class="param">
-<span class="name">successCallback</span>:
+<span class="name">successCallback</span>:
Callback method to be invoked when the sensor data has been read
</li>
<li class="param">
-<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
Callback method to be invoked when an error occurs
</li>
</ul>
Since: </span>
2.3
</p>
-
+
<div class="methods">
<h4>Methods</h4>
<dl>
<p><span class="param">Parameters:</span></p>
<ul>
<li class="param">
-<span class="name">successCallback</span>:
+<span class="name">successCallback</span>:
Callback method to be invoked when the sensor data has been read
</li>
<li class="param">
-<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
Callback method to be invoked when an error occurs
</li>
</ul>
Since: </span>
2.3
</p>
-
+
<div class="methods">
<h4>Methods</h4>
<dl>
<p><span class="param">Parameters:</span></p>
<ul>
<li class="param">
-<span class="name">successCallback</span>:
+<span class="name">successCallback</span>:
Callback method to be invoked when the sensor data has been read
</li>
<li class="param">
-<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
Callback method to be invoked when an error occurs
</li>
</ul>
Since: </span>
2.3
</p>
-
+
<div class="methods">
<h4>Methods</h4>
<dl>
<p><span class="param">Parameters:</span></p>
<ul>
<li class="param">
-<span class="name">successCallback</span>:
+<span class="name">successCallback</span>:
Callback method to be invoked when the sensor data has been read
</li>
<li class="param">
-<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
Callback method to be invoked when an error occurs
</li>
</ul>
</dl>
</div>
</div>
+<div class="interface" id="HRMRawSensor">
+<a class="backward-compatibility-anchor" name="::Sensor::HRMRawSensor"></a><h3>2.9. HRMRawSensor</h3>
+<div class="brief">
+ The HRMRawSensor interface provides methods to access HRM sensor raw data.
+ </div>
+<pre class="webidl prettyprint"> [NoInterfaceObject] interface HRMRawSensor : <a href="#Sensor">Sensor</a> {
+
+ void getHRMRawSensorData(<a href="#SensorDataSuccessCallback">SensorDataSuccessCallback</a> successCallback,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+
+ <div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="HRMRawSensor::getHRMRawSensorData">
+<a class="backward-compatibility-anchor" name="::Sensor::HRMRawSensor::getHRMRawSensorData"></a><code><b><span class="methodName">getHRMRawSensorData</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Gets the current sensor data.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void getHRMRawSensorData(<a href="#SensorDataSuccessCallback">SensorDataSuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+Note that before calling the getHRMRawSensorData() method, the start() method should be called to turn on the sensor.
+ </p>
+ <p>
+The <em>ErrorCallback</em> method is launched with these error types:
+ </p>
+ <ul>
+ <li>
+ ServiceNotAvailableError : If the getHRMRawSensorData method is called without calling the start method. </li>
+ <li>
+ UnknownError : An unknown error has occurred. </li>
+ </ul>
+ </div>
+<p><span class="privilegelevel">
+ Privilege level: </span>
+ public
+ </p>
+<p><span class="privilege">
+ Privilege: </span>
+ http://tizen.org/privilege/healthinfo
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">successCallback</span>:
+ Callback method to be invoked when the sensor data has been read
+ </li>
+ <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ Callback method to be invoked when an error occurs
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError, if retrieving the sensor data fails because of an unknown error.
+ </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the application does not have the privilege to use this function.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> var HRMrawsensor = tizen.sensorservice.getDefaultSensor("HRM_RAW");
+
+ function onGetSuccessCB(sensorData) {
+ console.log("HRMRaw light intensity : " + sensorData.lightIntensity);
+ }
+
+ function onerrorCB(error) {
+ console.log("error occurs");
+ }
+
+ function onsuccessCB() {
+ console.log("HRMRaw sensor start");
+ HRMrawsensor.getHRMRawSensorData(onGetSuccessCB, onerrorCB);
+ }
+
+ HRMrawsensor.start(onsuccessCB);
+
+ </pre>
+</div>
+</dd>
+</dl>
+</div>
+</div>
<div class="interface" id="SensorData">
-<a class="backward-compatibility-anchor" name="::Sensor::SensorData"></a><h3>2.9. SensorData</h3>
+<a class="backward-compatibility-anchor" name="::Sensor::SensorData"></a><h3>2.10. SensorData</h3>
<div class="brief">
The SensorData interface is a common abstract interface used by different types of sensor data objects.
</div>
</p>
</div>
<div class="interface" id="SensorLightData">
-<a class="backward-compatibility-anchor" name="::Sensor::SensorLightData"></a><h3>2.10. SensorLightData</h3>
+<a class="backward-compatibility-anchor" name="::Sensor::SensorLightData"></a><h3>2.11. SensorLightData</h3>
<div class="brief">
The SensorLightData interface represents light sensor data.
</div>
Since: </span>
2.3
</p>
-
+
<div class="attributes">
<h4>Attributes</h4>
<ul><li class="attribute" id="SensorLightData::lightLevel">
</div>
</div>
<div class="interface" id="SensorMagneticData">
-<a class="backward-compatibility-anchor" name="::Sensor::SensorMagneticData"></a><h3>2.11. SensorMagneticData</h3>
+<a class="backward-compatibility-anchor" name="::Sensor::SensorMagneticData"></a><h3>2.12. SensorMagneticData</h3>
<div class="brief">
The SensorMagneticData interface represents magnetic sensor data.
</div>
Since: </span>
2.3
</p>
-
+
<div class="attributes">
<h4>Attributes</h4>
<ul>
</div>
</div>
<div class="interface" id="SensorPressureData">
-<a class="backward-compatibility-anchor" name="::Sensor::SensorPressureData"></a><h3>2.12. SensorPressureData</h3>
+<a class="backward-compatibility-anchor" name="::Sensor::SensorPressureData"></a><h3>2.13. SensorPressureData</h3>
<div class="brief">
The SensorPressureData interface represents pressure sensor data.
</div>
Since: </span>
2.3
</p>
-
+
<div class="attributes">
<h4>Attributes</h4>
<ul><li class="attribute" id="SensorPressureData::pressure">
</div>
</div>
<div class="interface" id="SensorProximityData">
-<a class="backward-compatibility-anchor" name="::Sensor::SensorProximityData"></a><h3>2.13. SensorProximityData</h3>
+<a class="backward-compatibility-anchor" name="::Sensor::SensorProximityData"></a><h3>2.14. SensorProximityData</h3>
<div class="brief">
The SensorProximityData interface represents proximity sensor data.
</div>
Since: </span>
2.3
</p>
-
+
<div class="attributes">
<h4>Attributes</h4>
<ul><li class="attribute" id="SensorProximityData::proximityState">
</div>
</div>
<div class="interface" id="SensorUltravioletData">
-<a class="backward-compatibility-anchor" name="::Sensor::SensorUltravioletData"></a><h3>2.14. SensorUltravioletData</h3>
+<a class="backward-compatibility-anchor" name="::Sensor::SensorUltravioletData"></a><h3>2.15. SensorUltravioletData</h3>
<div class="brief">
The SensorUltravioletData interface represents ultraviolet sensor data.
</div>
Since: </span>
2.3
</p>
-
+
<div class="attributes">
<h4>Attributes</h4>
<ul><li class="attribute" id="SensorUltravioletData::ultravioletLevel">
</li></ul>
</div>
</div>
+<div class="interface" id="SensorHRMRawData">
+<a class="backward-compatibility-anchor" name="::Sensor::SensorHRMRawData"></a><h3>2.16. SensorHRMRawData</h3>
+<div class="brief">
+ The SensorHRMRawData interface represents HRM sensor raw data.
+ </div>
+<pre class="webidl prettyprint"> [NoInterfaceObject] interface SensorHRMRawData : <a href="#SensorData">SensorData</a> {
+
+ readonly attribute DOMString lightType;
+
+ readonly attribute unsigned long lightIntensity;
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+
+ <div class="attributes">
+<h4>Attributes</h4>
+<ul>
+<li class="attribute" id="SensorHRMRawData::lightType">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">DOMString </span><span class="name">lightType</span></span><div class="brief">
+ HRM sensor light type.
+ </div>
+<div class="description">
+ <p>
+The following values are supported:
+ </p>
+ <ul>
+ <li>
+LED_IR - The infrared spectrum </li>
+ <li>
+LED_RED - The red light spectrum </li>
+ <li>
+LED_GREEN - The green light spectrum </li>
+ </ul>
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="SensorHRMRawData::lightIntensity">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">unsigned long </span><span class="name">lightIntensity</span></span><div class="brief">
+ HRM sensor light intensity measures the light intensity that is reflected from a blood vessel. The changes in the reported value represent blood volume changes in the microvascular bed of the tissue, and can be used to estimate heart rate.
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+</ul>
+</div>
+</div>
<div class="interface" id="SensorDataSuccessCallback">
-<a class="backward-compatibility-anchor" name="::Sensor::SensorDataSuccessCallback"></a><h3>2.15. SensorDataSuccessCallback</h3>
+<a class="backward-compatibility-anchor" name="::Sensor::SensorDataSuccessCallback"></a><h3>2.17. SensorDataSuccessCallback</h3>
<div class="brief">
The SensorDataSuccessCallback interface is a callback interface that is invoked when the sensor data has changed. For example, see the Sensor interface.
</div>
<p><span class="param">Parameters:</span></p>
<ul>
<li class="param">
-<span class="name">sensorData</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+<span class="name">sensorData</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
Current sensor data
</li>
</ul>
</div></p>
<li class="feature">http://tizen.org/feature/sensor.ultraviolet</li>
</div>
+<div class="def-api-feature">
+<p><div class="description">
+ <p>
+To guarantee that the Heart Rate Monitor application runs on a device with a heart rate monitor, declare the following feature requirements in the config file:
+ </p>
+ </div></p>
+<li class="feature">http://tizen.org/feature/sensor.heart_rate_monitor</li>
+</div>
<p></p>
For more information, see <a href="../../../../../org.tizen.gettingstarted/html/details/app_filtering.htm#web">Application Filtering</a>.
</div>
<h2 id="full-webidl">4. Full WebIDL</h2>
<pre class="webidl prettyprint">module Sensor {
- enum SensorType { "LIGHT", "MAGNETIC", "PRESSURE", "PROXIMITY", "ULTRAVIOLET" };
+ enum SensorType { "LIGHT", "MAGNETIC", "PRESSURE", "PROXIMITY", "ULTRAVIOLET", "HRM_RAW" };
enum ProximityState { "FAR", "NEAR" };
optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
};
+ [NoInterfaceObject] interface HRMRawSensor : <a href="#Sensor">Sensor</a> {
+
+ void getHRMRawSensorData(<a href="#SensorDataSuccessCallback">SensorDataSuccessCallback</a> successCallback,
+ optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+ };
+
[NoInterfaceObject] interface SensorData {
};
readonly attribute long ultravioletLevel;
};
+ [NoInterfaceObject] interface SensorHRMRawData : <a href="#SensorData">SensorData</a> {
+
+ readonly attribute DOMString lightType;
+
+ readonly attribute unsigned long lightIntensity;
+ };
+
[Callback=FunctionOnly, NoInterfaceObject] interface SensorDataSuccessCallback {
void onsuccess(optional <a href="#SensorData">SensorData</a>? sensorData);
};
<div class="supported-platforms"><img class="wearable-mandatory emulator" title="Mandatory, Supported by Tizen Wearable emulator" src="ww_icon.png"></div>
<div class="title"><h1>Sound API</h1></div>
<div class="brief">
- The Sound API provides functions to control volume level for several sound types.
+ The Sound API provides functions to control the volume level for several sound types and to check whether a specified sound device type is connected.
</div>
<div class="description">
<p>
</li>
<li>1.2. <a href="#SoundModeType">SoundModeType</a>
</li>
+<li>1.3. <a href="#SoundDeviceType">SoundDeviceType</a>
+</li>
+<li>1.4. <a href="#SoundIOType">SoundIOType</a>
+</li>
</ul>
</li>
<li>2. <a href="#interfaces-section">Interfaces</a><ul class="toc">
</li>
<li>2.2. <a href="#SoundManager">SoundManager</a>
</li>
-<li>2.3. <a href="#SoundModeChangeCallback">SoundModeChangeCallback</a>
+<li>2.3. <a href="#SoundDeviceInfo">SoundDeviceInfo</a>
+</li>
+<li>2.4. <a href="#SoundModeChangeCallback">SoundModeChangeCallback</a>
+</li>
+<li>2.5. <a href="#SoundVolumeChangeCallback">SoundVolumeChangeCallback</a>
</li>
-<li>2.4. <a href="#SoundVolumeChangeCallback">SoundVolumeChangeCallback</a>
+<li>2.6. <a href="#SoundDeviceStateChangeCallback">SoundDeviceStateChangeCallback</a>
</li>
</ul>
</li>
void <a href="#SoundManager::setSoundModeChangeListener">setSoundModeChangeListener</a> (<a href="#SoundModeChangeCallback">SoundModeChangeCallback</a> callback)<br>
void <a href="#SoundManager::unsetSoundModeChangeListener">unsetSoundModeChangeListener</a> ()<br>
void <a href="#SoundManager::setVolumeChangeListener">setVolumeChangeListener</a> (<a href="#SoundVolumeChangeCallback">SoundVolumeChangeCallback</a> callback)<br>
- void <a href="#SoundManager::unsetVolumeChangeListener">unsetVolumeChangeListener</a> ()</td>
+ void <a href="#SoundManager::unsetVolumeChangeListener">unsetVolumeChangeListener</a> ()<br>
+ <a href="#SoundDeviceInfo">SoundDeviceInfo</a>[] <a href="#SoundManager::getConnectedDeviceList">getConnectedDeviceList</a> ()<br>
+ <a href="#SoundDeviceInfo">SoundDeviceInfo</a>[] <a href="#SoundManager::getActivatedDeviceList">getActivatedDeviceList</a> ()<br>
+ long <a href="#SoundManager::addDeviceStateChangeListener">addDeviceStateChangeListener</a> (<a href="#SoundDeviceStateChangeCallback">SoundDeviceStateChangeCallback</a> callback)<br>
+ void <a href="#SoundManager::removeDeviceStateChangeListener">removeDeviceStateChangeListener</a> (long id)</td>
+</tr>
+<tr>
+<td><a href="#SoundDeviceInfo">SoundDeviceInfo</a></td>
+<td></td>
</tr>
<tr>
<td><a href="#SoundModeChangeCallback">SoundModeChangeCallback</a></td>
<td><a href="#SoundVolumeChangeCallback">SoundVolumeChangeCallback</a></td>
<td>void <a href="#SoundVolumeChangeCallback::onsuccess">onsuccess</a> (<a href="#SoundType">SoundType</a> type, double volume)</td>
</tr>
+<tr>
+<td><a href="#SoundDeviceStateChangeCallback">SoundDeviceStateChangeCallback</a></td>
+<td>void <a href="#SoundDeviceStateChangeCallback::onchanged">onchanged</a> (<a href="#SoundDeviceInfo">SoundDeviceInfo</a> info)</td>
+</tr>
</tbody>
</table>
<div class="typedefs" id="typedefs-section">
</ul>
</div>
</div>
+<div class="enum" id="SoundDeviceType">
+<a class="backward-compatibility-anchor" name="::Sound::SoundDeviceType"></a><h3>1.3. SoundDeviceType</h3>
+<div class="brief">
+ Sound device type
+ </div>
+<pre class="webidl prettyprint"> enum SoundDeviceType {
+ "SPEAKER",
+ "RECEIVER",
+ "AUDIO_JACK",
+ "BLUETOOTH",
+ "HDMI",
+ "MIRRORING",
+ "USB_AUDIO",
+ "MIC"
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The possible types are:
+ </p>
+ <ul>
+ <li>
+ SPEAKER - For sound output using the built-in device speaker </li>
+ <li>
+ RECEIVER - For sound output using the built-in device receiver </li>
+ <li>
+ AUDIO_JACK - For sound input and/or output using the device audio jack which can be connected to a wired accessory such as a headset or headphone </li>
+ <li>
+ BLUETOOTH - For sound input and/or output through a device that is connected by Bluetooth </li>
+ <li>
+ HDMI - For sound output through a device that is connected by HDMI </li>
+ <li>
+ MIRRORING - For sound output through a device that is connected by mirroring </li>
+ <li>
+ USB_AUDIO - For sound output through a device that is connected by USB </li>
+ <li>
+ MICROPHONE - For sound input using the built-in device mic </li>
+ </ul>
+ </div>
+</div>
+<div class="enum" id="SoundIOType">
+<a class="backward-compatibility-anchor" name="::Sound::SoundIOType"></a><h3>1.4. SoundIOType</h3>
+<div class="brief">
+ Sound device I/O type
+ </div>
+<pre class="webidl prettyprint"> enum SoundIOType {
+ "IN",
+ "OUT",
+ "BOTH"
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+The possible types are:
+ </p>
+ <ul>
+ <li>
+ IN - For sound device type which <em>only support input</em> </li>
+ <li>
+ OUT - For sound device type which <em>only support output</em> </li>
+ <li>
+ BOTH - For sound device type which <em>supports both input and output</em> </li>
+ </ul>
+ </div>
+</div>
</div>
<div class="interfaces" id="interfaces-section">
<h2>2. Interfaces</h2>
double getVolume(<a href="#SoundType">SoundType</a> type) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
-
void setSoundModeChangeListener(<a href="#SoundModeChangeCallback">SoundModeChangeCallback</a> callback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
void unsetSoundModeChangeListener() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
void setVolumeChangeListener(<a href="#SoundVolumeChangeCallback">SoundVolumeChangeCallback</a> callback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
void unsetVolumeChangeListener() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ <a href="#SoundDeviceInfo">SoundDeviceInfo</a>[] getConnectedDeviceList() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ <a href="#SoundDeviceInfo">SoundDeviceInfo</a>[] getActivatedDeviceList() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ long addDeviceStateChangeListener(<a href="#SoundDeviceStateChangeCallback">SoundDeviceStateChangeCallback</a> callback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void removeDeviceStateChangeListener(long id) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
};</pre>
<p><span class="version">
Since: </span>
</li></ul>
</div>
</dd>
+<dt class="method" id="SoundManager::getConnectedDeviceList">
+<a class="backward-compatibility-anchor" name="::Sound::SoundManager::getConnectedDeviceList"></a><code><b><span class="methodName">getConnectedDeviceList</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Gets a list of connected sound devices.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint"><a href="#SoundDeviceInfo">SoundDeviceInfo</a>[] getConnectedDeviceList();
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ The list of connected sound devices
+ </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul><li class="list"><p>
+ with error type UnknownError in any other error case.
+ </p></li></ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> var infoArr = tizen.sound.getConnectedDeviceList();
+
+ for (var i = 0; i < infoArr.length; i++) {
+ cosole.log( infoArr[i].device );
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="SoundManager::getActivatedDeviceList">
+<a class="backward-compatibility-anchor" name="::Sound::SoundManager::getActivatedDeviceList"></a><code><b><span class="methodName">getActivatedDeviceList</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Gets a list of activated sound devices.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint"><a href="#SoundDeviceInfo">SoundDeviceInfo</a>[] getActivatedDeviceList();
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ The list of activated sound devices
+ </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul><li class="list"><p>
+ with error type UnknownError in any other error case.
+ </p></li></ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> var infoArr = tizen.sound.getActivatedDeviceList();
+
+ for (var i = 0; i < infoArr.length; i++) {
+ cosole.log( infoArr[i].device );
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="SoundManager::addDeviceStateChangeListener">
+<a class="backward-compatibility-anchor" name="::Sound::SoundManager::addDeviceStateChangeListener"></a><code><b><span class="methodName">addDeviceStateChangeListener</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Registers a listener that is to be called when the sound device state is changed.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">long addDeviceStateChangeListener(<a href="#SoundDeviceStateChangeCallback">SoundDeviceStateChangeCallback</a> callback);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="description">
+ <p>
+There are two types of device state changes:
+ </p>
+ <ul>
+ <li>
+Connectivity: When a device changes from being connected to being disconnected or from being disconnected to being connected. </li>
+ <li>
+Activation: When a device chages from being activated to being deactivated or from being deactivated to being activated. </li>
+ </ul>
+ </div>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">callback</span>:
+ Callback method to be invoked when the sound device state is changed
+ </li>
+ </ul>
+</div>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ long ID of the listener that can be used to remove the listener later.
+ </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
+ </p></li>
+<li class="list"><p>
+ with error type UnknownError in any other error case.
+ </p></li>
+</ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> // A callback
+ var onChanged = function(info) {
+ // Some code to execute when a sound device state is changed
+ if (info.isConnected) {
+ // Some code to execute if the device is connected.
+ console.log( info.device + " is connected" );
+ } else {
+ // Some code to execute if the device is not connected.
+ console.log( info.device + " is not connected" );
+ }
+
+ if (info.isActivated) {
+ // Some code to execute if the device is activated.
+ console.log( info.device + " is activated" );
+ } else {
+ // Some code to execute if the device is not activated.
+ console.log( info.device + " is not activated" );
+ }
+ }
+
+ var id = tizen.sound.addDeviceStateChangeListener(onChanged);
+ </pre>
+</div>
+</dd>
+<dt class="method" id="SoundManager::removeDeviceStateChangeListener">
+<a class="backward-compatibility-anchor" name="::Sound::SoundManager::removeDeviceStateChangeListener"></a><code><b><span class="methodName">removeDeviceStateChangeListener</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Unsubscribes from receiving notifications when the sound device state is changed.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void removeDeviceStateChangeListener(long id);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">id</span>:
+ An ID that identifies the listener
+ </li>
+ </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+ <ul class="exception"><li>WebAPIException<ul><li class="list"><p>
+ with error type UnknownError in any error case.
+ </p></li></ul>
+</li></ul>
+ </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> // If a listener to be called was registered previously.
+ tizen.sound.removeDeviceStateChangeListener(id);
+ </pre>
+</div>
+</dd>
</dl>
</div>
</div>
+<div class="interface" id="SoundDeviceInfo">
+<a class="backward-compatibility-anchor" name="::Sound::SoundDeviceInfo"></a><h3>2.3. SoundDeviceInfo</h3>
+<div class="brief">
+ The SoundDeviceInfo interface specifies the information about a sound device.
+ </div>
+<pre class="webidl prettyprint"> [NoInterfaceObject] interface SoundDeviceInfo {
+
+ readonly attribute long id;
+
+ readonly attribute DOMString name;
+
+ readonly attribute <a href="#SoundDeviceType">SoundDeviceType</a> device;
+
+ readonly attribute <a href="#SoundIOType">SoundIOType</a> direction;
+
+ readonly attribute boolean isConnected;
+
+ readonly attribute boolean isActivated;
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul>
+<li class="attribute" id="SoundDeviceInfo::id">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">long </span><span class="name">id</span></span><div class="brief">
+ The sound device ID
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="SoundDeviceInfo::name">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">DOMString </span><span class="name">name</span></span><div class="brief">
+ The sound device name
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="SoundDeviceInfo::device">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">SoundDeviceType </span><span class="name">device</span></span><div class="brief">
+ The sound device type
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="SoundDeviceInfo::direction">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">SoundIOType </span><span class="name">direction</span></span><div class="brief">
+ The sound device I/O type
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="SoundDeviceInfo::isConnected">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">boolean </span><span class="name">isConnected</span></span><div class="brief">
+ True if the sound device state is connected
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+<li class="attribute" id="SoundDeviceInfo::isActivated">
+<span class="attrName"><span class="readonly"> readonly
+</span><span class="type">boolean </span><span class="name">isActivated</span></span><div class="brief">
+ True if the sound device state is activated
+ </div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+</li>
+</ul>
+</div>
+</div>
<div class="interface" id="SoundModeChangeCallback">
-<a class="backward-compatibility-anchor" name="::Sound::SoundModeChangeCallback"></a><h3>2.3. SoundModeChangeCallback</h3>
+<a class="backward-compatibility-anchor" name="::Sound::SoundModeChangeCallback"></a><h3>2.4. SoundModeChangeCallback</h3>
<div class="brief">
The SoundModeChangeCallback interface specifies a mode change callback for getting notified about the sound mode changes.
</div>
-<pre class="webidl prettyprint"> [Callback=FunctionOnly, NoInterfaceObject]
- interface SoundModeChangeCallback {
+<pre class="webidl prettyprint"> [Callback=FunctionOnly, NoInterfaceObject] interface SoundModeChangeCallback {
+
void onsuccess(<a href="#SoundModeType">SoundModeType</a> mode);
};</pre>
<p><span class="version">
</div>
</div>
<div class="interface" id="SoundVolumeChangeCallback">
-<a class="backward-compatibility-anchor" name="::Sound::SoundVolumeChangeCallback"></a><h3>2.4. SoundVolumeChangeCallback</h3>
+<a class="backward-compatibility-anchor" name="::Sound::SoundVolumeChangeCallback"></a><h3>2.5. SoundVolumeChangeCallback</h3>
<div class="brief">
The SoundVolumeChangeCallback interface specifies a volume change callback for getting notified about the volume changes.
</div>
-<pre class="webidl prettyprint"> [Callback=FunctionOnly, NoInterfaceObject]
- interface SoundVolumeChangeCallback {
+<pre class="webidl prettyprint"> [Callback=FunctionOnly, NoInterfaceObject] interface SoundVolumeChangeCallback {
+
void onsuccess(<a href="#SoundType">SoundType</a> type, double volume);
};</pre>
<p><span class="version">
</dl>
</div>
</div>
+<div class="interface" id="SoundDeviceStateChangeCallback">
+<a class="backward-compatibility-anchor" name="::Sound::SoundDeviceStateChangeCallback"></a><h3>2.6. SoundDeviceStateChangeCallback</h3>
+<div class="brief">
+ The SoundDeviceStateChangeCallback interface specifies a sound device type change callback for getting notified when the sound device state changes.
+ </div>
+<pre class="webidl prettyprint"> [Callback=FunctionOnly, NoInterfaceObject] interface SoundDeviceStateChangeCallback {
+
+ void onchanged(<a href="#SoundDeviceInfo">SoundDeviceInfo</a> info);
+ };</pre>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="SoundDeviceStateChangeCallback::onchanged">
+<a class="backward-compatibility-anchor" name="::Sound::SoundDeviceStateChangeCallback::onchanged"></a><code><b><span class="methodName">onchanged</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Method invoked when the sound device state changes.
+ </div>
+<div class="synopsis"><pre class="signature prettyprint">void onchanged(<a href="#SoundDeviceInfo">SoundDeviceInfo</a> info);
+ </pre></div>
+<p><span class="version">
+ Since: </span>
+ 2.3.1
+ </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+ <li class="param">
+<span class="name">info</span>:
+ The info to have changed
+ </li>
+ </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
</div>
<h2 id="full-webidl">3. Full WebIDL</h2>
<pre class="webidl prettyprint">module Sound {
+
enum SoundType {
"SYSTEM",
"NOTIFICATION",
"MUTE"
};
+ enum SoundDeviceType {
+ "SPEAKER",
+ "RECEIVER",
+ "AUDIO_JACK",
+ "BLUETOOTH",
+ "HDMI",
+ "MIRRORING",
+ "USB_AUDIO",
+ "MIC"
+ };
+
+ enum SoundIOType {
+ "IN",
+ "OUT",
+ "BOTH"
+ };
+
[NoInterfaceObject] interface SoundManagerObject {
readonly attribute <a href="#SoundManager">SoundManager</a> sound;
};
double getVolume(<a href="#SoundType">SoundType</a> type) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
-
void setSoundModeChangeListener(<a href="#SoundModeChangeCallback">SoundModeChangeCallback</a> callback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
void unsetSoundModeChangeListener() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
void setVolumeChangeListener(<a href="#SoundVolumeChangeCallback">SoundVolumeChangeCallback</a> callback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
void unsetVolumeChangeListener() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ <a href="#SoundDeviceInfo">SoundDeviceInfo</a>[] getConnectedDeviceList() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ <a href="#SoundDeviceInfo">SoundDeviceInfo</a>[] getActivatedDeviceList() raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ long addDeviceStateChangeListener(<a href="#SoundDeviceStateChangeCallback">SoundDeviceStateChangeCallback</a> callback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+ void removeDeviceStateChangeListener(long id) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
};
- [Callback=FunctionOnly, NoInterfaceObject]
- interface SoundModeChangeCallback {
+ [NoInterfaceObject] interface SoundDeviceInfo {
+
+ readonly attribute long id;
+
+ readonly attribute DOMString name;
+
+ readonly attribute <a href="#SoundDeviceType">SoundDeviceType</a> device;
+
+ readonly attribute <a href="#SoundIOType">SoundIOType</a> direction;
+
+ readonly attribute boolean isConnected;
+
+ readonly attribute boolean isActivated;
+ };
+
+ [Callback=FunctionOnly, NoInterfaceObject] interface SoundModeChangeCallback {
+
void onsuccess(<a href="#SoundModeType">SoundModeType</a> mode);
};
- [Callback=FunctionOnly, NoInterfaceObject]
- interface SoundVolumeChangeCallback {
+ [Callback=FunctionOnly, NoInterfaceObject] interface SoundVolumeChangeCallback {
+
void onsuccess(<a href="#SoundType">SoundType</a> type, double volume);
};
+
+ [Callback=FunctionOnly, NoInterfaceObject] interface SoundDeviceStateChangeCallback {
+
+ void onchanged(<a href="#SoundDeviceInfo">SoundDeviceInfo</a> info);
+ };
};</pre>
</div>
<div id="page-footer">
</p>
<p><span class="privilegelevel">
Privilege level: </span>
- partner
+ public
</p>
<p><span class="privilege">
Privilege: </span>
- http://tizen.org/privilege/systemmanager
+ http://tizen.org/privilege/telephony
+ </p>
+<p><span class="remark"> Remark : </span>
+ The partner level privilege, <em>http://tizen.org/privilege/systemmanager</em>, has been deprecated.
+From Tizen 2.3.1, the public level privilege, <em>http://tizen.org/privilege/telephony</em>, is required.
</p>
<div class="exceptionlist">
<p><span class="except">Exceptions:</span></p>
</p>
<p><span class="privilegelevel">
Privilege level: </span>
- partner
+ public
</p>
<p><span class="privilege">
Privilege: </span>
- http://tizen.org/privilege/systemmanager
+ http://tizen.org/privilege/telephony
+ </p>
+<p><span class="remark"> Remark : </span>
+ The partner level privilege, <em>http://tizen.org/privilege/systemmanager</em>, has been deprecated.
+From Tizen 2.3.1, the public level privilege, <em>http://tizen.org/privilege/telephony</em>, is required.
</p>
<div class="exceptionlist">
<p><span class="except">Exceptions:</span></p>
</p>
<p><span class="privilegelevel">
Privilege level: </span>
- partner
+ public
</p>
<p><span class="privilege">
Privilege: </span>
- http://tizen.org/privilege/systemmanager
+ http://tizen.org/privilege/telephony
+ </p>
+<p><span class="remark"> Remark : </span>
+ The partner level privilege, <em>http://tizen.org/privilege/systemmanager</em>, has been deprecated.
+From Tizen 2.3.1, the public level privilege, <em>http://tizen.org/privilege/telephony</em>, is required.
</p>
<div class="exceptionlist">
<p><span class="except">Exceptions:</span></p>
</td>
<td>2.2.1</td>
</tr>
+<tr>
+ <td><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/input.rotating_bezel</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">boolean</span></td>
+ <td>The platform returns <span style="font-family: Courier New,Courier,monospace">true</span> for this key, if the device provides a built-in rotating bezel.</td>
+ <td>2.3.1</td>
+</tr>
</tbody>
</table>
<tr>
<td><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/network.bluetooth</span></td>
<td><span style="font-family: Courier New,Courier,monospace">boolean</span></td>
- <td>The platform returns <span style="font-family: Courier New,Courier,monospace">true</span> for this key, if the device supports <span style="font-family: Courier New,Courier,monospace"><a href="./bluetooth.html">Bluetooth API</a></span> which requires Bluetooth.</td>
+ <td>The platform returns <span style="font-family: Courier New,Courier,monospace">true</span> for this key, if the device supports <span style="font-family: Courier New,Courier,monospace">Bluetooth API</span> which requires Bluetooth.</td>
<td>2.2.1</td>
</tr>
<tr>
<td>2.3</td>
</tr>
<tr>
+ <td><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/network.internet</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">boolean</span></td>
+ <td>The platform returns <span style="font-family: Courier New,Courier,monospace">true</span> for this key, if the device supports internet.</td>
+ <td>2.3.1</td>
+ </tr>
+<tr>
+<tr>
<td><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/network.nfc</span></td>
<td><span style="font-family: Courier New,Courier,monospace">boolean</span></td>
<td>The platform returns <span style="font-family: Courier New,Courier,monospace">true</span> for this key, if the device supports <span style="font-family: Courier New,Courier,monospace"><a href="./nfc.html">NFC API</a></span> which requires Near Field Communication (NFC).</td>
<td>2.3</td>
</tr>
<tr>
+ <td><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/network.nfc.card_emulation.hce</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">boolean</span></td>
+ <td>The platform returns <span style="font-family: Courier New,Courier,monospace">true</span> for this key, if the device supports NFC Host-based Card Emulation.</td>
+ <td>2.3.1</td>
+</tr>
+<tr>
<td><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/network.nfc.reserved_push </span></td>
<td><span style="font-family: Courier New,Courier,monospace">boolean</span></td>
<td>The platform returns <span style="font-family: Courier New,Courier,monospace">true</span> for this key and the http://tizen.org/feature/network.nfc key, if the device supports the NFC reserved push feature.</td>
<td>The platform returns <span style="font-family: Courier New,Courier,monospace">true</span> for this key, if the device supports RCA output.</td>
<td>2.2.1</td>
</tr>
-
+<tr>
+ <td><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/screen.shape.circle</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">boolean</span></td>
+ <td>The platform returns <span style="font-family: Courier New,Courier,monospace">true</span> for this key, if the device supports a circular shaped screen.</td>
+ <td>2.3.1</td>
+</tr>
+<tr>
+ <td><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/screen.shape.rectangle</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">boolean</span></td>
+ <td>The platform returns <span style="font-family: Courier New,Courier,monospace">true</span> for this key, if the device supports a rectangular shaped screen.</td>
+ <td>2.3.1</td>
+</tr>
<tr>
<td><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/screen.size.all</span></td>
<td><span style="font-family: Courier New,Courier,monospace">boolean</span></td>