Tizen开发 - Data Control

Tizen web app开发示例(将2048移植到Tizen平台上) 一. Tizen简介 Tizen是由英特尔和三星合作创建的基于Linux的一款新开源操作系统,是一个开源的、标准化的基于Linux的操作系统。该操作系统支持 HTML5 与基于 WAC 的应用程序,还可广泛应用于各种不同的装置,其中包含智能型手机、平板计算机、智能电视、笔记本电脑与行车娱乐系统。 二. 安装Tizen SDK 前往开发者平台下载Installer 和SDK Image 阅读详情
Data Control 只能由service application提供,有两种Tizen::App::SqlDataControl和Tizen::App::MapDataControl。

1. Using Data Controls
可以通过 Tizen::App::AppManager 来获取Data Control,它以provider ID 为主要标示。
1)SqlDataControl
用provider ID调用AppManager::GetSqlDataControlN()获得Data Control,然后可以Select(), Insert(), Update() 和 Delete();
使用Tizen::App::ISqlDataControlResponseListener 的接口OnSqlDataControlSelectResponseReceived(), OnSqlDataControlInsertResponseReceived(), OnSqlDataControlUpdateResponseReceived(), or OnSqlDataControlDeleteResponseReceived()来获取返回数据。
2)MapDataControl
用provider ID调用AppManager::GetMapDataControlN()获得Data Control,然后可以 GetValue(), AddValue(), SetValue(), and RemoveValue();
使用Tizen::App::IMapDataControlResponseListener 的接口OnMapDataControlGetValueResponseReceived(), OnMapDataControlAddValueResponseReceived(), OnMapDataControlSetValueResponseReceived(), or OnMapDataControlRemoveValueResponseReceived()来获取返回数据。
3)Data Control life-cycle


2. Developing with Data Controls
1)export the data of your service application: 需要在manifest中配置;
2)SqlDataControl
实现 Tizen::App::ISqlDataControlProviderEventListener 接口,并使用Tizen::App::DataControlProviderManager 的接口SetSqlDataControlProviderEventListener()注册。
要实现ISqlDataControlProviderEventListener接口中的OnSqlDataControlSelectRequestReceived(), OnSqlDataControlInsertRequestReceived(), OnSqlDataControlUpdateRequestReceived(), or OnSqlDataControlDeleteRequestReceived()来处理请求;
3)MapDataControl
实现 Tizen::App::IMapDataControlProviderEventListener接口,并使用Tizen::App::DataControlProviderManager 的接口SetMapDataControlProviderEventListener()注册。
要实现 IMapDataControlProviderEventListener接口中的OnMapDataControlGetValueRequestReceived(), OnMapDataControlAddValueRequestReceived(), OnMapDataControlSetValueRequestReceived(), or OnMapDataControlRemoveValueRequestReceived()来处理请求。

4)Handling data control requests流程:


3. 实例
1)SqlDataControl (Using a SqlDataControl )
获取Data Control实例

String providerId(L"http://tizen.org/datacontrol/provider/example");
SqlDataControl* pDc = AppManager::GetSqlDataControlN(providerId);

call Select()
String dataId(L"test");
String person(L"person");
String number(L"number");
RequestId reqId;


ArrayList columnList;
columnList.Construct();
columnList.Add(person);
columnList.Add(number);
String where(L"group = 'friend'");
String order(L"person ASC");

pDc->Select(dataId, &columnList, &where, &order, reqId);
ArrayList.RemoveAll();

实现Tizen::App::ISqlDataControlResponseListener 接口
class ExampleSqlDataControlResponseListener: 
   public Tizen::App::ISqlDataControlResponseListener

实现OnSqlDataControlInsertResponseReceived()
void
ExampleSqlDataControlResponseListener::OnSqlDataControlInsertResponseReceived(RequestId reqId, 
                                                                              const String& providerId,
                                                                              const String& dataId,
                                                                              long long  insertRowId,
                                                                              bool providerResult,
                                                                              const String* pErrorMsg)
{
   // __insertRowId is a private variable of this class
   __insertRowId = insertRowId;


   return;
}

为Data Control设置回应监听者
ExampleSqlDataControlResponseListener* pResponseListener = null;


