微信调取手机摄像头

验证签名:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign

前台页面jsp:

<script>
$(function(){
var jspUrl = location.href.split(‘#‘)[0];
var shareConfig = {
timestamp: Math.round(new Date() / 1000),
nonceStr: Math.round(new Date() / 1000) + Math.random(),
url: URL,
shop_name: "",
shop_id: "",
share_url: ""
};

$.ajax({
cache:true,
type: ‘post‘,
url: "${rootUrl }app/wx/recipeOrder/getSignature",
data:{"jspUrl":jspUrl},
async:true,
beforeSend: function(){
},
success:function(json){
var appId = json.appId;
var timestamp = json.timestamp;
var nonceStr = json.nonceStr;
var signature = json.signature;
wx.config({
debug: true,
appId: appId,
timestamp: timestamp,
nonceStr: nonceStr,
signature:signature,
jsApiList: [‘chooseImage‘, ‘previewImage‘, ‘uploadImage‘,‘getLocation‘]
});
},
error:function(json){
mui.alert(‘网络忙,请稍后重试?‘);
}
});

});
//调取相机
wx.ready(function() {
//检测api权限是否生效
wx.checkJsApi({
jsApiList: [‘chooseImage‘, ‘previewImage‘, ‘uploadImage‘,‘getLocation‘],
success: function(res) {
}
});
var images={
localId:[],
serverId:[]
};
var zuobiao=[];
$(‘#bt‘).on(‘click‘,function(){
var that=$(this);
wx.chooseImage({
count: 1, // 默认9
sizeType: [‘compressed‘], // 可以指定是原图还是压缩图,默认二者都有,指定压缩
sourceType: [‘camera‘], // 可以指定来源是相册还是相机,默认二者都有,指定相机
success: function(res) {
console.log(res);
//图片本地临时存储路径
// images.localId = res.localIds;
images.localId.push(res.localIds[0]);
//选中图片在img中显示
that.prop(‘src‘, res.localIds[0]);
// alert(that.prop(‘src‘))
//兼容苹果机直接显示图片的问题(只在苹果机起作用)判断机型为苹果手机
if(navigator.userAgent.indexOf(‘iPhone‘) > -1){
wx.getLocalImgData({
localId: res.localIds[0], // 图片的localID
success: function (res) {
var localData = res.localData; // localData是图片的base64数据,可以用img标签显示
that.prop(‘src‘, localData);
}
});
}
wx.getLocation({
type: ‘wgs84‘, // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入‘gcj02‘
success: function (res) {
var coordinate=[res.longitude,res.latitude];
zuobiao.push(coordinate);
// latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
// longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
var speed = res.speed; // 速度,以米/每秒计
var accuracy = res.accuracy; // 位置精度
}
});
wx.uploadImage({
localId: res.localIds[0],
success: function (res) {
images.serverId.push(res.serverId);
},
fail: function (res) {
alert(JSON.stringify(res)+"---");
}
});
}
});
});
var flag=true;
//点击保存上传图片
$(‘footer button‘).on(‘click‘,function(){
// alert(stu)
var name=$(‘.name‘).val(),
idcard=$(‘.IDcard‘).val(),
phoneNum=$(‘.phoneNum‘).val();

if(name==‘‘ || !regname.test(name) || idcard==‘‘ || !regid.test(idcard) || phoneNum==‘‘ || !regphone.test(phoneNum) ){
alert(‘用户信息格式不正确‘)
return;
}
//首先确认是否选定了图片
if (images.serverId.length < 4) {
alert(‘未选中图片‘);
return;
}
var datas={
xy:zuobiao,
imgurl: images.serverId,
userName:$(‘.name‘).val(),
idNo:$(‘.IDcard‘).val(),
phone:$(‘.phoneNum‘).val(),
user_id:user_id,
type:1
}
save(datas,flag);
});
});
</script>

后台:

