找回密码
 立即注册
查看: 3938|回复: 1

tizen泰泽应用程序API向导上

[复制链接]
发表于 2013-3-20 12:08:05 | 显示全部楼层 |阅读模式
应用程序API指南
概览

泰泽应用程序接口提供加载和管理其他应用程序的APIs。同时也提供检索已安装程序列表和明细如名称,图表路径,版本明细和程序标识的功能。通过使用这些APIs应用程序可以监听安装目录中相关程序变更事件。
要使用这些API,需要在config.xml文件中添加权限(看下面预备知识部分)。当应用程序被加载,会在泰泽系统中自动实例化此应用程序对象。tizen.application 对象是ApplicationObject接口的一个实例。
下图显示在应用程序窗口中API对象结构。

目录
加载应用程序
加载服务
提供服务
管理应用程序
关闭其他应用程序
检索已安装应用列表
检索应用程序信息
检索运行中的应用程序列表
检索应用程序上下文
检索通知
Demo

预备知识
应用程序API有不同的访问等级来检索应用程序信息和管理应用程序。为了给这些APIs授权,你必须在config.xml文件中开启不同的权限。打开config.xml文件,选择“Feature”页签,确保您的应用程序打开如下特性。
http://tizen.org/api/application : 允许访问API的所有特性
http://tizen.org/api/application.read : 允许获取应用程序信息
http://tizen.org/api/application.launch : 允许加载应用程序(包含获取应用程序信息权限)
http://tizen.org/api/application.kill : 允许结束应用程序(包含获取应用程序信息权限)
如果你要手动修改配置,仿照如下示例在config.xml中添加<feature>标记:
<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" version="2.0 Beta" viewmodes="fullscreen" id="http://yourdomain/App" >
<icon src="icon.png"/>
<content src="index.html"/>
<name>Application Name</name>
<feature name="http://tizen.org/api/application" required="true"/>
<feature name="http://tizen.org/api/application.read" required="true"/>
<feature name="http://tizen.org/api/application.launch" required="true"/>
<feature name="http://tizen.org/api/application.kill" required="true"/>
</widget>
提示:推荐使用泰泽IDE编辑config.xml文件。

加载应用程序
使用 tizen.application.launch()方法,你可以启动一个基于应用程序ID的特定程序。它的参数列表:
id - 唯一标示应用程序的ID号。
successCallback - 方法调用成功后回调
errorCallback - 方法调用失败后回调
argument - 为被加载应用传入的参数数组
在这个例子中,我们将要加载以org.tizen.calculator为应用程序ID号的计算器程序。
function onsuccess(){
console.log("Application has launched successfully");
}
tizen.application.launch("org.tizen.calculator", onsuccess);

加载服务
如果你需要一个应用程序提供一些功能,然后将需求传递到系统。系统内部解决这个请求并且加载符合标准的应用。
使用tizen.application.launchService()方法,你可以请求系统加载服务。它的参数列表如下:
service - 对象描述服务明细(如下)
id - 要加载的应用程序标识符
successCallback - 调用成功的回调函数
errorCallback - 调用失败的回调函数
replyCallback - 响应回调(ApplicationServiceDataArrayReplyCallback 类型)

应用程序服务
应用程序服务对象描述一个其他应用程序将要执行的动作,并且收集后来使用ApplicationServiceDataArrayReplyCallback接口的应用程序结果。一旦系统接收到加载应用程序服务对象的请求,系统找到合适的应用(或在应用选择窗口显示应用列表)并加载选中的应用。
一个应用服务对象包含如下主要信息:
Operation - 应用服务要执行的一个动作字符串。操作是发送启动请求的强制信息。您也可以定义自己的操作来描述你的应用程序特定的行动。
URI - URI 定义哪个动作要被执行
MIME - MIME类型定义URI的特定类型
ApplicationServiceData - 应用程序数据是为加载请求提供附加信息的键值对

ApplicationServiceDataArrayReplyCallback
如果请求的操作执行成功,onsuccess()方法就被调用。它接收到被加载的应用返回的数据。数据以ApplicationServiceData对象数组传递。每个对象包含两个属性:key 和 value。值属性事实上是值数组。在如下示例中onsuccess()方法打印所有接收到的数据。如果失败则调用onfail()方法。

加载请求类型
两种类型的加载请求:
明确加载
对于明确加载,你必须指定准确的应用程序ID作为launchService()方法的参数。
操作(operation) “http://tizen.org/appsvc/operation/default”被典型的使用来简单的不带其他参数(URI,MIME 类型)的加载其他应用程序。

var service = new tizen.ApplicationService("http://tizen.org/appsvc/operation/view", "http://www.tizen.org");
//Launch a service.
tizen.application.launchService(
    service,
    "org.tizen.browser",
    function(){console.log("launch service successed");},
    function(e){console.log("launch service failed. Reason :" + e.name);},
    null);
提示:在明确加载中仅有应用程序ID号决定哪个应用该被加载。

隐式加载
如果你不提供明确的应用ID号,你必须为系统提供足够的信息来确定那个可用的应用最符合当前的加载请求。
加载请求仅用三个参数。
Operation
URI scheme
MIME type
加载请求根据已安装的应用提供的服务描述来匹配所有指定信息,确定加载目标。
在下面的例子中我们请求一个能够提供在系统图片列表中"pick"图片功能的程序。
//Create a service
var service = new tizen.ApplicationService(
                "http://tizen.org/appsvc/operation/pick",
                null,
                "IMAGE/*");

