演示

Microphone

stop() 会释放音轨 — 卸载时必须停止。

Microphone

stop() 会释放音轨 — 卸载时必须停止。

  • Methods: requestPermission(), start(), stop(), getStream()
  • Pair start/stop; never leave tracks open after unmount
TSXMicrophone — React
1import { useEffect, useState } from "react"; 2import { Microphone, toast } from "@quan-erp/shared-frontend-core"; 3 4export function MicToggle() { 5 const [listening, setListening] = useState(false); 6 const mic = Microphone.instance; 7 8 useEffect(() => { 9 return () => { 10 mic.stop(); 11 }; 12 }, [mic]); 13 14 async function toggle() { 15 try { 16 if (listening) { 17 mic.stop(); 18 setListening(false); 19 return; 20 } 21 await mic.requestPermission(); 22 await mic.start(); 23 const stream = mic.getStream(); 24 console.log("tracks", stream?.getTracks().length); 25 setListening(true); 26 } catch (e) { 27 toast.error((e as Error).message ?? "Microphone failed"); 28 } 29 } 30 31 return ( 32 <button type="button" onClick={() => void toggle()}> 33 {listening ? "Stop mic" : "Start mic"} 34 </button> 35 ); 36}