首页 > 其他分享 >微信小游戏实时语音

微信小游戏实时语音

时间:2024-10-23 13:48:48浏览次数:7  
标签:function return words 微信 小游戏 toString 语音 var wx

微信小游戏实时语音

1.开通实时语音服务。(开通条件:注册用户大于 1000)

打开微信小游戏后台(微信公众平台),依次打开设置->游戏设置→开通语音服务

2.关于里面的几个重要api:

创建/加入房间:wx.joinVoIPChat

离开房间:wx.exitVoIPChat

更新房间麦克风/耳机静音设置:wx.updateVoIPChatMuteConfig

监听房间成员变化:wx.onVoIPChatMembersChanged

监听房间成员通话状态变化:wx.onVoIPChatSpeakersChanged

监听通话中断:wx.onVoIPChatInterrupted

3.下面是要用到的一些方法:

1)获取code:

调用wx.login

2)获取session_key、openid

 wx.request({
            url: 'https://api.weixin.qq.com/sns/jscode2session?appid=' + APPID + '&secret=' + SECRET + '&js_code=' + res.code,
            method: 'GET',
            success: (res) => {

              let session_key = res.data['session_key'].toString();

              let openid = res.data['openid'].toString();

            }

}

3)语音房间加密算法Has256:

/*
CryptoJS
code.google.com/p/crypto-js
(c) 2009-2012 by Jeff Mott. All rights reserved.
code.google.com/p/crypto-js/wiki/License
*/
var CryptoJS=CryptoJS||function(h,i){var e={},f=e.lib={},l=f.Base=function(){function a(){}return{extend:function(j){a.prototype=this;var d=new a;j&&d.mixIn(j);d.$super=this;return d},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var d in a)a.hasOwnProperty(d)&&(this[d]=a[d]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.$super.extend(this)}}}(),k=f.WordArray=l.extend({init:function(a,j){a=
  this.words=a||[];this.sigBytes=j!=i?j:4*a.length},toString:function(a){return(a||m).stringify(this)},concat:function(a){var j=this.words,d=a.words,c=this.sigBytes,a=a.sigBytes;this.clamp();if(c%4)for(var b=0;b<a;b++)j[c+b>>>2]|=(d[b>>>2]>>>24-8*(b%4)&255)<<24-8*((c+b)%4);else if(65535<d.length)for(b=0;b<a;b+=4)j[c+b>>>2]=d[b>>>2];else j.push.apply(j,d);this.sigBytes+=a;return this},clamp:function(){var a=this.words,b=this.sigBytes;a[b>>>2]&=4294967295<<32-8*(b%4);a.length=h.ceil(b/4)},clone:function(){var a=
  l.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var b=[],d=0;d<a;d+=4)b.push(4294967296*h.random()|0);return k.create(b,a)}}),o=e.enc={},m=o.Hex={stringify:function(a){for(var b=a.words,a=a.sigBytes,d=[],c=0;c<a;c++){var e=b[c>>>2]>>>24-8*(c%4)&255;d.push((e>>>4).toString(16));d.push((e&15).toString(16))}return d.join("")},parse:function(a){for(var b=a.length,d=[],c=0;c<b;c+=2)d[c>>>3]|=parseInt(a.substr(c,2),16)<<24-4*(c%8);return k.create(d,b/2)}},q=o.Latin1={stringify:function(a){for(var b=
  a.words,a=a.sigBytes,d=[],c=0;c<a;c++)d.push(String.fromCharCode(b[c>>>2]>>>24-8*(c%4)&255));return d.join("")},parse:function(a){for(var b=a.length,d=[],c=0;c<b;c++)d[c>>>2]|=(a.charCodeAt(c)&255)<<24-8*(c%4);return k.create(d,b)}},r=o.Utf8={stringify:function(a){try{return decodeURIComponent(escape(q.stringify(a)))}catch(b){throw Error("Malformed UTF-8 data");}},parse:function(a){return q.parse(unescape(encodeURIComponent(a)))}},b=f.BufferedBlockAlgorithm=l.extend({reset:function(){this._data=k.create();
  this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=r.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var b=this._data,d=b.words,c=b.sigBytes,e=this.blockSize,g=c/(4*e),g=a?h.ceil(g):h.max((g|0)-this._minBufferSize,0),a=g*e,c=h.min(4*a,c);if(a){for(var f=0;f<a;f+=e)this._doProcessBlock(d,f);f=d.splice(0,a);b.sigBytes-=c}return k.create(f,c)},clone:function(){var a=l.clone.call(this);a._data=this._data.clone();return a},_minBufferSize:0});f.Hasher=b.extend({init:function(){this.reset()},
  reset:function(){b.reset.call(this);this._doReset()},update:function(a){this._append(a);this._process();return this},finalize:function(a){a&&this._append(a);this._doFinalize();return this._hash},clone:function(){var a=b.clone.call(this);a._hash=this._hash.clone();return a},blockSize:16,_createHelper:function(a){return function(b,d){return a.create(d).finalize(b)}},_createHmacHelper:function(a){return function(b,d){return g.HMAC.create(a,d).finalize(b)}}});var g=e.algo={};return e}(Math);
  (function(h){var i=CryptoJS,e=i.lib,f=e.WordArray,e=e.Hasher,l=i.algo,k=[],o=[];(function(){function e(a){for(var b=h.sqrt(a),d=2;d<=b;d++)if(!(a%d))return!1;return!0}function f(a){return 4294967296*(a-(a|0))|0}for(var b=2,g=0;64>g;)e(b)&&(8>g&&(k[g]=f(h.pow(b,0.5))),o[g]=f(h.pow(b,1/3)),g++),b++})();var m=[],l=l.SHA256=e.extend({_doReset:function(){this._hash=f.create(k.slice(0))},_doProcessBlock:function(e,f){for(var b=this._hash.words,g=b[0],a=b[1],j=b[2],d=b[3],c=b[4],h=b[5],l=b[6],k=b[7],n=0;64>
  n;n++){if(16>n)m[n]=e[f+n]|0;else{var i=m[n-15],p=m[n-2];m[n]=((i<<25|i>>>7)^(i<<14|i>>>18)^i>>>3)+m[n-7]+((p<<15|p>>>17)^(p<<13|p>>>19)^p>>>10)+m[n-16]}i=k+((c<<26|c>>>6)^(c<<21|c>>>11)^(c<<7|c>>>25))+(c&h^~c&l)+o[n]+m[n];p=((g<<30|g>>>2)^(g<<19|g>>>13)^(g<<10|g>>>22))+(g&a^g&j^a&j);k=l;l=h;h=c;c=d+i|0;d=j;j=a;a=g;g=i+p|0}b[0]=b[0]+g|0;b[1]=b[1]+a|0;b[2]=b[2]+j|0;b[3]=b[3]+d|0;b[4]=b[4]+c|0;b[5]=b[5]+h|0;b[6]=b[6]+l|0;b[7]=b[7]+k|0},_doFinalize:function(){var e=this._data,f=e.words,b=8*this._nDataBytes,
  g=8*e.sigBytes;f[g>>>5]|=128<<24-g%32;f[(g+64>>>9<<4)+15]=b;e.sigBytes=4*f.length;this._process()}});i.SHA256=e._createHelper(l);i.HmacSHA256=e._createHmacHelper(l)})(Math);
  (function(){var h=CryptoJS,i=h.enc.Utf8;h.algo.HMAC=h.lib.Base.extend({init:function(e,f){e=this._hasher=e.create();"string"==typeof f&&(f=i.parse(f));var h=e.blockSize,k=4*h;f.sigBytes>k&&(f=e.finalize(f));for(var o=this._oKey=f.clone(),m=this._iKey=f.clone(),q=o.words,r=m.words,b=0;b<h;b++)q[b]^=1549556828,r[b]^=909522486;o.sigBytes=m.sigBytes=k;this.reset()},reset:function(){var e=this._hasher;e.reset();e.update(this._iKey)},update:function(e){this._hasher.update(e);return this},finalize:function(e){var f=
  this._hasher,e=f.finalize(e);f.reset();return f.finalize(this._oKey.clone().concat(e))}})})();
 module.exports = CryptoJS