pResponseListener = new ExampleSqlDataControlResponseListener();
pDc->SetSqlDataControlResponseListener(pResponseListener);

delete pDc;

2) SqlDataControl (Providing a SqlDataControl)
在manifest中设置导出Data Control

实现Tizen::App::ISqlDataControlProviderEventListener 接口
class MyServiceApp:
   public Tizen::App::ServiceApp,
   public Tizen::App::ISqlDataControlProviderEventListener

实现 OnSqlDataControlSelectRequestReceived()
void
MyServiceApp::OnSqlDataControlSelectRequestReceived(RequestId reqId,
                                                    const String& providerId,
                                                    const String& dataId,
                                                    const IList* pcolumnList,
                                                    const String* pWhere,
                                                    const String* pOrder)
{
   Database* pDb = null;
   DbEnumerator* pEnum = null;
   String errorMsg;
   result r = E_SUCCESS;


   if (providerId == L"http://tizen.org/datacontrol/provider/example")
   {
      if (dataId == L"test")
      {
         String sql = SqlStatementBuilder::CreateSelectStatement(dataId, pColumnList,
                                                                 pWhere, pOrder,
                                                                 null, null, null);
         String dbPath(App::GetInstance()->GetAppRootPath() + L"data/test.db");


         pDb = new Database();


         r = pDb->Construct(dbPath, "r");


         pEnum = pDb->QueryN(sql);
         r = GetLastResult();


      }
      else
      {
         // Error handling
      }
   }
   else
   {
      // Error handling
   }


   r = DataControlProviderManager::GetInstance()->SendSqlDataControlSelectResult(reqId, pDbEnum);


   delete pEnum;
   delete pDb;

   return;
}

实现OnSqlDataControlInsertRequestReceived()
void
MyServiceApp::OnSqlDataControlInsertRequestReceived(RequestId reqId, 
                                                    const Tizen::Base::String& providerId,
                                                    const Tizen::Base::String& dataId, 
                                                    const Tizen::Base::Collection::IMap& insertMap)
{
   Database* pDb = null;
   String errorMsg;
   long long insertRowId = -1;
   result r = E_SUCCESS;


   if (providerId == L"http://tizen.org/datacontrol/provider/example")
   {
      if (dataId == L"test")
      {
         String sql = SqlStatementBuilder::CreateInsertStatement(dataId, insertMap);


         String dbPath(App::GetInstance()->GetAppDataPath() + L"test.db");


         pDb = new Database();


         r = pDb->Construct(dbPath, "a+");


         r = pDb->ExecuteSql(sql, true);


         insertRowId = pDb->GetLastInsertRowId();


      }
      else
      {
         // Error handling
      }
   }
   else
   {
      // Error handling
   }


   r = DataControlProviderManager::GetInstance()->SendSqlDataControlInsertResult(reqId, insertRowId);


   delete pDb;


   return;
}

使用Tizen::App::DataControlProviderManager 的SetSqlDataControlProviderListener()设置提供Data Control的listener
bool
MyServiceApp::OnAppInitializing(Tizen::App::AppRegistry& appRegistry)
{
   result r = E_SUCCESS;
   DataControlProviderManager* pDcMgr = DataControlProviderManager::GetInstance();
   r = pDcMgr->SetSqlDataControlProviderEventListener(this);


   return true;
}

3)MapDataControl(Using a MapDataControl)
获取Tizen::App::MapDataControl 实例
String providerId(L"http://tizen.org/datacontrol/provider/example");
MapDataControl* pDc = AppManager::GetMapDataControlN(providerId);

调用GetValue()
String dataId(L"test");
String person(L"person");


pDc->GetValue(dataId, person, reqId);

实现Tizen::App::IMapDataControlResponseListener 
class ExampleMapDataControlResponseListener: 
   public Tizen::App::IMapDataControlResponseListener