var serviceReplyCB = {
    //callee now sends a reply
    onsuccess: function(reply){
        for (var num = 0; num < reply.data.length; num++){
                console.log("reply.data[" + num + "].key = " + reply.data[num].key);
                console.log("reply.data[" + num + "].value = " + reply.data[num].value);
        }
    }
    //Something went wrong
    onfail: function(){
        console.log("Launch service failed");
    }

//Launch a service
tizen.application.launchService(
                service,
                null,
                function(){console.log("launch service succeeded");},
                function(){console.log("launch service failed. Reason:" + e.name);},
                serviceReplyCB);
提示:如果你给应用ID号传递空值,系统选择最适合的应用或显示应用程序选择器。

提供服务
如果你希望你的应用提供更多的服务,你需要在config.xml文件中申明这些服务。
每个服务定义指定的operation,URI scheme 和MIME 类型。
<tizen:appservice src="[PAGE]" operation="[OPERATION]" scheme="[URI_SCHEME]" mime="[MIME_TYPE]" />
src - 处理请求的页面
operation - 操作的标识符
mime - 允许的MIME类型
scheme - 协议(“tel”, "http"),应用请求使用此参数描述操作对象。
提供服务的应用程序使用tizen.application.getAppService()方法经由服务请求应用获取数据。
这个方法返回一个传入到launchService()方法的ApplicationService对象引用。

一但提供服务的应用完成服务,它必须将控制权返还给请求的应用。为了返还控制权需要调用ApplicationServiceData对象的replyResult()方法(成功调用)或replyFailure()方法(失败)。输出/结果作为replyResult()方法的参数传递,此参数为包含ApplicationServiceData对象的数组。
请求应用的ApplicationServiceDataArrayReplyCallback.onsuccess()方法被调用。

在下面的例子中你将提供一个图像采集服务。
<tizen:appservice src="image_selection_service.html"
operation="http://tizen.org/appcontrol/operation/pick"
mime="image/*"/>

function getSelection(){
    //Let the user select an image, if there is no selection, return null.
    //Here, sample results are returned
    return 'file:///opt/media/Image/image6.jpg';
}

//This funcion is invoked once the html is loaded.
function onLoad(){
        var service = tizen.application.getAppService();
        if(service){
            console.log('Received request, service: ' + service.operation + ', URI:' + service.uri + ', MIME:' + service.mime);
            var imgPath = getSelection();
            if(imgPaht){
                var result = [new tizen.ApplicationServiceData("http://tizen.org/appcontrol/data/selected", [imgPath])];
                console.log('returning ' + imgPath);
                service.replyResult(result);
            }else{
                service.replyFailure();
            }
        }else{
            console.log("Received no service request");
        }

管理应用程序
应用程序API提供应用接口来控制你的应用程序生命周期。
退出应用程序
tizen.application.exit()方法用来退出当前应用程序。
tizen.application.exit();
隐藏应用程序
tizen.application.hide()方法用来隐藏应用程序到后台。
tizen.application.hide();
关闭其他应用程序
tizen.application.kill()方法用来停止某个运行着的应用程序。你必须提供将被停止的应用ID号。

function onKill(){
    console.log("Application terminated successfully");
}

function onsuccess(contextArray){
    for(var i = 0; i < contextArray.length; i++){
        if(contextArray.appId == "org.tizen.calculator"){
            tizen.application.kill(contextArray.id, onKill);
        }
    }
}

var contextArray = tizen.application.getAppsContext(onsuccess);

检索已安装应用列表
使用tizen.application.getAppsInfo()方法你可以得到设备上的已安装应用列表。这个方法接受两个参数,成功回调(success) 和失败回调(error)
成功回调接受一个ApplicationInfomation对象数组,每个元素包含如下参数:
id - 应用标识
name - 应用名称
iconPath - 应用图标路径
version - 应用版本
show - 通知应用是否被显示

function onError(err){
    console.log('Error occurred:' + err.message);
}

function onsuccess(applications){
    var appInfo;
    for(var i = 0; i < applications.length; i++){
        appInfo = applications;
        console.log('Application ID: ' + appInfo.id);
        console.log('Icon Path:' + appInfo.iconPath);
        console.log('Name:' + appInfo.name);
        console.log('Version:' + appInfo.version);
        console.log('Show:' + appInfo.show);
        console.log('');
    }
}

tizen.application.getAppsInfo(onsuccess, onError);

欢迎来到泰泽网:http://www.tizennet.com/ 泰泽论坛:http://bbs.tizennet.com/ 好没有内涵哦,快到设置中更改这个无聊的签名吧!
回复

使用道具 举报

发表于 2013-3-20 12:08:31 | 显示全部楼层
支持,赞一个
欢迎来到泰泽网:http://www.tizennet.com/ 泰泽论坛:http://bbs.tizennet.com/ 好没有内涵哦,快到设置中更改这个无聊的签名吧!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|泰泽应用|泰泽论坛|泰泽网|小黑屋|Archiver|手机版|泰泽邮箱|泰泽网 ( 蜀ICP备13024062号-1 )

GMT+8, 2024-4-27 13:07 , Processed in 0.071158 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表