使用时创建CryptoJS.js 复制上面代码,在game.js中引用。

let str = [APPID, groupId, nonceStr, timeStamp.toString()].sort().join('');

signature = CryptoJS.HmacSHA256(str, session_key).toString() 微信小游戏签名算法调用

随机字符串方法:

createNonceStr() { return Math.random().toString(36).substr(2, 15) }

时间戳获取:

createTimeStamp() {
    return parseInt(new Date().getTime() / 1000)
}

  

 

标签:function,return,words,微信,小游戏,toString,语音,var,wx
From: https://www.cnblogs.com/lichuangblog/p/18496206

相关文章

  • NVR接入录像回放平台EasyCVR视频融合平台语音对讲配置
    国标GB28181视频平台EasyCVR视频融合平台可拓展性强、视频能力灵活,平台可提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、云台控制、语音对讲、智能分析接入等功能。其中,在语音对讲方面,NVR接入录像回放平台目前可兼容海康、大华、宇视等设备的对讲。今......
  • uniapp微信小程序开发自定义相机
    自定义相机,调用手机原生相机,自定义拍照或录制键。原本以为是一个很复杂或者不能实现的功能,实际使用就是使用小程序的媒体组件<camera></camera>就可以了。<viewclass=""><cameraclass="camera"id="myCamera":device-position="devicePosition"@error="onCam......
  • springboot微信点餐小程序-计算机毕业设计源码93176
     目 录摘要1绪论1.1研究背景1.2 研究意义1.3微信开发者工具介绍2 系统分析2.1可行性分析2.2系统流程分析2.2.1数据新增流程2.2.2 数据删除流程2.3 系统功能分析2.4 系统用例分析3系统总体设计3.1 系统功能模块设计3.2 数据库设计......
  • uniapp实现微信小程序一键登录
    前言实现微信一键登录的流程:①微信小程序端获取临时凭证code(code只能被消费一次)②将code交给后端③后端拿到code,向微信服务器发起请求,拿到openid(openid代表微信用户在一个小程序中的唯一标识,另外拓展一下unionid代表微信用户在企业中的唯一标识)④后端查询数据库是否存......
  • 新 Chrome 插件可检测 AI 伪造声音;Canary Speech 推出用于临床对话的语音分析技术丨 R
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编......
  • 短剧cps小程序开发,源码独立搭建部署,正版短剧小说授权,支持抖音,微信,快手多端分销
    短剧CPS小程序是什么?用来分销推广各平台短剧的系统,系统已对接好他人短剧平台片源,利用小程序获取素材分销链接进行广泛传播,推广给用户能够在第三方小程序里充值观看短剧。 短剧分销系统功能付费观看:跳转第三方单剧付费或会员订阅,获取用户收入。分销佣金:推广者通过推广销售......
  • AI人声克隆,只需几秒语音,无需下载,小程序随时随地免费使用
    AI人声克隆,只需几秒语音,无需下载,小程序随时随地免费使用提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加【探索声音的无尽可能——“**幻音堂ai配音”**小程序】AI声音克隆技术是一种利用人工智能技术,根据一段声音样本,生成与之相似或完全相同的声音的......
  • 基于SpringBoot+Vue的办公用品管理系统微信小程序(源码+LW+调试文档+讲解)
    基于SpringBoot+Vue的办公用品管理系统是一套功能全面且实用的管理工具。该系统结合了SpringBoot强大的后端处理能力和Vue出色的前端交互体验。通过源码,用户可以深入了解系统的架构和实现细节,方便进行二次开发和定制。LW(可能是某种特定的文档或说明)有助于用户更好地......
  • 移动端页面字体在微信被放大,导致排版错乱
    微信在iOS和Android平台上对网页字体大小的调整机制不同,需要分别处理。以下是如何在PBootCMS中实现这一功能的详细步骤:1.阻止iOS平台上的字体放大在PBootCMS的模板文件中,找到header.html文件(通常位于/template/你的模板名称/目录下),并在<head>标签内添加以下CSS样式:<style>......
  • 对提供微信聊天背景图网站的架构与技术推测
    说明:该网站主要提供各种超高清的微信聊天背景图片,包括蓝天白云、沙漠、海洋、落日海岸等自然景观图片,同时还有一些如原神相关的图片分类。网站还提供每日超高清4K微信背景图推荐等内容。website: www.ccwallpaper.com网站架构方面-**分层架构**-**表现层**:负责展示图......