/**
* 获取微信调取相机时的权限信息
* @param totalMoney
* @param model
* @param request
* @param response
* @throws ManagerException
* @throws IOException
*/
@RequestMapping(value = "/getSignature", method = RequestMethod.POST)
public void getWxDate( Model model,
HttpServletRequest request, HttpServletResponse response) throws ManagerException, IOException {
// MemberBaseInfo loginUser = (MemberBaseInfo) WebUtils.getSessionAttribute(request, SessionNames.LOGIN_USER);
String jspUrl = request.getParameter("jspUrl");
System.out.println("jspUrl---"+jspUrl);
WxPaySendData data = new WxPaySendData();
data.setAppId(Configure.appID);
String timeStr = Calendar.getInstance().getTimeInMillis()+"";
if(timeStr.length() > 9){
timeStr = timeStr.substring(0, 9);
}else{
while(timeStr.length() < 10){
timeStr += "1";
}
}

data.setTimeStamp(timeStr);
data.setNonceStr(RandomStringGenerator.getRandomStringByLength(16));
data.setJspUrl(jspUrl);
System.out.println("jspUrl---"+jspUrl);
//获取access_token
String accessTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
accessTokenUrl = accessTokenUrl.replace("APPID", Configure.appID);
accessTokenUrl = accessTokenUrl.replace("APPSECRET", Configure.appsecret);
JSONObject jsonObject = NetTools.httpsRequest(accessTokenUrl, "GET", null);
System.out.println("jsonObject---"+jsonObject);
String accessToken = (String) jsonObject.get("access_token");
System.out.println("accessToken---"+accessToken);
//获取jsapi_ticket
String jsapiTicketUrl ="https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi";
jsapiTicketUrl = jsapiTicketUrl.replace("ACCESS_TOKEN", accessToken);
JSONObject jsapiObject = NetTools.httpsRequest(jsapiTicketUrl, "GET", null);
Integer errCode = (Integer) jsapiObject.get("errcode");
System.out.println("errCode---"+errCode);
if(errCode != null && errCode.equals(0)){
String jsapiTicket = (String) jsapiObject.get("ticket");

data.setJsapiTicket(jsapiTicket);

HashMap<String,Object> map=new HashMap<String,Object>();
map.put("jsapi_ticket", data.getJsapiTicket());
map.put("noncestr", data.getNonceStr());
map.put("timestamp", data.getTimeStamp());
map.put("url", data.getJspUrl());
Collection<String> keyset= map.keySet();
List<String> list=new ArrayList<String>(keyset);
Collections.sort(list);

String detail = "";
for(int i=0;i<list.size();i++){
if(i == 0 ){
detail = list.get(i)+"="+map.get(list.get(i));
}else{
detail += "&"+list.get(i)+"="+map.get(list.get(i));
}
}
//获取签名
String signature = UnifiedorderService.getSha1(detail);
System.out.println("jspUrl---"+jspUrl);
System.out.println("jsapiTicket---"+jsapiTicket);
System.out.println("nonceStr----"+data.getNonceStr());
System.out.println("timestamp----"+data.getTimeStamp());
System.out.println("signature---"+signature);
Map<String, String> mapToJsp = new HashMap<String, String>();
mapToJsp.put("appId", data.getAppId());
mapToJsp.put("timestamp", data.getTimeStamp());
mapToJsp.put("nonceStr", data.getNonceStr());
mapToJsp.put("signature", signature);
String jsonString = JsonUtil.getJSONString(mapToJsp);
System.out.println("json---"+jsonString);
// writeSuccessToBrowers(jsonString, response);
writeToJson(response, jsonString);
}else{
writeFailToBrowers(errCode.toString(), response);
}
}

时间: 2024-10-12 04:22:09

微信调取手机摄像头的相关文章

调取手机摄像头拍照并获取拍得的照片

