app开发-3
一.Audio 模块实现开启手机摄像头
基于html5 plus
http://www.html5plus.org/doc/zh_cn/audio.html
栗子:
自定义:
scanQR.HTML
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<link rel="stylesheet" type="text/css" href="css/mui.css"/>
</head>
<body>
<header class="mui-bar mui-bar-nav">
<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
<h1 class="mui-title">扫描玩具二维码</h1>
</header>
<div class="mui-content">
<div id="bcid" style="width: 100%;height: 750px;"></div>
</div>
<script src="js/mui.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
mui.init();
var scan = null;
mui.plusReady(function () {
scan = new plus.barcode.Barcode("bcid");
scan.onmarked = inmarked; #识别二维码
scan.start(); #开启识别扫描
inmarked(0,"d602f74c6a60fc1e9f60b20a190eeed7"); #在不开启摄像头的情况下,扫描二维码的是内容存储的内容
}) function inmarked(type,code){
// alert(type +":"+ code)
mui.post(window.serv+ '/validate_code',{
device_key:code #{"device_key":"1eae197f4f4abe105c40bcaa7438d1f2"},
},function(data){
if(data.code == 0){
//打开绑定玩具流程 创建玩具
mui.openWindow({
url:"bind_toy.html",
id:"bind_toy.html",
extras:data.data # 获取的数据 {"code":0,"data":{"device_key":"1eae197f4f4abe105c40bcaa7438d1f2"},"msg":"设备已授权,开启绑定"}
}) }else if(data.code==2){
//扫描的二维码信息异常
mui.toast(data.msg);
mui.back();
}else if(data.code==1){
//神秘代码
}
},'json'
);
}
</script>
</body>
</html>
在上一步扫码后,进入玩具的绑定界面
进行玩具信息录入
bind_toy.html
后端存储数据
@devices.route("/bind_toy",methods=['POST'])
def bind_toy():
# 1.device_key 2.fromdata 3. who bind toy
toy_info = request.form.to_dict()
print(toy_info) chat_window = MongoDB.chats.insert_one({"user_list":[],"char_list":[]}) user_info = MongoDB.xujian.find_one({"_id":ObjectId(toy_info["user_id"])}) toy_info["bind_user"] = toy_info.pop("user_id")
toy_info["avatar"] = "toy.jpg"
toy_info["firend_list"] = [
{
"firend_id":toy_info["bind_user"],
"firend_name":user_info.get("nickname"),
"firend_nick":toy_info.pop("remark"),
"firend_avatar":user_info.get("avatar"),
"firend_type":"app",
"firend_chat":str(chat_window.inserted_id)
}
] toy = MongoDB.toys.insert_one(toy_info) user_info["bind_boy"].append(str(toy.inserted_id))
user_add_toy={
"firend_id": str(toy.inserted_id),
"firend_name": toy_info.get("toy_name"),
"firend_nick": toy_info.get("baby_name"),
"firend_avatar": toy_info.get("avatar"),
"firend_type": "toy",
"firend_chat": str(chat_window.inserted_id)
} user_info["friend_list"].append(user_add_toy) MongoDB.xujian.update_one({"_id":ObjectId(toy_info["bind_user"])}, {"$set":user_info})
MongoDB.chats.update_one({"_id":chat_window.inserted_id},{"$set":{"user_list":[
str(toy.inserted_id),str(user_info.get("_id"))
]}}) RET["code"] = 0
RET["msg"] = "绑定玩具成功"
RET['data'] = {} return jsonify(RET)
绑定好用户的机器人后,在toy_manager.html显示
这样,用户就可以查看他绑定的机器人啦
进行用户间的聊天chats
后端生成对话文件
@gsa.route("/uploader",methods=["POST"])
def uploader():
audio = request.files.get("recorder")
path = os.path.join(chats_path,audio.filename)
audio.save(path)
os.system(f"ffmpeg -i {path} {path}.mp3") #通过ffmpeg强制转变格式 return "123"
app开发-3的更多相关文章
- 从中间件的历史来看移动App开发的未来
在移动开发领域我们发现一个很奇怪的现象:普通菜鸟新手经过3个月的培训就可以拿到 8K 甚至上万的工作:在北京稍微有点工作经验的 iOS 开发,就要求 2 万一个月的工资.不知道大家是否想过:移动应用开 ...
- app开发外包注意事项,2017最新资讯
我们见过很多创业者,栽在这app外包上.很多创业者对于app外包这件事情不是特别重视,以为将事情交给app外包公司就完事了,实际上不是的.无论是从选择app外包公司还是签订合同.售后维护等各方面都有许 ...
- 前端移动App开发环境搭建
移动App开发环境安装 一.环境安装准备软件 二.node的安装 像安装普通软件一样,安装对应版本的node软件,安装好之后就可以运行npm命令行,比如npm init .npm install -g ...
- 一个小白App开发需要了解的基本技术
本文针对小白用户对App做一个简单的介绍,首先要了解App都有哪些类型,不同的类型适用于哪些需求,用户可以根据自己的需求选择不同的App开发. 一 App有哪些形式 WebApp:简单来说,Web A ...
- 移动web app开发必备 - 异步队列 Deferred
背景 移动web app开发,异步代码是时常的事,比如有常见的异步操作: Ajax(XMLHttpRequest) Image Tag,Script Tag,iframe(原理类似) setTimeo ...
- 移动web app开发必备 - Deferred 源码分析
姊妹篇 移动web app开发必备 - 异步队列 Deferred 在分析Deferred之前我觉得还是有必要把老套的设计模式给搬出来,便于理解源码! 观察者模式 观察者模式( 又叫发布者-订阅者模 ...
- html5 app开发,你知道多少?
随着大量新生移动设备的兴起,改变了互联网的未来,html5技术为开发者提供了一个跨平台的移动app开发方案,并且该方案具有很好的扩展性和灵活性,但就国内使用html5开发app应用技术来讲,还是有欠缺 ...
- 选择App开发外包时,你该了解哪些法律常识?
随着App需求的激增,选择App外包服务的客户也多了起来.然而客户和开发方对于其中的法律条款却不甚了解,导致在服务过程中,时常会发生一些分歧和纠纷,最终致使项目搁浅. 为了普及App外包的法律常识,移 ...
- phongap、APICloud、ionic等app开发平台你都知道吗?
大众创业热,很多人都想在互联网大展拳脚,然而大部分人却是非技术背景.针对这个行业痛点,现在国内外涌现出众多APP开发工具,开发者只要有相关的HTML5.CSS和JavaScript知识,便可以轻松快速 ...
- iOS APP开发的小知识(分享)
亿合科技小编发现从2007年第一款智能手机横空出世,由此开启了人们的移动智能时代.我们从一开始对APP的陌生,到现在的爱不释手,可见APP开发的出现对我们的生活改变有多巨大.而iOS AP ...
随机推荐
- mysql 安装为服务 ,mysql.zip 安装为服务,mysql搬移迁移服务器安装为服务
从服务器A打包到服务器B后,在服务器B中运行安装服务命令,可自定义服务名,一台服务器上可装N个MySql实例 mysqld --install MySQL_0001 --defaults-file=D ...
- Git 更新
在向远程仓库推送之前,为避免冲突,通常会先从远程仓库更新,再添加文件,再commit到staging area,最近push. 更新使用命令git pull 1 2 3 4 5 6 7 8 9 10 ...
- POJ-图论-最短路模板(邻接矩阵)
POJ-图论-最短路模板 一.Floyd算法 刚读入数据时,G为读入的图邻接矩阵,更新后,G[i][j]表示结点i到结点j的最短路径长度 int G[N][N];//二维数组,其初始值即为该图的邻接矩 ...
- python的传参数用法
#!/usr/bin/python #导入sys模块 import sys print("the first argv:",sys.argv[0],"\n") ...
- P4Merge的使用
(官网: https://www.perforce.com/products/helix-core-apps/merge-diff-tool-p4merge 可以作为一个stand alone app ...
- HashMap、HashTable与ConcurrentHashMap的区别
1.HashTable与HashMap (1)HashTable和HashMap都实现了Map接口,但是HashTable的实现是基于Dictionary抽象类. (2)在HashMap中,null可 ...
- redis常用命令及持久化机制
redis 常用命令 查找redis服务文件 find / -name redis-server 查找配置文件 find / -name redis.conf 启动服务时候,要指定配置文件 启动r ...
- 007 SpringCloud 学习笔记3-----Eureka注册中心
1.Eureka概述 (1)引子 网约车出现以前,人们出门叫车只能叫出租车.一些私家车想做出租却没有资格,被称为黑车.而很多人想要约车,但是无奈出租车太少,不方便.私家车很多却不敢拦,而且满大街的车, ...
- C# 对象集合初始化
一.自动实现的属性 public class Person { // C# 3之前我们定义属性时,一般会像下面这样去定义 // 首先会先定义私有字段,再定义属性来对字段进行访问 //private s ...
- java之spring mvc之Controller配置的几种方式
这篇主要讲解 controller配置的几种方式. 1. URL对应 Bean 如果要使用此类配置方式,需要在XML中做如下样式配置 <!-- 配置handlerMapping --> & ...