diff --git a/electron/resources/extra/win/scrcpy/SDL2.dll b/electron/resources/extra/win/scrcpy/SDL2.dll index 4078bab4..641c874a 100755 Binary files a/electron/resources/extra/win/scrcpy/SDL2.dll and b/electron/resources/extra/win/scrcpy/SDL2.dll differ diff --git a/electron/resources/extra/win/scrcpy/avcodec-61.dll b/electron/resources/extra/win/scrcpy/avcodec-61.dll index a2cf7744..076088ba 100755 Binary files a/electron/resources/extra/win/scrcpy/avcodec-61.dll and b/electron/resources/extra/win/scrcpy/avcodec-61.dll differ diff --git a/electron/resources/extra/win/scrcpy/avformat-61.dll b/electron/resources/extra/win/scrcpy/avformat-61.dll index ff28ea82..8b64c92a 100755 Binary files a/electron/resources/extra/win/scrcpy/avformat-61.dll and b/electron/resources/extra/win/scrcpy/avformat-61.dll differ diff --git a/electron/resources/extra/win/scrcpy/avutil-59.dll b/electron/resources/extra/win/scrcpy/avutil-59.dll index a4dce37b..0062970e 100755 Binary files a/electron/resources/extra/win/scrcpy/avutil-59.dll and b/electron/resources/extra/win/scrcpy/avutil-59.dll differ diff --git a/electron/resources/extra/win/scrcpy/libusb-1.0.dll b/electron/resources/extra/win/scrcpy/libusb-1.0.dll index 0d3c4f22..215f4858 100755 Binary files a/electron/resources/extra/win/scrcpy/libusb-1.0.dll and b/electron/resources/extra/win/scrcpy/libusb-1.0.dll differ diff --git a/electron/resources/extra/win/scrcpy/scrcpy-server b/electron/resources/extra/win/scrcpy/scrcpy-server index 121e372f..b3c63d4a 100755 Binary files a/electron/resources/extra/win/scrcpy/scrcpy-server and b/electron/resources/extra/win/scrcpy/scrcpy-server differ diff --git a/electron/resources/extra/win/scrcpy/scrcpy.exe b/electron/resources/extra/win/scrcpy/scrcpy.exe index c063c474..4217170f 100755 Binary files a/electron/resources/extra/win/scrcpy/scrcpy.exe and b/electron/resources/extra/win/scrcpy/scrcpy.exe differ diff --git a/electron/resources/extra/win/scrcpy/swresample-5.dll b/electron/resources/extra/win/scrcpy/swresample-5.dll index a533dfd9..4a080257 100755 Binary files a/electron/resources/extra/win/scrcpy/swresample-5.dll and b/electron/resources/extra/win/scrcpy/swresample-5.dll differ diff --git a/src/components/Quick/components/Task/components/TaskListDialog/index.vue b/src/components/Quick/components/Task/components/TaskListDialog/index.vue index e62a3548..3b0b3a1c 100644 --- a/src/components/Quick/components/Task/components/TaskListDialog/index.vue +++ b/src/components/Quick/components/Task/components/TaskListDialog/index.vue @@ -109,7 +109,7 @@ import { ElMessage } from 'element-plus' +import dayjs from 'dayjs' import { timeUnit as intervalModel, @@ -214,6 +216,14 @@ function handleRemove(row) { taskStore.remove(row) } +function checkExpired(row) { + if (!row?.formatTimeout || ['interval'].includes(row.timerType)) { + return true + } + + return dayjs(row.formatTimeout).unix() > dayjs().unix() +} + defineExpose({ open, close, diff --git a/src/locales/languages/en-US.json b/src/locales/languages/en-US.json index 8e4ce71c..46783320 100644 --- a/src/locales/languages/en-US.json +++ b/src/locales/languages/en-US.json @@ -60,6 +60,7 @@ "device.task.frequency.interval": "Periodic repetition", "device.task.timeout": "Execution Time", "device.task.timeout.tips": "Cannot be earlier than the current time", + "device.task.timeout.expired": "The task has expired", "device.task.interval": "Repeat Interval", "device.task.devices": "Involved Devices", "device.task.noRepeat": "No Repeat", @@ -311,6 +312,9 @@ "preferences.audio.disable-audio.name": "Disable Audio Forwarding", "preferences.audio.disable-audio.placeholder": "Audio forwarding will be disabled when enabled", "preferences.audio.disable-audio.tips": "If your device audio capture is abnormal, you can open this option to ensure that you can open the mirror normally", + "preferences.audio.audioDup.name": "Keep device audio", + "preferences.audio.audioDup.placeholder": "When enabled, audio will continue to play on the device during mirroring", + "preferences.audio.audioDup.tips": "Note: This option requires Android 13+ and apps can opt out (in which case they won't be captured)", "preferences.audio.audio-source.name": "Audio Source", "preferences.audio.audio-source.placeholder": "Device Audio Output", "preferences.audio.audio-source.tips": "Tip: Selecting 'Microphone' as the source will allow you to record audio.", @@ -335,8 +339,8 @@ "preferences.input.mouse.options[2].placeholder": "Simulates a physical HID mouse using the AOAv2 protocol", "preferences.input.mouse.options[3].placeholder": "Disable mouse input", "preferences.input.mouse-bind.name": "Mouse Bind", - "preferences.input.mouse-bind.tips": "Mouse button bindings can be configured using the \"xxxx\" parameter, where each \"x\" represents a button (right click, middle click, 4th click, 5th click), and can be set to forward (+), ignore (-), back (b), home (h), app switch (s), or expand notification panel (n).", - "preferences.input.mouse-bind.placeholder": "bhsn", + "preferences.input.mouse-bind.tips": "This option allows customization of mouse button functions. It uses two sets of 4-character sequences to define primary and secondary (Shift key) bindings. Each character represents a mouse button (right, middle, 4th, 5th) and can be set to: '+' forward to device, '-' ignore, 'b' back, 'h' home, 's' app switch, 'n' expand notification panel. For example, --mouse-bind=bhsn:++++ means primary bindings are back/home/app switch/notification, while secondary bindings all forward to the device.", + "preferences.input.mouse-bind.placeholder": "bhsn:++++", "preferences.input.keyboard.name": "Keyboard Mode", "preferences.input.keyboard.placeholder": "sdk", "preferences.input.keyboard.tips": "Set keyboard input mode", diff --git a/src/locales/languages/zh-CN.json b/src/locales/languages/zh-CN.json index 20e038c7..74490270 100644 --- a/src/locales/languages/zh-CN.json +++ b/src/locales/languages/zh-CN.json @@ -60,6 +60,7 @@ "device.task.frequency.interval": "周期重复", "device.task.timeout": "执行时间", "device.task.timeout.tips": "不能小于当前时间", + "device.task.timeout.expired": "该任务已过期", "device.task.interval": "重复间隔", "device.task.devices": "涉及设备", "device.task.noRepeat": "不重复", @@ -311,6 +312,9 @@ "preferences.audio.disable-audio.name": "禁用音频转发", "preferences.audio.disable-audio.placeholder": "开启后将禁用音频转发", "preferences.audio.disable-audio.tips": "如果您的设备音频捕获异常,则可以打开此选项,以确保可以正常打开镜像", + "preferences.audio.audioDup.name": "保持设备音频", + "preferences.audio.audioDup.placeholder": "开启后镜像时将保持音频在设备上播放", + "preferences.audio.audioDup.tips": "注意:该选项需要 Android 13+,并且应用程序可以选择退出(这种情况下它们将不会被捕获)", "preferences.audio.audio-source.name": "音频源", "preferences.audio.audio-source.placeholder": "设备音频输出", "preferences.audio.audio-source.tips": "技巧:如果将来源设为麦克风将可以在录制时将声音录制下来", @@ -335,8 +339,8 @@ "preferences.input.mouse.options[2].placeholder": "使用 AOAv2 协议模拟物理 HID 鼠标", "preferences.input.mouse.options[3].placeholder": "禁用鼠标输入", "preferences.input.mouse-bind.name": "鼠标绑定", - "preferences.input.mouse-bind.tips": "鼠标按键绑定可通过 “xxxx” 参数配置,其中每个 “x” 代表一个按键(右键、中键、第4键、第5键),可设置为转发(+)、忽略(-)、返回(b)、主页(h)、切换应用(s)、展开通知栏(n)。", - "preferences.input.mouse-bind.placeholder": "bhsn", + "preferences.input.mouse-bind.tips": "该选项允许自定义鼠标按键功能。它使用两组4字符序列来定义主要和次要(Shift键)绑定。每个字符代表一个鼠标按键(右键、中键、第4键、第5键),可以设置为:'+' 转发到设备, '-' 忽略, 'b' 返回, 'h' 主页, 's' 切换应用, 'n' 展开通知面板。例如, --mouse-bind=bhsn:++++ 表示主要绑定为 返回/主页/切换应用/通知,次要绑定全部转发到设备。", + "preferences.input.mouse-bind.placeholder": "bhsn:++++", "preferences.input.keyboard.name": "键盘模式", "preferences.input.keyboard.tips": "设置键盘输入模式", "preferences.input.keyboard.placeholder": "sdk", diff --git a/src/locales/languages/zh-TW.json b/src/locales/languages/zh-TW.json index 511aaec4..554c64e1 100644 --- a/src/locales/languages/zh-TW.json +++ b/src/locales/languages/zh-TW.json @@ -60,6 +60,7 @@ "device.task.frequency.interval": "週期重複", "device.task.timeout": "執行時間", "device.task.timeout.tips": "不能小於當前時間", + "device.task.timeout.expired": "該任務已過期", "device.task.interval": "重複間隔", "device.task.devices": "涉及設備", "device.task.noRepeat": "不重複", @@ -311,6 +312,9 @@ "preferences.audio.disable-audio.name": "停用音訊轉發", "preferences.audio.disable-audio.placeholder": "開啟後將停用音訊轉發", "preferences.audio.disable-audio.tips": "如果您的裝置音訊捕獲異常,則可以開啟此選項,以確保可以正常開啟映像", + "preferences.audio.audioDup.name": "保持裝置音訊", + "preferences.audio.audioDup.placeholder": "開啟後鏡像時將保持音訊在裝置上播放", + "preferences.audio.audioDup.tips": "注意:此選項需要 Android 13+,且應用程式可選擇退出(這種情況下它們將不會被捕獲)", "preferences.audio.audio-source.name": "音訊來源", "preferences.audio.audio-source.placeholder": "裝置音訊輸出", "preferences.audio.audio-source.tips": "技巧:如果將來源設為麥克風將可以在錄製時將聲音錄製下來", @@ -335,8 +339,8 @@ "preferences.input.mouse.options[2].placeholder": "使用 AOAv2 協議模擬物理 HID 滑鼠", "preferences.input.mouse.options[3].placeholder": "停用滑鼠輸入", "preferences.input.mouse-bind.name": "滑鼠綁定", - "preferences.input.mouse-bind.tips": "滑鼠按鍵綁定可透過「xxxx」 參數配置,其中每個「x」 代表一個按鍵(右鍵、中鍵、第4鍵、第5鍵),可設定為轉送(+)、忽略(-)、返回(b)、主頁(h)、切換應用程式(s)、展開通知欄(n)。", - "preferences.input.mouse-bind.placeholder": "bhsn", + "preferences.input.mouse-bind.tips": "該選項允許自定義滑鼠按鍵功能。它使用兩組4字符序列來定義主要和次要(Shift鍵)綁定。每個字符代表一個滑鼠按鍵(右鍵、中鍵、第4鍵、第5鍵),可以設置為:'+' 轉發到設備, '-' 忽略, 'b' 返回, 'h' 主頁, 's' 切換應用, 'n' 展開通知面板。例如, --mouse-bind=bhsn:++++ 表示主要綁定為 返回/主頁/切換應用/通知,次要綁定全部轉發到設備。", + "preferences.input.mouse-bind.placeholder": "bhsn:++++", "preferences.input.keyboard.name": "鍵盤模式", "preferences.input.keyboard.tips": "設定鍵盤輸入模式", "preferences.input.keyboard.placeholder": "sdk", diff --git a/src/store/preference/model/audio/index.js b/src/store/preference/model/audio/index.js index 8ea85c19..37de9851 100644 --- a/src/store/preference/model/audio/index.js +++ b/src/store/preference/model/audio/index.js @@ -11,6 +11,14 @@ export default { placeholder: 'preferences.audio.disable-audio.placeholder', tips: 'preferences.audio.disable-audio.tips', }, + audioDup: { + label: 'preferences.audio.audioDup.name', + field: '--audio-dup', + type: 'Switch', + value: undefined, + placeholder: 'preferences.audio.audioDup.placeholder', + tips: 'preferences.audio.audioDup.tips', + }, audioSource: { label: 'preferences.audio.audio-source.name', field: '--audio-source', diff --git a/src/store/task/index.js b/src/store/task/index.js index c0814e6d..d72bfffe 100644 --- a/src/store/task/index.js +++ b/src/store/task/index.js @@ -7,6 +7,7 @@ import { nanoid } from 'nanoid' import { useEventBus } from '@vueuse/core' +import { ElMessage } from 'element-plus' import { clearTimer, isIPWithPort, replaceIP, setTimer } from '$/utils/index.js' dayjs.extend(duration) @@ -71,6 +72,11 @@ export const useTaskStore = defineStore( const timeout = getTimeout(task) + if (timeout < 0) { + ElMessage.warning(window.t('device.task.timeout.expired')) + return false + } + task.timerId = setTimer( timerType, () => {