1 <!DOCTYPE html> 2 <html> 3 4 <head> 5 <meta charset="utf-8"> 6 <title>HTML5 调用手机摄像头</title> 7 <style type="text/css"> 8 .addBorder { 9 border: 1px solid #ccc; 10 } 11 #imgDiv { 12 width: 300p

vue项目html5调取手机摄像头录像并上传

<video id="video" autoplay width="300" height="300" controls></video> <x-button class="video-btn" type="primary" @click.native="upBtnFileFace">刷脸验证</x-button> <input cl

神奇的功能:手机摄像头拍照取字你会吗?

所有的老师都有这项技能—“备课”,也是最耗时间的一项工作.任何一位教师的PPT课件,都是奉献自身业余时间得来.备课不仅要先把内容写在本子上,还需要手动把内容录入到电脑,绘制成一堂优质PPT课件. 当在书上上看到好的文章,美妙的文字,可是不能直接将文字自动提取出来分享给别人,或者自己收藏. 神奇的手机摄像头帮助大家节省时间,今天给大家分享一款APP福昕扫描王,大家可以到应用市场搜索下载. 打开拍照功能,通过左滑将拍照模式切换到“拍照取字”模式,对着你需要取字的文档或者其他东西进行拍照,一秒即可瞬间

关于降低android手机摄像头预览分辨率

假设现在有这样一个需求需要一直开着手机摄像头 但是不做任何拍照动作 但是每个手机的相机分辨率都不同 而默认预览的时候参数是最大分辨率 这样有时候就回导致电量损耗的加快 所以我们可以采取降低相机分辨率的方法 这样既达到了目标 又节省了电量 1 package com.example.camerbatterytest; 2 3 4 import java.io.IOException; 5 import java.util.List; 6 7 import android.app.Activity;

HTML5调用手机摄像头,仅仅支持OPPOHD浏览器

1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>HTML5调用手机摄像头,仅仅支持OPPOHD浏览器</title> 6 <style> 7 #video { border: 1px solid #ccc; display:inline-block; } 8 #canvas

心跳之旅—&#128151;—iOS用手机摄像头检测心率(PPG)

[前情提要] 光阴似箭,日月如梭,最近几年,支持心率检测的设备愈发常见了,大家都在各种测空气测雪碧的,如火如荼,于是我也来凑一凑热闹.[0]这段时间,我完成了一个基于iOS的心率检测Demo,只要稳定地用指尖按住手机摄像头,它就能采集你的心率数据.Demo完成后,我对心率检测组件进行了封装,并提供了默认动画和音效,能够非常方便导入到其他项目中.在这篇博客里,我将向大家分享一下我完成心率检测的过程,以及,期间我遇到的种种困难. 本文中涉及到的要点主要有: AVCapture Core Graphi

利用html5实现类似微信的手机摇一摇功能

利用html5实现类似微信的手机摇一摇功能,并播放音乐. 1.  deviceOrientation:封装了方向传感器数据的事件,可以获取手机静止状态下的方向数据,例如手机所处角度.方位.朝向等. 2.  deviceMotion:封装了运动传感器数据的事件,可以获取手机运动状态下的运动加速度等数据. 不多说直接上代码, Javascript: [javascript] view plaincopy var SHAKE_THRESHOLD = 3000; var last_update = 0;

新版一元云购源码 1元购网站 一元夺宝源码微信商城手机版建站

新版一元云购源码 1元购网站 一元夺宝源码微信商城手机版建站,有10多年的技术团队开发定制,打造,需要定制,私聊我,谢谢. 全局功能:系统设置通过系统设置,可设置网页版.手机版.微信版.APP的基本信息,比如名称.Logo.文章.邮箱.短信.支付接口等.01全局功能:自定义界面系统目前已开源,支持自定义模版和标签文案修改,一个兼职程序员即可修改模版和任何文案,可高度化修改为站长想要的样子.02全局功能:SEO优化针对模版里的每个单页面,进行了全面的优化,从Sitemap.关键词.描述.图片ALT

android 通过wifi 热点实现手机摄像头数据共享(转)

原文地址:http://blog.csdn.net/sinat_35845281/article/details/52674946 最近想搞一个新奇的玩意儿~~~ 最近一直在在学习通过两个Android手机通过wifi共享摄像头的数据.弄了好久有了点头目.具体有下面几个步骤: 1.对手机相机的开发,自定义surfaceView来定义自己的相机类.主要是显示手机摄像头的画面. 2.对自定义相机的预览画面的数据的获取.然后对数据进行解析. 3.在两台Android手机通过wifi建立传输数据的连接.