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

Tizen开发:泰泽系统信息API向导

[复制链接]
发表于 2013-3-20 12:17:21 | 显示全部楼层 |阅读模式
泰泽系统信息API提供获取设备状态的接口和方法通过请求选中的系统属性。系统信息API可以使你访问大量设备信息,例如电池水平,可用设备存储,版本号,型号,网络等等。系统信息API允许你为选中设备的值改变设置异步消息。要应用这个API,添加请求权限到config.xml文件(看下面预备知识节)。当应用程序加载,一个系统信息对象在泰泽对象中自动初始化。tizen.systeminfo 对象是能够提供访问系统信息的接口(SystemInfo)的实例。
下图 SystemInfo 显示此API对象在应用窗体中结构。
系统信息对象使用SystemInfo APIs,你的应用可以
  • 决定支持的属性
  • 检索设备属性
  • 描述系统信息
    • 添加事件监听
    • 移除事件监听
    • 为事件监听设置选项



预备知识
系统信息API有不同的访问等级来处理系统和敏感数据。你可以在config.xml文件中打开权限。
  • http://tizen.org/api/systeminfo: Privilege to allow access to all features of the SystemInfo API

给予系统信息API特权访问所有特性


推荐使用Tizen开发环境编辑config.xml文件。

决定支持属性

泰泽系统信息API提供SystemInfoObject接口允许你获得系统属性的信息。你可以使用系统信息API访问设备各种细节的状态。

如果你的应用需要访问设备特殊信息,你必须通过isSupported方法检查支持的属性。这个方法使用属性名作为参数。如果属性支持则返回真。
var isSupported = tizen.systeminfo.isSupported("Cpu");if (isSupported) {
    console
.log("Cpu property is supported.");} else {
    console
.log("Cpu property is not supported.");}

The valid values for PropertyId are:

  • Power
  • Cpu
  • Storage
  • Display
  • Device
  • WifiNetwork
  • CellularNetwork


检索设备属性

设备属性提供信息关于可用资源完成特殊任务或服务成功。
为了访问internet,你需要知道设备可被访问的通信网络的明细。你可以通过检查各属性状态来判断。

你可以通过使用getPropertyValue方法检查属性的当前状态,这个方法接受3个参数:属性名,成功回调,失败回调。使用这个方法,你可以检查设备支持的所有属性的当前状态。
SystemInfoProperty
一个共同的抽象接口的支持系统的信息对象。
SystemInfoPower
明白可用电量对于需要大量电能的应用相当重要。你可以决定应用是否加载或警告用户设备低电量。

使用 SystemInfoPower,你可以判断可用电量,并且判断是否充电。
function onSuccessCallback(power) {
     alert("Power Level: " + power.level + "\nIs Charging: " + power.isCharging);


}


function onErrorCallback(error) {
     alert("Not supported: " + error.message);
}

tizen.systeminfo.getPropertyValue("Power", onSuccessCallback, onErrorCallback);



设备可用电量水平是按比例从0到1。0表示设备没有电,1表示设备电量全满。如果设立临界值,如果设备电力水平超过临界值就出发消息。
SystemInfoCpu
CPU负荷是衡量一个应用程序效率的重要指标。使用SystemInfoCup,你可以判断系统当前CPU负荷。
function onSuccessCallback(cpu) {
     alert("The Load on device is " + cpu.load);
}



function onErrorCallback(error) {
     alert("Not supported: " + error.message);
}

tizen.systeminfo.getPropertyValue("Cpu", onSuccessCallback, onErrorCallback);


CPU使用率最小或无负载用0.0表示,最大负载用1.0表示。
SystemInfoStorage
一个设备可能有多个连接到它的存储设备。因此你需要给用户提供选择数据存储设备的选项。

SystemInfoStorage接口返回一个SystemInfoStorageUnit对象的集合并且每个存储单元代表例如容量,可用空间,类型和是否可卸载的明细。
function singleStorageInfo(device) {
     alert("Type: " + device.type + "    Total Capacity: " + device. capacity+ "\nFree: " + device.availableCapacity + "isRemovable: " + device.isRemovable);
}



function onErrorCallback(error) {
     alert("Not supported: " + error.message);
}



function onSuccessCallback(storage) {
     alert("Number of storage devices connected " + storage.units.length);


var i = 0;

//for(i=0; i < storage.units.length; i++)

//{
        alert
("Type: " + storage.units.type);
        singleStorageInfo
(storage.units);

//}

}

tizen.systeminfo.getPropertyValue("Storage", onSuccessCallback, onErrorCallback);


SystemInfoDisplay
你可能想要知道设备的分辨率在运行时布局你的应用。使用SystemInfoDisplay,你可以确定显示的分辨率,实际大小,亮度。
function onSuccessCallback(display) {
     alert("Resolution{w, h}: " + "{" + display.resolutionWidth + ", " + display.resolutionHeight

+ "}\nDPI{w, h}: " + "{" + display.dotsPerInchWidth + ", " + display. dotsPerInchHeight

+ "}\nPhysical dimensions{w, h}: " + "{" + display.physicalWidth + ", " + display. physicalHeight

+ "}\nBrightness: " + display.brightness);

}


