某些场景下,需要 H5 脱离应用来使用手机系统的摄像头用于照相或者拍摄。

一、方案

目前而言,移动端使用 H5 调用摄像头有两种方案:

getUserMedia Api

这种方法的兼容很差,基本不考虑

input type=file capture

这种方法是目前的主流,兼容 IOS 和 Android,但是 Android 无法调用前置摄像头

其实真正费时间的就是方案的抉择,了解的方案的坑以及市面的流行方案后就可以开始写代码了(代码很简单,百度一大推)

二、案例

PS:非常重要的一点,如果是在 APP 的 webview 下使用该 API,需要APP端在代码层面开通相关的权限(相机、相册、录音,缺一不可),否则会出现闪退或者点击 input 无效的情况

三、代码实现

3.1 拍照

3.2 视频

3.3 其他处理

调用摄像头之后,一般会进行处理

(1)拍照

获取基本信息:file 属性基本满足

压缩:

import lrz from 'lrz';

/**

* 压缩 file

* @param {[type]} file [文件]

* @param {Number} setWidth [压缩大小]

* @return {[type]} [压缩后的文件]

*/

compressFile(file, setWidth = 750) {

return lrz(file, {

width: setWidth,

quality: 1

})

.then(rst => {

// 超过限制大小

if (rst.file.size >= this.imageSizeLimitKB * 1000) {

return this.compressFile(file, setWidth - 50);

} else {

return rst.file;

}

});

},

const rstFile = await this.compressFile(file); // rstFile is blob

const newFile = new File([rstFile], fileName); // blob to file

(2)录像

获取视频大小: file.size

获取视频时长:使用 video.onloadedmetadata 方法来获取,但在 WKwebview 下无效,暂未找到通用方案

// 获取视频时长

handleGetVideoTime(file) {

const self = this;

return new Promise((resolve, reject) => {

window.URL = window.URL || window.webkitURL;

const video = document.createElement('video');

video.preload = 'metadata';

video.onloadedmetadata = function() {

window.URL.revokeObjectURL(video.src);

const duration = video.duration; // 视频时长 单位s

};

video.src = URL.createObjectURL(file);

});

},

压缩:暂未找到合适的方案

四、遇到的问题

4.1 iphoneX 上传图片直接唤起摄像头,没有本地图片的选择

解决方法:去掉 capture="camera"

4.2 input file width 无效,或者出现一个多余的 input

解决方法:input css overflow: hidden

h5调用摄像头 android,H5 使用移动端摄像头相关推荐

  1. html5调用原生android,h5调用IOS/安卓原生方法,原生调h5方法

    之前也总结过h5调用原生的方法,但是写的不全.像调完原生之后,原生往往会有返回值,或者根据返回值的不同回调h5的方法. 1.判断机型 getType() { var u = navigator.use ...

  2. 记 H5调用打开android文件管理上传文件

    webView加载H5页面,H5调用android本地文件管理器搜索指定类型文件选择并上传 效果图: 贴代码: mWebView.webChromeClient = object : WebChrom ...

  3. android h5调用百度地图,h5页面如何调用百度地图获取当前位置(代码)

    本篇文章给大家带来的内容是关于h5页面如何调用百度地图获取当前位置(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 在项目中越来越多的用到了手机的GRS定位功能,使用百度地图A ...

  4. h5调用指纹识别_FingerprintJS - 在浏览器端实现指纹识别

    FingerprintJS 是一个快速的浏览器指纹库,纯JavaScript实现,没有依赖关系.默认情况下,使用 Murmur Hash 算法返回一个32位整数.Hash 函数可以很容易地更换. 什么 ...

  5. android h5 判断应用,Android H5判断是否安装app和唤起APP

    H5中是无法直接判断应用是否安装的,但是可以间接判断. 第一种方式, if(...){ document.location = ''; setTimeout(function(){ //此处如果执行则 ...

  6. 奥比3d 摄像头 android,奥比中光3D传感摄像头Ubuntu系统安装ROS说明

    1.安装ROS桌面系统variant (ros-indigo-desktop): [http://wiki.ros.org/indigo/Installation/Ubuntu](http://wik ...

  7. H5调用移动端手机摄像头

    H5调用移动端手机摄像头 capture表示,可以捕获到系统默认的设备,比如:camera照相机:camcorder摄像机:microphone录音.accept表示,直接打开系统文件目录. < ...

  8. html5 移动摄像头,H5 使用移动端摄像头

    某些场景下,需要 H5 脱离应用来使用手机系统的摄像头用于照相或者拍摄. 一.方案 目前而言,移动端使用 H5 调用摄像头有两种方案: getUserMedia Api 这种方法的兼容很差,基本不考虑 ...

  9. Android与H5相互接口调用及Android端接口整理

    近几年随着HTML5的功能越来越强大,H5页面的性能虽然稍差,单其灵活性很高,更新页面成本比原生小很多,一个页面可以被android和ios同时使用开发成本也比较低,所以移动端的开发已经不是单单的原生 ...

  10. android h5和原生方法调用,H5与原生APP之间的方法互通

    最近做与app端的混合开发,了解到了H5与原生app端之间的方法互通 首先是我们给app端定义方法供他们使用(以vue为例) methods中定义一个方法名称 VContent() { console ...

最新文章

  1. MAX Script 脚本语言
  2. 脚本化HTTP 取得响应 指定请求
  3. 相机模型之世界坐标、相机坐标、归一化坐标、图像坐标、像素坐标、内参、外参、转换关系总结
  4. word20161219
  5. 不常用的SQL语句记录
  6. 微软推出Windows Lite,目标Chrome OS上网本
  7. uploadify上传插件完整Demo(包括后台)
  8. Java链表数据结构刷题笔记总结
  9. Excel如何锁定首列,教程来啦!怎样将excel的列锁定冻结
  10. 北大AI公开课第十课--人工智能在生命科学中的应用by碳云智能李英睿
  11. 计算机硬盘启动改u为盘启动不了,如果计算机BIOS启动项找不到硬盘应该怎么办...
  12. java木马_Java校验上传图片文件是否含有木马的两种方式
  13. Frog青蛙的约会【浙江省选2002】(数论)
  14. 手撸SSO单点登录(五)登录验证-OA系统页面刷新或者跳转新OA系统页面
  15. 关于海报和插画的区别
  16. saveOrUpdate Transaction silently rolled back because it has been marked as rollback-only
  17. (翻译)文章列表(Article List)
  18. 【C语言】解决 “error: function definition is not allowed here”
  19. 基于WiFi 的CSI和RSS混合指纹室内定位
  20. ubuntu 20.04 | 关闭自动休眠

热门文章

  1. 无头浏览器与Puppeteer中PDF生成应用指南
  2. Matlab魔方矩阵的创建及逻辑矩阵的用法
  3. Android文件下载——多文件多线程断点下载
  4. ES Java REST Client 官方文档
  5. 最新大数据资料合集.pdf
  6. 五万字,57道hadoop大厂高频面试题,每一字都细心打磨,强烈建议收藏!
  7. 精英二代手柄测试软件,XBOX精英二代手柄评测视频:世界上最先进的手柄
  8. 2022年大厂中秋礼盒大赏,卷的就是创意!
  9. 操作系统-io控制器
  10. 最新Thinkphp免签码支付系统源码+安卓监控端/实测可用