PhoneGap可以获取设备的相关信息。并且,在事件处理和其他操作中,会经常用到的基本操作就是使用系统提示,例如警告框、提示框、震动、蜂鸣等。
##获取设备的基本信息
设备信息插件的完全限定名是org.apache.cordova.device
,可以使用下列命令进行安装
cordova plugin add org.apache.cordova.device
一旦安装了插件,就可以使用该插件公开的几个属性。这几个属性使用window.device
对象可以访问,这些属性包含了设备硬件信息和软件相关信息:
device.cordova
: 获取Cordova版本号-
device.platform
: 获取设备的操作系统名称。例如”Android”、”BlackBerry 10”、”iOS”、”WinCE”、”Tizen”等。// - "Android" // - "BlackBerry 10" // - Browser: returns "MacIntel" on Mac // returns "Win32" on Windows // - "iOS" // - "WinCE" // - "Tizen" var devicePlatform = device.platform;
-
device.uuid
: 获取设备的通用唯一识别码 (Universally Unique Identifier)// Android: Returns a random 64-bit integer (as a string, again!) // The integer is generated on the device's first boot // // BlackBerry: Returns the PIN number of the device // This is a nine-digit unique integer (as a string, though!) // // iPhone: (Paraphrased from the UIDevice Class documentation) // Returns a string of hash values created from multiple hardware identifies. // It is guaranteed to be unique for every device and can't be tied // to the user account. // Windows Phone 7 : Returns a hash of device+current user, // if the user is not defined, a guid is generated and will persist until the app is uninstalled // Tizen: returns the device IMEI (International Mobile Equipment Identity or IMEI is a number // unique to every GSM and UMTS mobile phone. var deviceID = device.uuid;
-
device.version
: 返回操作系统版本号// Android: Froyo OS would return "2.2" // Eclair OS would return "2.1", "2.0.1", or "2.0" // Version can also return update level "2.1-update1" // // BlackBerry: Torch 9800 using OS 6.0 would return "6.0.0.600" // // Browser: Returns version number for the browser // // iPhone: iOS 3.2 returns "3.2" // // Windows Phone 7: returns current OS version number, ex. on Mango returns 7.10.7720 // Tizen: returns "TIZEN_20120425_2" var deviceVersion = device.version;
-
device.model
: 返回设备的型号名称,其内容一般上是设备生产商所设。即使是同一款产品,如果其系统版本号不同,返回的device.name
的内容也可能不一样。// Android: Nexus One returns "Passion" (Nexus One code name) // Motorola Droid returns "voles" // BlackBerry: Torch 9800 returns "9800" // Browser: Google Chrome returns "Chrome" // Safari returns "Safari" // iOS: for the iPad Mini, returns iPad2,5; iPhone 5 is iPhone 5,1. See http://theiphonewiki.com/wiki/index.php?title=Models // var model = device.model;
##系统消息提示对话框
系统消息提示对话框插件的完全限定名是org.apache.cordova.dialogs
,可以使用下列命令进行安装
cordova plugin add org.apache.cordova.dialogs
一旦安装了插件,就可以使用该插件公开的几个方法,他们都可以使用window.navigator
对象访问。
navigator.notification.alert()
: 弹出对话框navigator.notification.confirm()
: 弹出确认对话框navigator.notification.prompt()
: 提示输入消息对话框
这几个方法与JavaScript内建的同名方法有些不同,它们调用的是系统内置的对话框。
###提示警告框
notification.alert()
方法弹出一个可以定制的警告或者对话窗口,语法格式如下:
navigator.notification.alert(message, alertCallback, [title], [buttonName])
-
message
: 对话框信息. (String) -
alertCallback
: 定义当警告对话框关闭的时候被调用的回调函数. (Function) -
title
: 对话框标题. (String) (可选, 默认为Alert
) -
buttonName
: 按钮标签. (String) (可选, 默认为OK
)
事例:
function alertDismissed() {
// do something
}
navigator.notification.alert(
'You are the winner!', // message
alertDismissed, // callback
'Game Over', // title
'Done' // buttonName
);
###确认对话框
notification.confirm()
方法弹出一个可以定制的确认对话框,语法格式如下:
navigator.notification.confirm(message, confirmCallback, [title], [buttonLabels])
-
message
: 对话框信息. (String) -
confirmCallback
: 定义一个回调函数,按下按钮后触发此回调函数。该回调函数的参数为按下按钮的索引,也就是参数buttonLabels
所定义的标签顺序。注意索引是从1开始的。 (Function) -
title
: 对话框标题. (String) (可选, 默认为Confirm
) -
buttonLabels
: 定义按钮标签,如果声明多个按钮,那么该参数的值是以逗号为分隔符的字符串,顺序用作按钮标签。Android最多支持3个按钮,并且Android3.0之后序号按相反的顺序排列。 (Array) (可选, 默认为[OK,Cancel
])
举个栗子:
function onConfirm(buttonIndex) {
alert('You selected button ' + buttonIndex);
}
navigator.notification.confirm(
'You are the winner!', // message
onConfirm, // callback to invoke with index of button pressed
'Game Over', // title
['Restart','Exit'] // buttonLabels
);
###提示输入消息对话框
有时候需要用户输入一些消息来进行判断,而不仅仅是‘是’和‘否’,使用notification.prompt()
方法可以实现这个目的。语法格式如下:
navigator.notification.prompt(message, promptCallback, [title], [buttonLabels], [defaultText])
-
message
: 对话框信息. (String) promptCallback
: 定义一个回调函数,按下按钮后触发此回调函数。该回调函数的参数是一个Object对象,其中包含两个属性: (Function)- 属性
buttonIndex
为按下按钮的索引,也就是参数buttonLabels
所定义的标签顺序,注意索引是从1开始的; - 属性
input1
是输入文本的内容。
- 属性
-
title
: 对话框标题. (String) (可选, 默认为Prompt
) -
buttonLabels
: 定义按钮标签,如果声明多个按钮,那么该参数的值是以逗号为分隔符的字符串,顺序用作按钮标签。Android最多支持3个按钮,并且Android3.0之后序号按相反的顺序排列。 (Array) (可选, 默认为[OK,Cancel
]) defaultText
: 在输入框中显示预置的信息。 (String) (可选, 如果不定义,文本框中默认为空白)
举个栗子:
function onPrompt(results) {
alert("You selected button number " + results.buttonIndex + " and entered " + results.input1);
}
navigator.notification.prompt(
'Please enter your name', // message
onPrompt, // callback to invoke
'Registration', // title
['Ok','Exit'], // buttonLabels
'Jane Doe' // defaultText
);
##系统震动和蜂鸣提示
这个插件与W3C震动规范对齐。
系统震动和蜂鸣提示插件的完全限定名是org.apache.cordova.vibration
,可以使用下列命令进行安装
cordova plugin add org.apache.cordova.vibration
一旦安装了插件,就可以使用该插件公开的几个方法,他们都可以使用window.navigator
对象访问。
navigator.notification.beep()
: 弹出对话框navigator.notification.vibrate()
: 弹出确认对话框
###触发设备蜂鸣
使用notification.beep()
方法可以使设备发出beep声。语法格式如下:
navigator.notification.beep(times);
times
: 定义beep声重复的次数. (Number)
举个栗子:
// Beep twice!
navigator.notification.beep(2);
####注意事项
- Android系统会播放在“Settings/Display & Sound”面板内指定的通知铃声(Notification ringtone).
- iOS将忽略控制发声的次数 iOS没有原生的Beep API,PhoneGap通过使用多媒体API播放音频文件来实现播放beep声。因此,用户必须提供一个beep声音频文件,并且此文件的播放时长必须少于30s,该文件位于 www 根目录下,而且只能命名为 beep.wav 。
- PhoneGap最新API把该方法归纳到上面设备基本信息上。
###触发设备震动
使用navigator.vibrate()
方法可以使设备在指定时长震动。语法格式如下:
navigator.vibrate(time)
or
navigator.vibrate([time])
times
: 定义以毫秒为时长来震动设备,1000毫秒为1秒. (Number)
举个栗子:
// Vibrate for 3 seconds
navigator.vibrate(3000);
// Vibrate for 3 seconds
navigator.vibrate([3000]);
相关文章:
PhoneGap入门教程(6) - 设备信息和系统提示
参考资料: