|
|
@@ -0,0 +1,80 @@
|
|
|
+const plugin = requirePlugin("WechatSI"),
|
|
|
+ manager = plugin.getRecordRecognitionManager();
|
|
|
+let countDown = null,
|
|
|
+ identifyTheResult = null;
|
|
|
+manager.onStop = function (res) {
|
|
|
+ console.log("识别结束", res)
|
|
|
+ wx.showToast({
|
|
|
+ title: res.result ? '录入成功' : '未接收到录入声音',
|
|
|
+ icon: "none",
|
|
|
+ })
|
|
|
+ identifyTheResult(res.result)
|
|
|
+}
|
|
|
+Component({
|
|
|
+ properties: {
|
|
|
+ callback: {
|
|
|
+ type: Function
|
|
|
+ }
|
|
|
+ },
|
|
|
+ data: {
|
|
|
+ show: false,
|
|
|
+ seconds: 60
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ /* 点击遮罩层 */
|
|
|
+ onClose() {
|
|
|
+ manager.stop();
|
|
|
+ },
|
|
|
+ /* 开启语音输入 */
|
|
|
+ talking(e) {
|
|
|
+ const that = this;
|
|
|
+ manager.onError = function (res) {
|
|
|
+ console.error("error msg", res.msg)
|
|
|
+ clearInterval(countDown)
|
|
|
+ that.setData({
|
|
|
+ show: false,
|
|
|
+ seconds: 60
|
|
|
+ })
|
|
|
+ wx.showToast({
|
|
|
+ title: '语音识别错误' + res.msg,
|
|
|
+ icon: "none",
|
|
|
+ mask: true
|
|
|
+ })
|
|
|
+ };
|
|
|
+ if (this.data.show) return manager.stop();
|
|
|
+ wx.showToast({
|
|
|
+ title: '语音识别录入中...',
|
|
|
+ icon: "none",
|
|
|
+ duration: 60000
|
|
|
+ })
|
|
|
+ manager.start({
|
|
|
+ duration: 60000,
|
|
|
+ lang: "zh_CN"
|
|
|
+ })
|
|
|
+ this.setData({
|
|
|
+ show: true
|
|
|
+ })
|
|
|
+ countDown = setInterval(() => {
|
|
|
+ if (this.data.seconds == 0) {
|
|
|
+ clearInterval(countDown)
|
|
|
+ this.setData({
|
|
|
+ show: false,
|
|
|
+ seconds: 60
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.setData({
|
|
|
+ seconds: this.data.seconds - 1
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }, 1000);
|
|
|
+ identifyTheResult = function (value) {
|
|
|
+ clearInterval(countDown)
|
|
|
+ that.setData({
|
|
|
+ show: false,
|
|
|
+ seconds: 60
|
|
|
+ });
|
|
|
+ if (value) that.triggerEvent("callback", value)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ }
|
|
|
+})
|