|
|
|
|
@ -1,4 +1,6 @@
|
|
|
|
|
// subPage/chat/index.js
|
|
|
|
|
var plugin = requirePlugin("WechatSI")
|
|
|
|
|
let manager = plugin.getRecordRecognitionManager()
|
|
|
|
|
Page({
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
@ -7,6 +9,8 @@ Page({
|
|
|
|
|
data: {
|
|
|
|
|
eventType:'input',// 底部事件类型 input 键盘输入,voice 语音输入
|
|
|
|
|
sendText:'',// 发送的输入框内容
|
|
|
|
|
voiceBtnText:'按住 说话',
|
|
|
|
|
screenHeight:'0',
|
|
|
|
|
list:[
|
|
|
|
|
{
|
|
|
|
|
id:-1,
|
|
|
|
|
@ -14,73 +18,107 @@ Page({
|
|
|
|
|
isUp:false,
|
|
|
|
|
isDown:false,
|
|
|
|
|
},
|
|
|
|
|
]
|
|
|
|
|
],
|
|
|
|
|
/* 录音状态
|
|
|
|
|
* -1 未录音,
|
|
|
|
|
* 0 按下
|
|
|
|
|
* 1 长按事件
|
|
|
|
|
* 2 同意授权,
|
|
|
|
|
* 3 拒绝授权,
|
|
|
|
|
* 4 没有进行授权操作
|
|
|
|
|
* 5 开始录音
|
|
|
|
|
* 6 抬起并结束录音
|
|
|
|
|
* 7 超出操作范围,提示取消录音
|
|
|
|
|
* 8 录音异常
|
|
|
|
|
* 9 抬起
|
|
|
|
|
*/
|
|
|
|
|
voiceSpeed:-1,
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 生命周期函数--监听页面加载
|
|
|
|
|
*/
|
|
|
|
|
onLoad(options) {
|
|
|
|
|
wx.setNavigationBarTitle({
|
|
|
|
|
title: options.title,
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 生命周期函数--监听页面初次渲染完成
|
|
|
|
|
*/
|
|
|
|
|
onReady() {
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 生命周期函数--监听页面显示
|
|
|
|
|
*/
|
|
|
|
|
onShow() {
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 生命周期函数--监听页面隐藏
|
|
|
|
|
*/
|
|
|
|
|
onHide() {
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 生命周期函数--监听页面卸载
|
|
|
|
|
*/
|
|
|
|
|
onUnload() {
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 页面相关事件处理函数--监听用户下拉动作
|
|
|
|
|
*/
|
|
|
|
|
onPullDownRefresh() {
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 页面上拉触底事件的处理函数
|
|
|
|
|
*/
|
|
|
|
|
onReachBottom() {
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 用户点击右上角分享
|
|
|
|
|
*/
|
|
|
|
|
onShareAppMessage() {
|
|
|
|
|
|
|
|
|
|
const res = wx.getSystemInfoSync();
|
|
|
|
|
console.log('设备数据',res);
|
|
|
|
|
this.setData({
|
|
|
|
|
screenHeight: res.screenHeight + 'px',
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleEvent(e){
|
|
|
|
|
handleEvent(e) {
|
|
|
|
|
let that = this;
|
|
|
|
|
that.animate();
|
|
|
|
|
that.setData({
|
|
|
|
|
eventType:e.currentTarget.dataset.type == 'input' ? 'voice':'input'
|
|
|
|
|
})
|
|
|
|
|
eventType: e.currentTarget.dataset.type == 'input' ? 'voice' : 'input',
|
|
|
|
|
voiceSpeed:-1
|
|
|
|
|
});
|
|
|
|
|
if (that.data.eventType == 'voice') {
|
|
|
|
|
// 检查是否有录音权限
|
|
|
|
|
wx.getSetting({
|
|
|
|
|
success(res) {
|
|
|
|
|
if (!res.authSetting['scope.record']) {
|
|
|
|
|
that.setData({
|
|
|
|
|
voiceSpeed:4
|
|
|
|
|
});
|
|
|
|
|
wx.authorize({
|
|
|
|
|
scope: 'scope.record',
|
|
|
|
|
success() {
|
|
|
|
|
console.log('录音权限已授权');
|
|
|
|
|
// 继续执行其他逻辑
|
|
|
|
|
that.setData({
|
|
|
|
|
voiceSpeed:2
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
fail() {
|
|
|
|
|
console.log('录音权限未授权');
|
|
|
|
|
that.setData({
|
|
|
|
|
voiceSpeed:4
|
|
|
|
|
});
|
|
|
|
|
wx.showModal({
|
|
|
|
|
title: '提示',
|
|
|
|
|
content: '需要录音权限才能使用语音输入功能,请在设置中授权。',
|
|
|
|
|
confirmText: '去设置',
|
|
|
|
|
cancelText: '取消',
|
|
|
|
|
success(res) {
|
|
|
|
|
if (res.confirm) {
|
|
|
|
|
wx.openSetting({
|
|
|
|
|
success(res) {
|
|
|
|
|
console.log('用户打开设置', res.authSetting);
|
|
|
|
|
if (res.authSetting['scope.record']) {
|
|
|
|
|
console.log('用户已授权录音权限');
|
|
|
|
|
// 用户授权后可以继续执行其他逻辑
|
|
|
|
|
that.setData({
|
|
|
|
|
voiceSpeed:2
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
console.log('用户未授权录音权限');
|
|
|
|
|
// 用户未授权录音权限后的逻辑
|
|
|
|
|
that.setData({
|
|
|
|
|
voiceSpeed:3
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
} else if (res.cancel) {
|
|
|
|
|
console.log('用户取消授权');
|
|
|
|
|
// 用户取消授权后的逻辑
|
|
|
|
|
that.setData({
|
|
|
|
|
voiceSpeed:3
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
console.log('录音权限已授权');
|
|
|
|
|
// 继续执行其他逻辑
|
|
|
|
|
that.setData({
|
|
|
|
|
voiceSpeed:2
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
handleUp(e){
|
|
|
|
|
let that = this;
|
|
|
|
|
@ -138,7 +176,6 @@ Page({
|
|
|
|
|
sendText:e.detail.value
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
animate($type='light') {
|
|
|
|
|
wx.vibrateShort({
|
|
|
|
|
type:$type
|
|
|
|
|
@ -146,8 +183,6 @@ Page({
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 文本消息发送
|
|
|
|
|
handleSend(){
|
|
|
|
|
let that = this;
|
|
|
|
|
@ -179,5 +214,76 @@ Page({
|
|
|
|
|
],
|
|
|
|
|
sendText:''
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* 语音消息发送
|
|
|
|
|
*/
|
|
|
|
|
handleTouchStart: function(event) {
|
|
|
|
|
console.log('手指按下事件触发');
|
|
|
|
|
let that = this;
|
|
|
|
|
that.setData({
|
|
|
|
|
voiceSpeed: 0 // 假设 0 表示按下
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
handleLongPress: function(event) {
|
|
|
|
|
let that = this;
|
|
|
|
|
console.log('长按事件触发');
|
|
|
|
|
that.setData({
|
|
|
|
|
voiceSpeed:1
|
|
|
|
|
});
|
|
|
|
|
manager.start({duration:30000, lang: "zh_CN"})
|
|
|
|
|
// 处理长按事件的逻辑
|
|
|
|
|
manager.onStart = function(res) {
|
|
|
|
|
that.setData({
|
|
|
|
|
voiceSpeed:5
|
|
|
|
|
});
|
|
|
|
|
console.log("成功开始录音识别", res)
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
handleTouchEnd: function(event) {
|
|
|
|
|
console.log('手指抬起事件触发',this.data.voiceSpeed);
|
|
|
|
|
let that = this;
|
|
|
|
|
if(that.data.voiceSpeed >= 1){
|
|
|
|
|
that.animate();
|
|
|
|
|
that.data.sendText = '模拟语音转文本';
|
|
|
|
|
that.setData({
|
|
|
|
|
list:[
|
|
|
|
|
...that.data.list,
|
|
|
|
|
{
|
|
|
|
|
id:that.data.list.length,
|
|
|
|
|
type:'text',
|
|
|
|
|
isUp:false,
|
|
|
|
|
isDown:false,
|
|
|
|
|
content:that.data.sendText
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id:that.data.list.length + 1,
|
|
|
|
|
type:'html',
|
|
|
|
|
isUp:false,
|
|
|
|
|
isDown:false,
|
|
|
|
|
content:`【北京奔驰连接器日结工】<br /><br />🚻 男女 18-48, 18-48周岁, 男女不限, 要求26个英文字母, 纹身烟疤拍照确认, 黑户,明显纹身,临时身份证不予接收,两班倒,站班<br /><br />💰 员工250元/天,支付60天;60天以后员工220元/天;每月10号发薪。培训工资100元/天,员工 16 元/时以上部分含税6个点的,打卡不满七天无工资;60天以后员工缴纳社保`
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
sendText:''
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
that.setData({
|
|
|
|
|
voiceSpeed:9
|
|
|
|
|
});
|
|
|
|
|
// 处理手指抬起事件的逻辑
|
|
|
|
|
manager.stop();
|
|
|
|
|
manager.onStop = function(res) {
|
|
|
|
|
that.setData({
|
|
|
|
|
voiceSpeed:6
|
|
|
|
|
});
|
|
|
|
|
console.log("监听录音结束 ;临时路径record file path", res.tempFilePath)
|
|
|
|
|
console.log("监听录音结束 结果result", res.result)
|
|
|
|
|
}
|
|
|
|
|
// manager.onError = function(res) {
|
|
|
|
|
// that.setData({
|
|
|
|
|
// voiceSpeed:8
|
|
|
|
|
// });
|
|
|
|
|
// console.error("监听录音异常 error msg", res.msg)
|
|
|
|
|
// }
|
|
|
|
|
},
|
|
|
|
|
})
|