受到同事启发,突然发现了几个有趣又实用的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的更多相关文章

  1. 几个有趣的WEB设备API(二)

    浏览器和设备之间还有很多有趣的接口, 1.屏幕朝向接口 浏览器有两种方法来监听屏幕朝向,看是横屏还是竖屏. (1)使用css媒体查询的方法 /* 竖屏 */ @media screen and (or ...

  2. html5电池状态相关API

    var battery = navigator.battery || navigator.webkitBattery || navigator.mozBattery || navigator.msBa ...

  3. 腾讯Web工程师的前端书单

    2014年一月以来,自己接触web前端开发已经两年多了,记录一下自己前端学习路上看过的,以及道听途说的一些书,基本上按照由浅入深来介绍. JavaScript 入门 <JavaScript权威指 ...

  4. 推荐一份Web 工程师的前端书单

    014年一月以来,自己接触web前端开发已经两年多了,记录一下自己前端学习路上看过的,以及道听途说的一些书,基本上按照由浅入深来介绍. JavaScript 入门 <JavaScript权威指南 ...

  5. Web jquery表格组件 JQGrid 的使用 - 4.JQGrid参数、ColModel API、事件及方法

    系列索引 Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引 Web jquery表格组件 JQGrid 的使用 - 4.JQGrid参数.ColModel API.事件 ...

  6. web设计师和前端设计师的互动—前端工程师应该具备的三种思维

    如果你是一个天才工程师(马上可以离开),可以独立完成一个很多事情,你可以是一个怪咖,因为我相信没有一个人不会不佩服你.但现实归现实,多数人都不是天才,而我们在职场上也不是单打独斗,我们需要团队合作,需 ...

  7. IOS 特定于设备的开发:检查设备接近度和电池状态

    UIDevice类提供了一些API,使你能够跟踪设备的特征,包括电池的状态和接近度传感器.他们二者都以通知的形式提供更新,可以订阅他们,以便在有重要的更新时通知你的应用程序. 1>启动和禁用接近 ...

  8. 【HTML5】使用 JavaScript 来获取电池状态(Battery Status API)

    HTML5 规范已经越来越成熟,可以让你访问更多来自设备的信息,其中包括最近提交的 "Battery Status API".如其名称所示,该 API 允许你通过 JavaScri ...

  9. 【SpringSecurity系列2】基于SpringSecurity实现前后端分离无状态Rest API的权限控制原理分析

    源码传送门: https://github.com/ningzuoxin/zxning-springsecurity-demos/tree/master/01-springsecurity-state ...

随机推荐

  1. 操作系统篇-调用门与特权级(CPL、DPL和RPL)

    || 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.前言 在前两篇文章(<操作系统篇-浅谈实模式与保护模式>和<操作系统篇-分段机制与GDT|LDT>)中,我们提到 ...

  2. HttpClient的替代者 - RestTemplate

    需要的包 ,除了Spring的基础包外还用到json的包,这里的数据传输使用json格式 客户端和服务端都用到一下的包 <!-- Spring --> <dependency> ...

  3. Storm如何保证可靠的消息处理

    作者:Jack47 PS:如果喜欢我写的文章,欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 本文主要翻译自Storm官方文档Guaranteeing messag ...

  4. 从Membership 到 .NET4.5 之 ASP.NET Identity

    我们前面已经讨论过了如何在一个网站中集成最基本的Membership功能,然后深入学习了Membership的架构设计.正所谓从实践从来,到实践从去,在我们把Membership的结构吃透之后,我们要 ...

  5. 深入理解MySql子查询IN的执行和优化

    IN为什么慢? 在应用程序中使用子查询后,SQL语句的查询性能变得非常糟糕.例如: SELECT driver_id FROM driver where driver_id in (SELECT dr ...

  6. HTML骨架结构

    前面的话   一个完整的HTML文档必须包含3个部分:文档声明.文档头部和文档主体.而正是它们构成了HTML的骨架结构.前面已经分别介绍过文档声明和文档头部,本文将详细介绍构成HTML骨架结构的基础元 ...

  7. .Net Core上用于代替System.Drawing的类库

    目前.Net Core上没有System.Drawing这个类库,想要在.Net Core上处理图片得另辟蹊径. 微软给出了将来取代System.Drawing的方案,偏向于使用一个单独的服务端进行各 ...

  8. 解决Android Studio 无法显示Layout视图问题

    在Android Studio 当中,如果你选择的SDK的版本 与你所显示的视图版本不一致时,会出现这个错误 Exception raised during rendering:com/android ...

  9. 异步 HttpContext.Current 为空null 另一种解决方法

    1.场景 在导入通讯录过程中,把导入的失败.成功的号码数进行统计,然后保存到session中,客户端通过轮询显示状态. 在实现过程中,使用的async调用方法,出现HttpContext.Curren ...

  10. mongodb

    修改所有的记录: > db.t_express_apply.update({},{$set:{"isStatus" : 0}},{multi:true})WriteResul ...