实现OnMapDataGetValueResponseReceived()
void
ExampleMapDataControlResponseListener::
OnMapDataControlGetValueResponseReceived(RequestId reqId, 
                                         const String& providerId,
                                         const String& dataId,
                                         IList& resultValueList,
                                         bool providerResult,
                                         const String* pErrorMsg)
{
   int count = resultValueList.GetCount();
   for (int i = 0; i < count; i++)
   {
      String pPerson = static_cast< String* >(resultValueList.GetAt(i));
      AppLog("%dth person: %ls", i, pPerson->GetPointer());
   }


   return;
}

设置实例的回应监听
ExampleMapDataControlResponseListener* pResponseListener = null;
pResponseListener = new ExampleMapDataControlResponseListener();
pDc->SetMapDataControlResponseListener(pResponseListener);

delete pDc;

4)MapDataControl (Providing a MapDataControl)
在manifest中设置导出Data Control

实现Tizen::App::IMapDataControlProviderEventListener
class MyServiceApp:
   public Tizen::App::ServiceApp,
   public Tizen::App::IMapDataControlProviderEventListener

实现OnMapDataGetValueRequestReceived()

void
MyServiceApp::OnMapDataControlGetValueRequestReceived(RequestId reqId,
                                                      const Tizen::Base::String& providerId,
                                                      const Tizen::Base::String& dataId,
                                                      const Tizen::Base::String& key),
{
   Registry* pReg = null;
   String retValue;
   ArrayList* pResultValueList = null;
   String errorMsg;
   result r = E_SUCCESS;




   if (providerId.compareTo(L"http://tizen.org/datacontrol/provider/example") == 0)
   {
      if (dataId.compareTo(L"test") == 0)
      {
         String regPath(App::GetInstance()->GetAppRootPath() + L"data/test.ini");
         pReg = new Registry();
         r = pReg->Construct(regPath, false);


         r = pReg->GetValue(dataId, key, retValue);


         pResultValueList = new ArrayList();
         pResultValueList->Add(retValue);
         delete pReg;
      }
      else
      {
         errorMsg.Append(L"The data ID is invalid.");
      }
   }
   else
   {
      errorMsg.Append(L"The provider ID is invalid.");
   }
   r = DataControlProviderManager::GetInstance()->SendMapDataControlResult(reqId, 
                                                                           pResultValueList);


   if (pResultValueList)
   {
      pResultValueList->RemoveAll();
      delete pResultValueList;
   }


   return;
}

使用 Tizen::App::DataControlProviderManager 的 SetMapDataControlProviderListener()设置provider listener
bool
MyServiceApp::OnAppInitializing(Tizen::App::AppRegistry& appRegistry)
{
   result r = E_SUCCESS;
   DataControlProviderManager* pDcMgr = DataControlProviderManager::GetInstance();
   r = pDcMgr->SetMapDataControlProviderEventListener(this);


   return true;
}


Tizen泰泽开发从入门到精通 立即下载

相关推荐

Tizen泰泽系统开发流程.pdf

Tizen泰泽系统开发流程.pdf

Tizen安装和使用(三)-开发工具IDE使用

一 Tizen开发工具简介 Tizen SDK提供一整套的开发工具,为开发者在设备上开发基于HTTML5的Web程序服务,包括: (1)Tizen IDE   一个界面与Eclipse相似,从Eclipse移植过来的集成开发工具。开发者可以用它来创建Tizen工程,设计界面,编写程序代码,编译,运行和调试等。 (2)Tizen 模拟器 Tizen模拟器是基于QEMU的模拟器,开发者可以在

达闻东的专栏 1万+

Stata面板数据OLS回归分析实战指南

OLS回归作为计量经济学的核心分析方法,通过最小化残差平方和实现参数估计,广泛应用于经济学实证研究。其技术价值在于模型简洁、结果易于解释,特别适合处理面板数据中的复杂关系。在实际应用中,配合robust标准误能有效解决异方差问题,而固定效应模型则可控制个体特异性。本文以Stata软件为例,详细演示从数据导入、描述性统计到混合OLS和固定效应模型构建的全流程,重点解析面板数据特有的格式设定、模型选择标准以及结果呈现技巧,为经济学研究者提供可直接复用的分析框架。

weixin_29051811的博客 268

Tizen系统开发尝试,写一个简单的游戏

