几个有趣的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 ...
随机推荐
- favicon.ioc使用以及注意事项
1.效果 2.使用引入方法 2.1 注意事项:(把图标命名为favicon.ico,并且放在根目录下,同时使用Link标签,多重保险) 浏览器默认使用根目录下的favicon.ico 图标(如果你并没 ...
- Emoji选项列表
一.需要的前提文件 从网上下载Emoji的表情包,当然是png的图片,因为WPF不支持彩色的Emoji,所以,做列表的时候,需要用图片. 随着压缩包一起的还有一个Emoji.xml文件,文件的层级结构 ...
- webapi - 模型验证
本次要和大家分享的是webapi的模型验证,讲解的内容可能不单单是做验证,但都是围绕模型来说明的:首先来吐槽下,今天下午老板为自己买了套新办公家具,看起来挺好说明老板有钱,不好的是我们干技术的又成了搬 ...
- 前端制作动画的几种方式(css3,js)
制作动态的网页是是前端工程师必备的技能,很好的实现动画能够极大的提高用户体验,增强交互效果,那么动画有多少实现方式,一直对此有选择恐惧症的我就总结一下,以便在开发的时候选择最好的实现方式. 1.css ...
- Log4net - 项目使用的一个简单Demo
参考页面: http://www.yuanjiaocheng.net/entity/entitytypes.html http://www.yuanjiaocheng.net/entity/entit ...
- ,net core mvc 文件上传
工作用到文件上传的功能,在这个分享下 ~~ Controller: public class PictureController : Controller { private IHostingEnvi ...
- SSH框架和Redis的整合(2)
5. 添加功能的实现 新建一个Action:RClasAction,实现向Redis添加课程数据,并同步到MySQL. package com.school.action; import java.u ...
- __Block与__Weak区别
一.__block理解: Blocks可以访问局部变量,但是不能修改, 声明block的时候实际上是把当时的临时变量又复制了一份, 在block里即使修改了这些复制的变量,也不影响外面的原始变量.即所 ...
- Android:Activity+Fragment及它们之间的数据交换.
Android:Activity+Fragment及它们之间的数据交换 关于Fragment与Fragment.Activity通信的四种方式 比较好一点的Activity+Fragment及它们之间 ...
- POJ1149 PIGS [最大流 建图]
PIGS Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 20662 Accepted: 9435 Description ...