几个有趣的WEB设备API 前端提高B格必备(一)——电池状态&震动api
受到同事启发,突然发现了几个有趣又实用的web api,没想到前端还有这么多有趣的东西可以玩~~简直过分。
1.电池状态API
navigator.getBattery():这个api返回的是一个promise对象,会给出一个BatteryManager对象,对象中包含了:设备是否在充电,电量,以及还需充电时长和剩余时长等信息。
chrome浏览器、安卓的webview、iphone都可以使用。ie,safari不管是pc还是移动端都不支持。
调用方法如下:
navigator.getBattery().then(function(battery) {
console.log(battery)
});
console.log打出如下:

这里我们可以看到返回的对象中有
属性
charging:是否充电;
chargingTime:如果是在充电,还需充电时间;
dischargingTime:电池可用时间
level:剩余电量百分数(是个小数,显示的时候需要处理)
一些可以监听的事件:
onchargingchange:监听充电状态的改变
onchargingtimechange:监听充电时间的改变
ondischargingtimechange:监听电池可用时间的改变
onlevelchange:监听剩余电量百分数的改变。
例子:
if('getBattery' in navigator){
navigator.getBattery().then(function(battery) {
/*
判断是否在充电
*/
if(battery.charging){
$('.isbattery').show();
$('.notbattery').hide();
}else{
$('.isbattery').hide();
$('.notbattery').show();
}
/*
判断剩余电量
*/
if(battery.level>=1){
$('.batlevel').html('电池状态:<span class="perbattery_100">电量充沛 ^_^ 还有'+battery.level*100+'%</span>');
}else if(battery.level>=0.5){
$('.batlevel').html('电池状态:<span class="perbattery_50">电量还好 @_@ 还有'+battery.level*100+'%</span>');
}else{
$('.batlevel').html('电池状态:<span class="perbattery_30">啊!快没电了 *_* 还有'+battery.level*100+'%</span>');
}
/*
电池事件
*/
battery.addEventListener('chargingchange', function(){
alert("充电状态改变:"+ (battery.charging ? "开始充电" : "不充了"));
});
}else{
$('#batteryarea').text('您的浏览器不支持电池状态接口');
}
上面的代码可以判断出设备是否在充电,以及剩余的电量,移动端和pc端都可以使用。
首先判断了浏览器是否支持这个api;
然后调用navigator.getBattery()接口,由于返回的是promise对象,所以我们使用then()来获取返回的数据。
浏览器返回了BatteryManager对象,然后我们在then的函数内部利用返回的数据写逻辑。
效果如下:

全部例子:Demo (状态改变时有alert,请不要关闭浏览器的alert功能)
2.震动API
震动在很多游戏及一些h5宣传效果中得到应用,成为一个特色,比如在一些游戏中被地方攻击到的时候让手机产生震动,出现某个效果的时候产生震动,等等。
我们还可以控制它的震动频率。这个api就是:
window.navigator.vibrate(200)
浏览器支持情况:pc端 chrome和火狐支持,ie、opera、Safari不支持
移动端 Android和火狐是支持的,而苹果手机是不会震动的~~
调用方法:
window.navigator.vibrate([200, 100, 200]);
参数可以使一个数组,其中设定了震动的频率,震动200ms,然后休息100ms,然后再次震动200ms;
取消震动把参数设置为0即可window.navigator.vibrate(0);
这个没有可视化的例子,请在下面的demo中感受~
例子:Demo(会震动,请拿好易碎的安卓机~)
内容原创,转载请注明出处:
作者:Jess_喵
来源:http://www.cnblogs.com/zhangwenjiajessy/p/6240918.html
几个有趣的WEB设备API 前端提高B格必备(一)——电池状态&震动api的更多相关文章
- 几个有趣的WEB设备API(二)
浏览器和设备之间还有很多有趣的接口, 1.屏幕朝向接口 浏览器有两种方法来监听屏幕朝向,看是横屏还是竖屏. (1)使用css媒体查询的方法 /* 竖屏 */ @media screen and (or ...
- html5电池状态相关API
var battery = navigator.battery || navigator.webkitBattery || navigator.mozBattery || navigator.msBa ...
- 腾讯Web工程师的前端书单
2014年一月以来,自己接触web前端开发已经两年多了,记录一下自己前端学习路上看过的,以及道听途说的一些书,基本上按照由浅入深来介绍. JavaScript 入门 <JavaScript权威指 ...
- 推荐一份Web 工程师的前端书单
014年一月以来,自己接触web前端开发已经两年多了,记录一下自己前端学习路上看过的,以及道听途说的一些书,基本上按照由浅入深来介绍. JavaScript 入门 <JavaScript权威指南 ...
- Web jquery表格组件 JQGrid 的使用 - 4.JQGrid参数、ColModel API、事件及方法
系列索引 Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引 Web jquery表格组件 JQGrid 的使用 - 4.JQGrid参数.ColModel API.事件 ...
- web设计师和前端设计师的互动—前端工程师应该具备的三种思维
如果你是一个天才工程师(马上可以离开),可以独立完成一个很多事情,你可以是一个怪咖,因为我相信没有一个人不会不佩服你.但现实归现实,多数人都不是天才,而我们在职场上也不是单打独斗,我们需要团队合作,需 ...
- IOS 特定于设备的开发:检查设备接近度和电池状态
UIDevice类提供了一些API,使你能够跟踪设备的特征,包括电池的状态和接近度传感器.他们二者都以通知的形式提供更新,可以订阅他们,以便在有重要的更新时通知你的应用程序. 1>启动和禁用接近 ...
- 【HTML5】使用 JavaScript 来获取电池状态(Battery Status API)
HTML5 规范已经越来越成熟,可以让你访问更多来自设备的信息,其中包括最近提交的 "Battery Status API".如其名称所示,该 API 允许你通过 JavaScri ...
- 【SpringSecurity系列2】基于SpringSecurity实现前后端分离无状态Rest API的权限控制原理分析
源码传送门: https://github.com/ningzuoxin/zxning-springsecurity-demos/tree/master/01-springsecurity-state ...
随机推荐
- wepack+sass+vue 入门教程(一)
一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...
- HTML5 语义元素(二)文本内容
上一篇介绍的是关于页面结构方面的语义元素,本篇介绍文本内容方面,包含:<bdi>.<details>.<summary>.<mark>.<outp ...
- 学习ASP.NET Core,怎能不了解请求处理管道[2]: 服务器在管道中的“龙头”地位
ASP.NET Core管道由注册的服务器和一系列中间件构成.我们在上一篇中深入剖析了中间件,现在我们来了解一下服务器.服务器是ASP .NET Core管道的第一个节点,它负责完整请求的监听和接收, ...
- 通过重建Hosting系统理解HTTP请求在ASP.NET Core管道中的处理流程[下]:管道是如何构建起来的?
在<中篇>中,我们对管道的构成以及它对请求的处理流程进行了详细介绍,接下来我们需要了解的是这样一个管道是如何被构建起来的.总的来说,管道由一个服务器和一个HttpApplication构成 ...
- iOS 委托与文本输入(内容根据iOS编程编写)
文本框(UITextField) 本章节继续编辑 JXHypnoNerd .文件地址 . 首先我们继续编辑 JXHypnosisViewController.m 修改 loadView 方法,向 ...
- Linux基础介绍【第五篇】
linux权限位 Linux文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件属主权限.属组权限.其他用户权限. r:read可读权限,对应数字4: w:write可写权限,对应数字 ...
- ASP.NET Core Loves JavaScript
前言 在 ASP.NET 团队的 Github 的主页上,有这样一个开源项目叫:"JavaScriptsServices",那么 什么是 JavaScriptsServices 呢 ...
- CentOS Mono Nginx 部署 MVC4+WebApi
CentOS Mono Nginx 部署 MVC4+WebApi 经过几天的折磨,终于在CentOS上成功部署了MVC4+WebApi.Mono上的服务器推荐两种:Jexus(国产高人写的一款很牛的服 ...
- Linux学习日记-EF6的安装升级(三)
在vs2013中使用EF是5的但是如果想使用 “来自数据库据的Code First” 这个生成模板就会发现 它会提示你EF的版本太低请升级 下面就是解决办法: 安装实体框架6 在工具菜单中,点击NuG ...
- 【AutoMapper官方文档】DTO与Domin Model相互转换(中)
写在前面 AutoMapper目录: [AutoMapper官方文档]DTO与Domin Model相互转换(上) [AutoMapper官方文档]DTO与Domin Model相互转换(中) [Au ...