1.第一步下载官方sdk。官方开发者社区:点我 2.安装好,打开IDE,是基于Eclipse的。 sdk2.2官方提供native和web两种开发模式,在右上角随意切换,跟eclipse切换c++和java环境一样。 3.然后我们新建一个web project项目,我用phonegap创建没有成功,有成功的朋友留个言。 题外话,其实里面提供了大量的例子,是学习canvas画图的免费

Shidoudou 1998

ESP32-BLE学习1-建立简单的server

start 学习之前,我想尝试使用ESP32的demo建立一个简单的server与手机接进行最基本的数据通信。 这里有BLE的简单讲解BLE资料 因为BLE的连接是具有主从机特性的,就像SPI,USB一些请求只能由主机端发起,连接也需要主机端发起。所以手机要想连上ESP32,就得将ESP32设置为从机模式。 从资料上可以看到,从机端通过Notify通知主机,所以从机就是GATT Server。 在进行ESP32 的demo学习之前,得大体看下ESP32的蓝牙组成,ESP32支持经典蓝牙和低功耗蓝牙4.2,

Spark的博客 1841

解密QtIFW高级配置:用XML+JS打造品牌化安装界面(含动态水印/多语言技巧)

本文深入探讨了如何利用Qt Installer Framework(QtIFW)的高级配置功能,通过XML和JavaScript打造专业、品牌化的软件安装界面。文章详细解析了企业级项目目录结构设计、模块化配置文件编写、CSS样式表深度定制、动态水印实现以及智能多语言许可证管理等核心技巧,旨在帮助开发者超越基础打包,为Windows和Linux平台构建具有卓越用户体验的安装程序。

read5的博客 528

Tizen开发(4) - Tizen::App

App: 控制你的application main features: 1.  application fundamentals 提供application的基本功能,管理life-cycle和behavior。 2. System events You can handle systemevents through event handlers of the app class; S

随缘,随心 3606

YOLOv9改进策略目录 | 包含卷积、主干、检测头、注意力机制、Neck上百种创新机制

Hello,各位读者们好本专栏自开设两个月以来已经更新改进教程50余篇其中包含RepNCSPELAN4、主干、检测头、注意力机制、Neck多种结构上创新,也有损失函数和一些细节点上的创新。同时本人一些讲解视频和包含我所有创新的YOLOv9文档并不能在优快云上传(所有的创新点都经过我的测试是可用的,得到该文件之后大家可以随意组合使用),所以会建立群的形式在内上传我的文件和视频我也会在群内不定期和大家交流回答大家问题,同时定期会更新一些文章的创新点(经过我融合测试后的,先到先得)。

Snu77的博客 1万+

推荐开源项目:Tizen Docs —— 深入浅出的Tizen平台与应用开发文档库

推荐开源项目:Tizen Docs —— 深入浅出的Tizen平台与应用开发文档库 项目介绍 Tizen Docs 是一个由三星维护的开源项目,提供了全面且详细的Tizen平台和应用程序开发者文档。这个资源丰富的仓库包含了所有位于 ./docs/ 目录下的文件,并在Tizen Docs网站上进行托管,为开发者提供了一个一站式的学习和参考平台。 项目技术分析 Tizen Docs 使用了高效的Mar...

gitblog_00018的博客 507

2024年全国青少年信息素养大赛复赛真题(算法创意实践挑战赛C++试卷:带解析)

2024年全国青少年信息素养大赛复赛真题(算法创意实践挑战赛C++试卷:带解析)

王老师青少年编程 4784

用 ABAP 驾驭 OAuth 2.0:从 Authorization Code 到 SAML Bearer 的全栈落地指南

ABAP平台OAuth 2.0客户端开发实践 本文为SAP开发者详细解析ABAP平台内置OAuth 2.0客户端的使用方法,涵盖四种授权流的最佳实践: 授权流选择: Authorization Code:适用于用户交互场景 SAML 2.0 Bearer:适合已有SAML体系的企业 Client Credentials:系统间通信 Password Credentials:过渡方案(不推荐) 配置流程: 通过SE80定义Client Profile 使用SOAUTH2_CLIENT/OA2C_CONFIG配

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 309

tizen开发(1)- app卸载,启动与源码

以下都是在命令行中的操作: 1. 软件卸载,在模拟器中没有找到application management pkgcmd  -u -t -n . 使用模拟器中的shell,在/opt/usr/apps/下可以看到安装了哪些app。 在测试中发现只有app的ID目录和ID.appname的连接的app才可以被删除,否则删除出错。 i.e.  2. 软件启动 launch_app .

随缘,随心 1950

如何通过Davinci Configurator来新增一个BswM仲裁规则

详细介绍如何通过Davinci Configurator来新增一个BswM仲裁规则。

initiallizer的博客 770

如何将Samsungctl集成到Home Assistant智能家居系统:打造终极三星电视自动化控制

想要通过Home Assistant智能家居系统远程控制三星电视吗?Samsungctl是一个强大的Python库和命令行工具,专门用于通过TCP/IP连接远程控制三星电视。这篇完整指南将向您展示如何将Samsungctl集成到Home Assistant中,实现智能家居系统对三星电视的自动化控制。无论您是智能家居新手还是经验丰富的用户,本教程都将为您提供简单快速的集成方法。 ## 🚀 Sam

gitblog_00095的博客 430

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

哋它亢(Data Control)数据控制介绍

哋它亢拆解系列之数据控制。

2301_79993625的博客 888

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Tizen 快速开发入门

这一节主要介绍如何利用SDK和配置为了运行Tizen WebApp, 也可以被提供一个基本的你也将创建一个新项目的基本说明。 Tizen App的开发过程主要有下面这几步: 1、启动IDE,点击File >> New >> Tizen Web Project 2、输入工程名,并且选择需要的框架和存放位置 这就创建完成了, 这时候将会自动生成一些文件,

Brady的专栏 1678

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

tizen开发(3)

1. 3 different result reporting method types: 1) result SomeClass::DoSomething(..) Result of the method execution is passed as a return value. 2) SomeClass* SomeClass::DoSomething Returns a pointe

随缘,随心 959

Tizen开发

EFL动画相关: https://developer.tizen.org/zh-hans/documentation/guides/native-application/ui/event-and-effect/animation-and-effect-types?langredirect=1#evas_map_animation https://developer.tizen.org/zh...

wv112406的博客 486

Tizen开发 - Application Control

Tizen::App::AppControl 是tizen的标准机制,它可以调用其他应用export出的一些操作,比如call, media list, brower等等。同时你也可以导出你自己的特定的操作。 1. Using AppControls 使用Tizen::App::AppManager 来获得AppControl的实例,AppManager能发现需要调用的applicatio

随缘,随心 1553

Asp.net中有关数据库操作的定义类 DataControl

一、不管是Asp.net、C#还是其他开发语言,都必不可少的用到数据库方面的操作,执行数据库表的增、删、改、查,这就需要我们定义一个数据库操作类,方便程序中调用,简化操作。 1.下面定义一个DataControl类实现对数据库操作,  需要添加web.config配置文件,在下的设置要操作数据库的数据源如:<add key="ConnectionString"value="DataSourc

ningmeng2010的专栏 985

DataControl

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient; namespace DBAccess {     public class DataControl

764

《15天玩转WPF》—— Data / Control 模板的使用(一)

数据模板就是将数据显示的样子进行一个改变 同理,控件模板也是将控件的样子进行改变,下面我们来探索一下这些知识 . . . DataTemplate DataTemplate 常用的地方有 3 处,分别是: ContentControl 的 ContentTemplate属性 给 ContentControl 的内容穿衣服 ItemsControl 的 ItemTemplate...

浪子花梦 1394

Tizen开发 - 模拟器文件共享(windows)

1. 在模拟器管理器中将模拟器的FileSharing 设置为enabled,并设置好文件共享路径; 2. 打开创建好的模拟器; 3. 在命令行中输入sdb shell进入模拟器的命令行; C:\tizen-sdk\tools>sdb shell 4. 输入su进入root用户。 sh-4.1$ su 5. 然后输入 sh-4.1# mount -t cifs //10.0.

随缘,随心 1665
上一篇: Tizen开发 - Application Control
下一篇: Tizen开发 - Package Manage
骑行的蜗牛
博客等级 码龄21年 107粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值