几个有趣的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 ...
随机推荐
- Hyper-V2:向VM增加虚拟硬盘
使用Hyper-V创建VM,在VM成功安装OS之后,发现VM只有一个逻辑盘C,用于存储VM的操作系统.在产品环境中,需要向VM增加虚拟硬盘,便于将数据单独存储在不同的逻辑盘符中.在Hyper-V中,分 ...
- 使用python抓取婚恋网用户数据并用决策树生成自己择偶观
最近在看<机器学习实战>的时候萌生了一个想法,自己去网上爬一些数据按照书上的方法处理一下,不仅可以加深自己对书本的理解,顺便还可以在github拉拉人气.刚好在看决策树这一章,书里面的理论 ...
- 非关系型数据库(NoSql)
最近了解了一点非关系型数据库,刚刚接触,觉得这是一个很好的方向,对于大数据 方面的处理,非关系型数据库能起到至关重要的地位.这里我主要是整理了一些前辈的经验,仅供参考. 关系型数据库的特点 1.关系型 ...
- # PHP - 使用PHPMailer发邮件
PHPMailer支持多种邮件发送方式,使用起来非常简单 1.下载PHPMailer https://github.com/PHPMailer/PHPMailer,下载完成加压后, 把下边的两个文件复 ...
- 从Vue.js窥探前端行业
近年来前端开发趋势 1.旧浏览器逐渐淘汰,移动端需求增加: 旧浏览器主要指的是IE6-IE8,它是不支持ES5特性的:IE9+.chrome.sarafi.firefox对ES5是完全支持的,移动端大 ...
- 设计模式之结构类模式大PK
结构类模式大PK 结构类模式包括适配器模式.桥梁模式.组合模式.装饰模式.门面模式.享元模式和代理模式.之所以称其为结构类模式,是因 ...
- js刷新页面方法大全
如何实现刷新当前页面呢?借助js你将无所不能. 1,reload 方法,该方法强迫浏览器刷新当前页面.语法:location.reload([bForceGet]) 参数: bForceGet, ...
- iOS之绘制虚线
/* ** lineFrame: 虚线的 frame ** length: 虚线中短线的宽度 ** spacing: 虚线中短线之间的间距 ** co ...
- Android之使用Bundle进行IPC
一.Bundle进行IPC介绍 四大组件中的三大组件(Activity.Service.Receiver)都是支持在Intent中传递Bundle数据的,由于Bundle实现了Parcelable接口 ...
- git &github 快速入门
本节内容 github介绍 安装 仓库创建& 提交代码 代码回滚 工作区和暂存区 撤销修改 删除操作 远程仓库 分支管理 多人协作 github使用 忽略特殊文件.gitignore 1.gi ...