资源描述
AppCan插件使用文档之uexDevice
uexDevice对象封装了用于调用设备硬件参数相关信息和硬件状态相关信息。
使用示例
以下示例代码说明了如何使用uexDevice对象的方法.
<!DOCTYPE html>
<html>
<head>
<title>AppCan API uexDevice</title>
<meta charset='utf-8'>
<script>
function $$(id){
return document.getElementById(id);
}
function isDefine(para) {
if (typeof para == 'undefined' || para == '' || para == null || para == undefined) return false;
else return true;
}
window.uexOnload = function(type){
if(!type){
/**
* 屏幕旋转监听方法
* @param {Object} mode
*/
uexDevice.onOrientationChange = function(mode){
if(mode == 1){
$$('data').innerHTML ='正竖屏';
}else if(mode == 2){
$$('data').innerHTML ='左横屏';
}else if(mode == 4){
$$('data').innerHTML ='倒竖屏';
}else if(mode == 8){
$$('data').innerHTML ='右横屏';
}
}
uexWidgetOne.cbError=function(opCode,errorCode,errorInfo){
console.log(errorInfo);
}
}
/**
* 设备信息的回调方法
* @param {Object} opCode
* @param {Object} dataType
* @param {Object} data
*/
uexDevice.cbGetInfo=function (opCode,dataType,data){
var device = eval('('+data+')');
var cpuFrequency=device.cpu;
if(isDefine(cpuFrequency)){
console.log('CPU信息:' + cpuFrequency);
}
var osVersion=device.os;
if(isDefine(osVersion)){
console.log('系统版本信息:' + osVersion);
}
var manufacturer=device.manufacturer;
if(isDefine(manufacturer)){
console.log('厂商信息:' + manufacturer);
}
var keyboard= device.keyboard;
if(isDefine(keyboard)){
console.log('是否支持键盘:' + keyboard);//1:支持;0:不支持
}
var bluetooth=device.blueTooth;
if(isDefine(bluetooth)){
console.log('是否支持蓝牙:' + bluetooth);//1:支持;0:不支持
}
var wifi=device.wifi;
if(isDefine(wifi)){
console.log('是否支持WIFI:' + wifi);//1:支持;0:不支持
}
var camera=device.camera;
if(isDefine(camera)){
console.log('是否支持摄像头:' + camera);//1:支持;0:不支持
}
var gps=device.gps;
if(isDefine(gps)){
console.log('是否支持GPS:' + gps);//1:支持;0:不支持
}
var gprs=device.gprs;
if(isDefine(gprs)){
console.log('是否支持GPRS:' + gprs);//1:支持;0:不支持
}
var touch=device.touch;
if(isDefine(touch)){
console.log('是否支持触屏:' + touch);//1:支持;0:不支持
}
var imei=device.imei;
if(isDefine(imei)){
console.log('IMEI号:' + imei);
}
var deviceToken = device.deviceToken;
if(isDefine(deviceToken)){
//没有时返回空字符串。Android的deviceToken是softToken。
//带推送证书的ios证书打包的ios安装包可获取
console.log('deviceToken值:' + deviceToken);
}else{
console.log('未获得deviceToken值')
}
var deviceType=device.deviceType ;
if(isDefine(deviceType)){//isAndroid = (/android/gi).test(navigator.appVersion)
if(deviceType==0){
//也可用此法判断var isIphone = (/iphone/gi).test(navigator.appVersion)&&!(/iPod/gi).test(navigator.appVersion)
console.log('设备类型:IPhone');
}else if(deviceType==1){
//isIpad = (/ipad/gi).test(navigator.appVersion)
console.log('设备类型:IPad');
}else if(deviceType==2){
//isIPodTouch = (/iPod/gi).test(navigator.appVersion),
console.log('设备类型:IPodTouch');
}
}
var connectStatus=device.connectStatus;
if(isDefine(connectStatus)){
if(connectStatus==-1){
console.log('网络状态:网络不可用');
}else if(connectStatus==0){
console.log('网络状态:WIFI网络');
}else if(connectStatus==1){
console.log('网络状态:3G网络');
}else if(connectStatus==2){
console.log('网络状态:2G网络');
}
}
var restDiskSize = device.restDiskSize;
if(isDefine(restDiskSize)){
console.log('磁盘剩余空间:'+restDiskSize+'B');//单位Byte
}
var operatorName=device.mobileOperatorName;
if(isDefine(operatorName)){
console.log('移动网络运营商:'+operatorName);
}else{
console.log('为获取到移动网络运营商');//ipod、ipad wifi版
}
var macAddress=device.macAddress;
if(isDefine(macAddress)){
console.log('mac地址:'+macAddress);//当前设备的WIFI mac地址
}
var model=device.model;
if(isDefine(model)){
console.log('硬件型号:'+model);
}
}
}
/**
* 设备震动
* 注意:ipod、ipad不支持震动
*/
function startVibrate(){
var time = $$('time').value;
if(!isDefine(time)){
console.log('请填入震动时间');
return ;
}
uexDevice.vibrate(time);
}
</script>
</head>
<body>
<span>设备</span><br/>
<span>屏幕方向切换</span><br/><span>当前的屏幕方向为:<em id='data'></em></span><br/>
<span>震动</span><br/>
<span>输入震动持续时间(毫秒为单位):</span> <input type='text'id='time' value='500'/><br/>
<input type='button' value='震动'onclick='startVibrate();'><br/>
<input type='button' value='停止震动'onclick='uexDevice.cancelVibrate();'><br/>
<span>设备信息</span><br/>
<span>1.获取CPU信息:</span>
<input type='button'value='CPU信息' onclick="uexDevice.getInfo('0');"><br/>
<span>2.获取系统版本:</span>
<input type='button' value='系统版本'onclick="uexDevice.getInfo('1');"><br/>
<span>3.获取厂商信息:</span>
<input type='button' value='厂商信息'onclick="uexDevice.getInfo('2');"><br/>
<span>4.获取键盘信息:</span>
<input type='button' value='键盘信息'onclick="uexDevice.getInfo('3');"><br/>
<span>5.获取蓝牙信息:</span>
<input type='button' value='蓝牙信息'onclick="uexDevice.getInfo('4');"><br/>
<span>6.获取WIFI信息:</span>
<input type='button'value='WIFI信息' onclick="uexDevice.getInfo('5');"><br/>
<span>7.获取摄像头信息:</span>
<input type='button'value='摄像头信息' onclick="uexDevice.getInfo('6');"><br/>
<span>8.获取GPS信息:</span>
<input type='button'value='GPS信息' onclick="uexDevice.getInfo('7');"><br/>
<span>9.获取GPRS信息:</span>
<input type='button'value='GPRS信息' onclick="uexDevice.getInfo('8');"><br/>
<span>10.获取触屏信息:</span>
<input type='button' value='触屏信息'onclick="uexDevice.getInfo('9');"><br/>
<span>11.获取IMEI信息:</span>
<input type='button'value='IMEI信息' onclick="uexDevice.getInfo('10');"><br/>
<span>12.获取DeviceToken:</span>
<input type='button'value='DeviceToken' onclick="uexDevice.getInfo('11');"><br/>
<span>13.获取ios设备类型:</span>
<input type='button'value='ios设备类型' onclick="uexDevice.getInfo('12');"><br/>
<span>14.获取网络状态:</span>
<input type='button'value='网络状态' onclick="uexDevice.getInfo('13');"><br/>
<span>15.获取磁盘剩余空间:</span>
<input type='button'value='磁盘空间' onclick="uexDevice.getInfo('14');"><br/>
<span>16.获取移动网络运营商的名称:</span>
<input type='button'value='运营商名称' onclick="uexDevice.getInfo('15');"><br/>
<span>17.获取WIFI mac地址:</span>
<input type='button'value='mac地址' onclick="uexDevice.getInfo('16');"><br/>
<span>18.获取硬件型号:</span>
<input type='button'value='型号' onclick="uexDevice.getInfo('17');"><br/>
</body>
</html>
Methods
1、vibrate(inMilliseconds)
启动设备震动器震动一定时间,单位为毫秒数。
备注,ios平台中,ipad,ipod不支持震动,在使用之前需要判断是否是iphone
Parameters:
inMilliseconds
震动毫秒数。
2、cancelVibrate()
取消震动。
3、getInfo(inInfoID)
根据inInfoID获取设备信息或状态。
Parameters
inInfoID
设备信息ID。
inInfoID值
说明
返回值
0
描述CPU频率的字符串,eg:“1024MHZ”。IOS平台获取不到时,返回“0”
{"cpu":"xxx"}
1
描述系统版本的字符串,eg:“Android2.3.4”
{"os":"xxx"}
2
标书设备制造商的字符串eg:“htc”
{"manufacturer":"xxx"}
3
代表是否支持键盘的字符串0(不支持)或1(支持)
{"keyboard":1}
4
代表是否支持蓝牙的字符串0(不支持)或1(支持)
当设备有蓝牙功能时,即使蓝牙关闭,返回信息仍然是支持蓝牙,即值为字符串1。
在IOS上的蓝牙功能只支持同一应用间使用,和普遍人们理解的不同,视为不支持。
{"blueTooth":1}
5
代表是否支持WIFI的字符串0(不支持)或1(支持)
当设备有wifi功能时,即使wifi关闭,返回信息仍然是支持wifi,即值为字符串1。
{"wifi":1}
6
代表是否支持摄像头的字符串0(不支持)或1(支持)
{"camera":1}
7
代表是否支持GPS的字符串0(不支持)或1(支持)
当设备有gps功能时,即使gps关闭,返回信息仍然是支持gps,即值为字符串1。
{"gps":1}
8
代表当前移动网络数据连接是否可用(不含WIFI)的字符串0(不可用)或1(可用)
{"gprs":1}
9
代表设备是否支持触屏的字符串0(不支持)或1 (支持)
{"touch":1}
10
代表此设备IMEI(国际移动设备唯一标识码)号的15位字符串,eg:“356357046156042”。
在IOS上,获得不到imei时可获得UUID,eg:“dea7f0e2f8c7dfd0c07555b96aff2d342587505b”
{"imei":"xxx"}
11
推送服务器需要的一个代表此设备的唯一令牌的字符串。
eg:“98d264a3 77689b33 6f1215e6 264ab0c5 55f45b4a ab61e6ff f667883a ef829ccb”,没有时返回空字符串。
Android的deviceToken是softToken。
{"deviceToken":"xxx"}
12
设备类型,用来判断当前的设备是phone ouch或者pad(IOS专用,类型值参考常量表IOS设备类型)
{"deviceType":"0"}
13
当前联网的方式(类型值参考常量表网络状态类型)
{"connectStatus":"-1"}
14
当前设备剩余的磁盘空间大小的字符串,eg:“12345678”单位:字节
{"restDiskSize":"10000"}
15
当前移动网络运营商的名称,比如”中国联通”,如果获取不到返回空字符串
{"mobileOperatorName":"xxx"}
16
表示当前设备的WIFI mac地址 ,可作为设备的唯一标识,IMEI可能在某些不具备移动通讯的android平板或MP4上获取不到,但是android系统设备一般都会具有WIFI功能,所以mac地址作为设备唯一标识比IMEI更可靠
{"macAddress":"xxx"}
17
当前设备的型号名称,如“Galaxy Nexus”
{"model":"xxx"}
4、cbGetInfo(opId,dataType,data)
uexDevice.getInfo的回调函数,返回代表设备信息或状态的字符串
Parameters
opId
操作ID,在此函数中不起作用,可忽略。
dataType
返回数据的数据类型为uex.cJSON(值为1)
data
返回的json格式数据,如:{"typename":"typevalue"}
5、onOrientationChange(inOrientationValue)
屏幕旋转监听方法。
Parameters
inOrientationValue
屏幕的方向。Int ;1:正竖屏;2:左横屏;4:倒竖屏;8:右横屏
<script>
window.uexOnload = function(type){
if(!type){
/**
* 屏幕旋转监听方法
* @param {Object} mode
*/
uexDevice.onOrientationChange = function(mode){
if(mode == 1){
$$('data').innerHTML ='正竖屏';
}else if(mode == 2){
$$('data').innerHTML ='左横屏';
}else if(mode == 4){
$$('data').innerHTML ='倒竖屏';
}else if(mode == 8){
$$('data').innerHTML ='右横屏';
}
}
}
</script>
展开阅读全文