h5调用摄像头 android,H5 使用移动端摄像头
某些场景下,需要 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 使用移动端摄像头相关推荐
- html5调用原生android,h5调用IOS/安卓原生方法,原生调h5方法
之前也总结过h5调用原生的方法,但是写的不全.像调完原生之后,原生往往会有返回值,或者根据返回值的不同回调h5的方法. 1.判断机型 getType() { var u = navigator.use ...
- 记 H5调用打开android文件管理上传文件
webView加载H5页面,H5调用android本地文件管理器搜索指定类型文件选择并上传 效果图: 贴代码: mWebView.webChromeClient = object : WebChrom ...
- android h5调用百度地图,h5页面如何调用百度地图获取当前位置(代码)
本篇文章给大家带来的内容是关于h5页面如何调用百度地图获取当前位置(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 在项目中越来越多的用到了手机的GRS定位功能,使用百度地图A ...
- h5调用指纹识别_FingerprintJS - 在浏览器端实现指纹识别
FingerprintJS 是一个快速的浏览器指纹库,纯JavaScript实现,没有依赖关系.默认情况下,使用 Murmur Hash 算法返回一个32位整数.Hash 函数可以很容易地更换. 什么 ...
- android h5 判断应用,Android H5判断是否安装app和唤起APP
H5中是无法直接判断应用是否安装的,但是可以间接判断. 第一种方式, if(...){ document.location = ''; setTimeout(function(){ //此处如果执行则 ...
- 奥比3d 摄像头 android,奥比中光3D传感摄像头Ubuntu系统安装ROS说明
1.安装ROS桌面系统variant (ros-indigo-desktop): [http://wiki.ros.org/indigo/Installation/Ubuntu](http://wik ...
- H5调用移动端手机摄像头
H5调用移动端手机摄像头 capture表示,可以捕获到系统默认的设备,比如:camera照相机:camcorder摄像机:microphone录音.accept表示,直接打开系统文件目录. < ...
- html5 移动摄像头,H5 使用移动端摄像头
某些场景下,需要 H5 脱离应用来使用手机系统的摄像头用于照相或者拍摄. 一.方案 目前而言,移动端使用 H5 调用摄像头有两种方案: getUserMedia Api 这种方法的兼容很差,基本不考虑 ...
- Android与H5相互接口调用及Android端接口整理
近几年随着HTML5的功能越来越强大,H5页面的性能虽然稍差,单其灵活性很高,更新页面成本比原生小很多,一个页面可以被android和ios同时使用开发成本也比较低,所以移动端的开发已经不是单单的原生 ...
- android h5和原生方法调用,H5与原生APP之间的方法互通
最近做与app端的混合开发,了解到了H5与原生app端之间的方法互通 首先是我们给app端定义方法供他们使用(以vue为例) methods中定义一个方法名称 VContent() { console ...
最新文章
- MAX Script 脚本语言
- 脚本化HTTP 取得响应 指定请求
- 相机模型之世界坐标、相机坐标、归一化坐标、图像坐标、像素坐标、内参、外参、转换关系总结
- word20161219
- 不常用的SQL语句记录
- 微软推出Windows Lite,目标Chrome OS上网本
- uploadify上传插件完整Demo(包括后台)
- Java链表数据结构刷题笔记总结
- Excel如何锁定首列,教程来啦!怎样将excel的列锁定冻结
- 北大AI公开课第十课--人工智能在生命科学中的应用by碳云智能李英睿
- 计算机硬盘启动改u为盘启动不了,如果计算机BIOS启动项找不到硬盘应该怎么办...
- java木马_Java校验上传图片文件是否含有木马的两种方式
- Frog青蛙的约会【浙江省选2002】(数论)
- 手撸SSO单点登录(五)登录验证-OA系统页面刷新或者跳转新OA系统页面
- 关于海报和插画的区别
- saveOrUpdate Transaction silently rolled back because it has been marked as rollback-only
- (翻译)文章列表(Article List)
- 【C语言】解决 “error: function definition is not allowed here”
- 基于WiFi 的CSI和RSS混合指纹室内定位
- ubuntu 20.04 | 关闭自动休眠