// hooks/useAudioControl.ts import { useEffect, useState } from "react"; import AudioManager from "../utils/audioManager"; interface UseAudioControlReturn { currentPlayingId: string | null; stopAllAudio: () => void; pauseAllAudio: () => void; getAudioStates: () => Record< string, { isPlaying: boolean; duration: number; currentTime: number; } >; } export const useAudioControl = (): UseAudioControlReturn => { const [currentPlayingId, setCurrentPlayingId] = useState(null); const audioManager = AudioManager.getInstance(); useEffect(() => { // 定期检查当前播放状态 const interval = setInterval(() => { const currentId = audioManager.getCurrentAudioId(); setCurrentPlayingId(currentId); }, 500); return () => { clearInterval(interval); }; }, [audioManager]); const stopAllAudio = () => { audioManager.stopCurrent(); setCurrentPlayingId(null); }; const pauseAllAudio = () => { audioManager.pauseCurrent(); setCurrentPlayingId(null); }; const getAudioStates = () => { return audioManager.getAudioStates(); }; return { currentPlayingId, stopAllAudio, pauseAllAudio, getAudioStates, }; };