浏览器和设备之间还有很多有趣的接口,

1.屏幕朝向接口

浏览器有两种方法来监听屏幕朝向,看是横屏还是竖屏。

(1)使用css媒体查询的方法

/* 竖屏 */
@media screen and (orientation: portrait) {
div{
width: 100%;
}
} /* 横屏 */ @media screen and (orientation: landscape) {
div{
height: 100%;
}

(2)利用js调用屏幕朝向接口

screen.addEventListener("orientationchange", function () {
console.log("屏幕的方向是: " + screen.orientation.angle);
});

例子:demo

2.设备朝向接口

通过这个接口可以监听设备朝向及旋转,以便自动调节放心,这个接口有两个:

(1) DeviceOrientationEvent:监听方向变化

window.addEventListener("deviceorientation", operate, true);

operate会接收一个对象,对象含有4个属性分别是:

function opertate(orientData) {
var absolute = orientData.absolute;
var alpha = orientData.alpha;//z轴上的旋转角度(0~360)
var beta = orientData.beta;//x轴的旋转角度(-180~180)
var gamma = orientData.gamma;//y轴上的旋转角度(-90-90)
}

  

(2) DeviceMotinEvent:监听加速度变化

window.addEventListener("devicemotion", operate, true);

operate同样会接收一个对象,有4个属性

acceleration 和 accelerationIncludingGravity都是去除重力后的加速度,包括3组数据
x: 左向右
y: 下到上
z: 垂直地面 rotationRate包含3组数据: alpha:垂直旋转速率
beta: 左至右的轴的旋转速率
gamma: 从下至上方向的轴的旋转速率 intervali:i是从设备获取数据的频率(ms)

利用以上的api我们可以监听设备的移动方向,从而做出更加具有交互感的h5页面和游戏。

例子:demo

3.地理位置接口(https)

浏览器可以直接获取到用户的地理位置接口,返回用户的经纬度,拿着这个经纬度可以到百度或者腾讯地图开发的接口去查询用户的位置,

为了安全考虑,使用这个接口之前会先征求用户的许可。

但是现在限制只能在https的链接中使用,安卓的微信中还可以继续使用,但是ios10中也要求必须是https。

navigator.geolocation(succ,error,option); //这个接口异步获取用户的地理位置

(1)获取成功之后调用第一个参数定义的succ函数,

(2)如果调用失败则调用第二个参数定义的error函数,并返回错误代码error.code 和error.message

error.code:1  用户拒绝显示位置
error.code:2 获取位置失败
error.code:3 请求超时
error.code:4 未知错误

(3)option:可选,用来设定是否获取高精度定位,等待请求时间和最长定位缓存时间。

var option ={
  enableHighAccuracy:true,
  timeout:1000,
  maximumAge:0
}

l

navigator.geolocation.getCurrentPosition(function(position) {
  alert(position.coords.latitude, position.coords.longitude);//获取纬度、精度
});

地理位置还有一个接口:navigator.geolocation.watchPosition(succ,error,option);//监听用户的位置

这个接口会在用户位置变化时,自动调用。

var watchID = navigator.geolocation.watchPosition(function(position) {
alert(position.coords.latitude, position.coords.longitude);
});

清除监听

navigator.geolocation.clearWatch(watchID);

  

  

内容原创,转载请注明出处:

作者:Jess_喵

来源:http://www.cnblogs.com/zhangwenjiajessy/p/6246021.html

 

几个有趣的WEB设备API(二)的更多相关文章

  1. 几个有趣的WEB设备API 前端提高B格必备(一)——电池状态&震动api

    受到同事启发,突然发现了几个有趣又实用的web api,没想到前端还有这么多有趣的东西可以玩~~简直过分. 1.电池状态API navigator.getBattery():这个api返回的是一个pr ...

  2. HTML5权威指南--Web Storage,本地数据库,本地缓存API,Web Sockets API,Geolocation API(简要学习笔记二)

    1.Web Storage HTML5除了Canvas元素之外,还有一个非常重要的功能那就是客户端本地保存数据的Web Storage功能. 以前都是用cookies保存用户名等简单信息.   但是c ...

  3. HTML5 ——web audio API 音乐可视化(二)

    上一篇 web audio API 音乐可视化(一)介绍了一些基本的API,以及如何简单的播放一个音频,本篇介绍一下怎么对获取到的音频进行分析,并将分析后的数据绘制成图像. 最终效果请戳这里; 完整版 ...

  4. C# 调用百度地图Web服务API

    最近公司项目中需要根据两个地点的交通路径和距离做一些数据推荐,为了程序的稳定和用户体验所以想从百度地图 API 采集数据保存到数据库中,经过一翻研究之后选定了百度地图 Web 服务 API 中的 Di ...

  5. 使用Web Audio API绘制音波图

    摘要:Web Audio API是对<audio> 标签功能上的补充,我们可以用它完成混音.音效.平移等各种复杂的音频处理,本文简单的使用其完成音波图的绘制. PS:本例子使用ES6编程, ...

  6. C# 调用百度地图 Web 服务 API

    最近公司项目中需要根据两个地点的交通路径和距离做一些数据推荐,为了程序的稳定和用户体验所以想从百度地图 API 采集数据保存到数据库中,经过一翻研究之后选定了百度地图 Web 服务 API 中的 Di ...

  7. web 基础(二) HTML5

    web 基础(二) HTML5 一.HTML5 HTML5 是最新的 HTML 标准.是专门为承载丰富的 web 内容而设计的,并且无需额外插件.它拥有新的语义.图形以及多媒体元素.并提供的新元素和新 ...

  8. 【HTML5】Web Audio API打造超炫的音乐可视化效果

    HTML5真是太多炫酷的东西了,其中Web Audio API算一个,琢磨着弄了个音乐可视化的demo,先上效果图: 项目演示:别说话,点我!  源码已经挂到github上了,有兴趣的同学也可以去st ...

  9. H5的Web Audio Api

    概述 研究Web Audio Api的主要原因是:工作中需要在ios中实现声音的淡出效果,主要是通过setInterval来改audio标签的volume属性实现的,但是ios上面volume属性是只 ...

随机推荐

  1. Unity3d学习 预设体(prefab)的一些理解

    之前一直在想如果要在Unity3d上创建很多个具有相同结构的对象,是如何做的,后来查了相关资料发现预设体可以解决这个问题! 预设体的概念: 组件的集合体 , 预制物体可以实例化成游戏对象. 创建预设体 ...

  2. boost强分类器的实现

    boost.cpp文件下: bool CvCascadeBoost::train( const CvFeatureEvaluator* _featureEvaluator, int _numSampl ...

  3. kafka学习笔记:知识点整理

    一.为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险. ...

  4. 【热门技术】EventBus 3.0,让事件订阅更简单,从此告别组件消息传递烦恼~

    一.写在前面 还在为时间接收而烦恼吗?还在为各种组件间的消息传递烦恼吗?EventBus 3.0,专注于android的发布.订阅事件总线,让各组件间的消息传递更简单!完美替代Intent,Handl ...

  5. VB.NET设置控件和窗体的显示级别

    前言:在用VB.NET开发射频检测系统ADS时,当激活已存在的目标MDI子窗体时,被其他子窗体遮住了,导致目标MDI子窗体不能显示. 这个问题怎么解决呢?网上看到一篇帖子VB.NET设置控件和窗体的显 ...

  6. XAMARIN ANDROID 二维码扫描示例

    现在二维码的应用越来越普及,二维码扫描也成为手机应用程序的必备功能了.本文将基于 Xamarin.Android 平台使用 ZXing.Net.Mobile  做一个简单的 Android 条码扫描示 ...

  7. 直播推流端弱网优化策略 | 直播 SDK 性能优化实践

    弱网优化的场景 网络直播行业经过一年多的快速发展,衍生出了各种各样的玩法.最早的网络直播是主播坐在 PC 前,安装好专业的直播设备(如摄像头和麦克风),然后才能开始直播.后来随着手机性能的提升和直播技 ...

  8. HA 高可用软件系统保养指南

    又过了一年 618,六月是公司一年一度的大促月,一般提前一个月各系统就会减少需求和功能的开发,转而更多去关注系统可用性.稳定性和管控性等方面的非功能需求.大促前的准备工作一般叫作「备战」,可以把线上运 ...

  9. .NET跨平台:在Ubuntu上用自己编译的dnx运行ASP.NET 5示例程序

    在 Linux Ubuntu 上成功编译 dnx 之后,会在 artifacts/build/ 文件夹中生成 dnx-coreclr-linux-x64/ 与 dnx-mono/ 这2个文件夹,前者是 ...

  10. Linux1 在Linux(CentOS)上安装MySql详细记录

    前记:  毕业两年了,前两天换了份工作,由以前的传统行业跳到了互联网行业.之前的公司一直在用WinServer2003+Tomcat+SqlServer/Oracle这套部署环境.对于Linux+To ...