import { Component, OnInit } from '@angular/core';
import { ModalController } from '@ionic/angular';

@Component({
  selector: 'app-page-yuyin',
  templateUrl: './page-yuyin.component.html',
  styleUrls: ['./page-yuyin.component.scss'],
  standalone: true,
})
export class PageYuyinComponent  implements OnInit {

  ngOnInit() {}

   recognition: any; // 用于存储语音识别实例
    recognizedContent: string = ''; // 用于存储识别到的语音内容
    timer: string = '00:00'; // 用于显示计时器
    interval: any; // 用于存储定时器的引用
    elapsedSeconds: number = 0; // 计时器的秒数
    isVoiceInputVisible: boolean = false; // 控制语音输入框的显示状态
   
  
    constructor() {
      // 初始化语音识别
      this.initSpeechRecognition();
     }
  
  
  
     
    // 初始化语音识别
  initSpeechRecognition() {
    const SpeechRecognition = (window as any).SpeechRecognition || (window as any).webkitSpeechRecognition;
    if (SpeechRecognition) {
      this.recognition = new SpeechRecognition();
      this.recognition.lang = 'zh-CN'; // 设置语言为中文
      this.recognition.interimResults = false; // 不返回中间结果
      this.recognition.maxAlternatives = 1; // 最大替代结果数
      this.recognition.continuous = true; // 设置为连续识别
      
  
      // 处理识别结果
      this.recognition.onresult = (event: any) => {
        this.recognizedContent += event.results[event.results.length - 1][0].transcript; // 追加识别结果
        console.log("识别到的内容:", this.recognizedContent); // 打印识别到的内容
      };
  
      // 处理识别错误
      this.recognition.onerror = (event: any) => {
        if (event.error === 'no-speech') {
          console.warn('没有检测到语音，继续监听...');
        } else {
          console.error('语音识别错误:', event.error);
        }
      };
    } else {
      console.log('该浏览器不支持语音识别');
    }
  }
  
  
  startVoice() {
    if (this.recognition && this.recognition.state !== 'active') { // 检查识别状态
      this.recognition.start(); // 启动语音识别
      console.log('语音识别启动...');
      this.startTimer(); // 启动计时器
      this.isVoiceInputVisible = true; // 显示语音输入框
    } else {
      console.warn('语音识别已经在运行中'); // 提示用户语音识别已在运行
    }
  }
  
    // 启动计时器
    startTimer() {
      this.elapsedSeconds = 0; // 重置秒数
      this.timer = '00:00'; // 重置计时器显示
      this.interval = setInterval(() => {
        this.elapsedSeconds++;
        const minutes = Math.floor(this.elapsedSeconds / 60);
        const seconds = this.elapsedSeconds % 60;
        this.timer = `${this.padZero(minutes)}:${this.padZero(seconds)}`; // 更新计时器显示
      }, 1000);
    }
  
    // 格式化数字为两位数
    padZero(num: number): string {
      return num < 10 ? '0' + num : num.toString();
    }
  // 取消语音输入
  cancelVoiceInput() {
    if (this.recognition) {
      this.recognition.stop(); // 停止语音识别
      console.log('语音识别已停止');
      clearInterval(this.interval); // 清除计时器
      this.timer = '00:00'; // 重置计时器显示
      this.recognizedContent = ''; // 清空识别内容
    }
    this.isVoiceInputVisible = false; // 隐藏语音输入框
  
  }
  
  // 发送语音输入
  sendVoiceInput() {
    if (this.recognition) {
      this.recognition.stop(); // 停止语音识别
      console.log('语音识别已停止');
      clearInterval(this.interval); // 清除计时器
      this.timer = '00:00'; // 重置计时器显示
      // 将识别到的内容传到输入框中
return this.recognizedContent;
    }
    this.isVoiceInputVisible = false; // 隐藏语音输入框
  
  }

}
