diff --git a/src/core/audio-recorder.ts b/src/core/audio-recorder.ts index b721d0e..6959f0c 100644 --- a/src/core/audio-recorder.ts +++ b/src/core/audio-recorder.ts @@ -229,7 +229,7 @@ export class AudioRecorder extends EventEmitter { log(LogLevel.DEBUG, 'MediaStreamSource 已断开'); } if (this.stream) { - const tracks = this.stream.getTracks?.() || this.stream.tracks || []; + const tracks = this.stream.getTracks?.() || []; tracks.forEach((track: any) => track.stop?.()); this.stream = null; log(LogLevel.DEBUG, '媒体流已停止'); diff --git a/src/electron-main.ts b/src/electron-main.ts index a97c632..140d18e 100644 --- a/src/electron-main.ts +++ b/src/electron-main.ts @@ -151,6 +151,13 @@ ipcMain.handle('save-settings', async (_event: any, settings: Record { + logger.info('IPC: 请求音频设备列表'); + // 设备列表需要在渲染进程中获取 + // 返回一个标记,让渲染进程自行获取 + return { available: true }; +}); + // 所有窗口关闭时退出应用 app.on('window-all-closed', () => { logger.info('所有窗口已关闭,退出应用'); diff --git a/src/preload.ts b/src/preload.ts index 59a836f..31052f1 100644 --- a/src/preload.ts +++ b/src/preload.ts @@ -22,6 +22,9 @@ contextBridge.exposeInMainWorld('electronAPI', { // 文件检查 checkFileExists: (path: string) => ipcRenderer.invoke('check-file-exists', path), + // 设备列表 + listAudioDevices: () => ipcRenderer.invoke('list-audio-devices'), + // 事件监听 onToggleRecording: (callback: () => void) => { ipcRenderer.on('toggle-recording', () => callback());