function onErrorCallback(error) {
     alert
("Not supported: " + error.message);

}
tizen.systeminfo.getPropertyValue("Display", onSuccessCallback, onErrorCallback);


SystemInfoDevice
每个设备包含它的唯一信息。使用SystemInfoDevice,你可以访问手机串号,型号,版本和供应商。
function onSuccessCallback(device) {
     alert
("IMEI: " + device.imei + "    Model: " + device.model + "\nVersion: " + device. version

+ "    Vendor: " + device.vendor);

}


function onErrorCallback(error) {
     alert
("Not supported: " + error.message);

}

tizen.systeminfo.getPropertyValue("Device", onSuccessCallback, onErrorCallback);


SystemInfoWifiNetwork
你可能想使你的应用访问的Wi-Fi网络。通用应用程序访问网络,你需要一些网络细节。

使用SystemInfoWifiNetwork,你可以判定网路是否可用,SSID,IP地址和型号强度。
function onSuccessCallback(wifi) {
     alert
("Status: " + wifi.status + "    SSID: " + wifi. ssid

+ "\nIP Address: " + wifi.ipAddress + "    Signal Strength: " + wifi.signalStrength);

}


function onErrorCallback(error) {
     alert
("Not supported: " + error.message);

}
tizen.systeminfo.getPropertyValue("WifiNetwork", onSuccessCallback, onErrorCallback);



Wi-Fi网络的SSID是网络设备商或拥有者制定的一个开放名称。SSID是32位数字字母键,唯一标示一个网络。这个键确保使用同样键或SSID的设备彼此通讯。
SystemInfoCellularNetwork
大多数移动设备是连接到蜂窝网络,能够接通并打电话。

通过你的应用访问网络,你需要网络细节信息。使用SystemInfoCellualrNetwork,你可以确定网络状态,接入点,IP地址,国家代码,基站ID,地区码和设备是否允许漫游。
function onSuccessCallback(cellular) {
     alert
("Status: " + cellular.status + "    Access Point: " + cellular. apn

+ "\nIP Address: " + cellular.ipAddress + "    Country code: " + cellular. mcc

+ "\nNetwork Code: " + cellular.mnc + "    Cell ID: " + cellular. cellId

+ "\nLocation Area code: " + cellular.lac + "    Is Roaming: " + cellular.isRoaming);

}


function onErrorCallback(error) {
     alert
("Not supported: " + error.message);

}
tizen.systeminfo.getPropertyValue("CellularNetwork", onSuccessCallback, onErrorCallback);



跟踪系统信息

设备属性状态改变可能影响你的应用。因此检查属性更新对你的应用非常重要。

添加事件监听

你可以通过使用addPropertyValueChangeListener方法来预定系统属性值改变的通知。

addPropertyValueChangeListener方法携带4个参数。前3个是属性名,成功回调,失败回调。最后一个是可选的代表SystemInfoOptions 类型的对象,包含获取请求的各种选项。
function onSuccessCallback(power) {
     console
.log("Low battery:  " + power.level);

}


function onErrorCallback(error) {
     console
.log("An error occurred " + error.message);

}

tizen.systeminfo.addPropertyValueChangeListener("Power", onSuccessCallback,

onErrorCallback
, {lowThreshold : 0.2});


每个tizen.systeminfo.addPropertyValueChangeListener()方法返回的标识可被分别存储,以便取消订阅。

移除监听

你可以使用removePropertyValueChangeListener方法移除事件订阅。
var id = null;

function onSuccessCallback(power) {
    console
.log("New value for Power level is " + power.level);

if (id != null) // After receiving the first notification, we clear it
        tizen
.systeminfo.removePropertyValueChangeListener(id);

}

id = tizen.systeminfo.addPropertyValueChangeListener("Power", onSuccessCallback);



设定事件监听选项

你可能想要得到仅仅是请求的属性值超过某个特定范围的通知。SystemInfoOptions提供得到请求属性的选项。你可以为属性设置设置阀值,因此消息发送只在超过阀值时触发。

SystemInfoOptions 包含3个特性,highThreshold,lowThreshold和timeout。如果值变得比lowThreshold小或比highThreshold大,成功回调函数触发。如果几毫秒过去,方法addPropertyValueChangeListener 调用超时,操作会被中断。
var id = null;

function onSuccessCallback(power) {
     alert
("Battery Low! Level = " + power.level);

if (id != null) // After receiving the first notification, we clear it
        tizen
.systeminfo.removePropertyValueChangeListener(id);

}


function onErrorCallback(error) {
     console
.log("An error occurred " + error.message);

}

id = tizen.systeminfo.addPropertyValueChangeListener("Power", onSuccessCallback,

onErrorCallback
, {lowThreshold : 0.2});

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

使用道具 举报

发表于 2013-3-20 12:17:45 | 显示全部楼层
看起来好像不错的样子
欢迎来到泰泽网:http://www.tizennet.com/ 泰泽论坛:http://bbs.tizennet.com/ 好没有内涵哦,快到设置中更改这个无聊的签名吧!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 12:57 , Processed in 0.048303 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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