WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Commit 79f5452

Browse files
authored
Merge pull request #60 from suqi8/main
feat(Scrcpy): 添加虚拟屏幕功能
2 parents 2f6f35f + f3fdca2 commit 79f5452

File tree

5 files changed

+143
-4
lines changed

5 files changed

+143
-4
lines changed

UotanToolbox/Assets/Resources.Designer.cs

Lines changed: 49 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UotanToolbox/Assets/Resources.resx

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -579,6 +579,12 @@
579579
<data name="Scrcpy_RecordScreen" xml:space="preserve">
580580
<value>Record Screen</value>
581581
</data>
582+
<data name="Scrcpy_Enable_Virtual_Screen" xml:space="preserve">
583+
<value>Enable the virtual screen</value>
584+
</data>
585+
<data name="Scrcpy_Virtual_Screen_Package" xml:space="preserve">
586+
<value>Virtual Screen Package name</value>
587+
</data>
582588
<data name="Scrcpy_ScrcpyCastingTool" xml:space="preserve">
583589
<value>Scrcpy Casting Tool</value>
584590
</data>
@@ -600,6 +606,9 @@
600606
<data name="Scrcpy_WindowTopping" xml:space="preserve">
601607
<value>Window topping</value>
602608
</data>
609+
<data name="Scrcpy_VirtualDisplay" xml:space="preserve">
610+
<value>Virtual display</value>
611+
</data>
603612
<data name="Modifypartition_CreatePart" xml:space="preserve">
604613
<value>Create</value>
605614
</data>
@@ -1488,4 +1497,10 @@ If you wish to replace Magisk, please first select your Magisk on the Basic Flas
14881497
<data name="Common_FBRoot" xml:space="preserve">
14891498
<value>Fastboot device detected, but it seems that the current system has not written relevant USB rules. Should you try to execute with root privileges?</value>
14901499
</data>
1500+
<data name="Scrcpy_VS_DisplaySize" xml:space="preserve">
1501+
<value>Virtual Screen Display Size</value>
1502+
</data>
1503+
<data name="Scrcpy_VS_DisplaySizeExample" xml:space="preserve">
1504+
<value>1920x1080/460 (Height × Width)/dpi</value>
1505+
</data>
14911506
</root>

UotanToolbox/Assets/Resources.zh-CN.resx

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -574,11 +574,17 @@
574574
<value>等比缩放</value>
575575
</data>
576576
<data name="Scrcpy_RecordDictionary" xml:space="preserve">
577-
<value> </value>
577+
<value>录屏目录</value>
578578
</data>
579579
<data name="Scrcpy_RecordScreen" xml:space="preserve">
580580
<value>录制屏幕</value>
581581
</data>
582+
<data name="Scrcpy_Enable_Virtual_Screen" xml:space="preserve">
583+
<value>启用虚拟屏幕</value>
584+
</data>
585+
<data name="Scrcpy_Virtual_Screen_Package" xml:space="preserve">
586+
<value>虚拟屏幕包名</value>
587+
</data>
582588
<data name="Scrcpy_ScrcpyCastingTool" xml:space="preserve">
583589
<value>Scrcpy投屏工具</value>
584590
</data>
@@ -600,6 +606,9 @@
600606
<data name="Scrcpy_WindowTopping" xml:space="preserve">
601607
<value>窗口置顶</value>
602608
</data>
609+
<data name="Scrcpy_VirtualDisplay" xml:space="preserve">
610+
<value>虚拟屏幕</value>
611+
</data>
603612
<data name="Modifypartition_CreatePart" xml:space="preserve">
604613
<value>创建分区</value>
605614
</data>
@@ -1485,4 +1494,10 @@
14851494
<data name="Common_FBRoot" xml:space="preserve">
14861495
<value>检测到Fastboot设备,但当前系统似乎存未写入相关USB规则,是否尝试以Root权限执行?</value>
14871496
</data>
1497+
<data name="Scrcpy_VS_DisplaySize" xml:space="preserve">
1498+
<value>虚拟屏幕大小</value>
1499+
</data>
1500+
<data name="Scrcpy_VS_DisplaySizeExample" xml:space="preserve">
1501+
<value>1920x1080/460 (高 × 宽)/dpi</value>
1502+
</data>
14881503
</root>

UotanToolbox/Features/Scrcpy/ScrcpyView.axaml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,47 @@
315315
</StackPanel>
316316
</Grid>
317317
</suki:GlassCard>
318+
<!-- Virtual display -->
319+
<suki:GlassCard Width="475"
320+
Height="215"
321+
Margin="10"
322+
VerticalAlignment="Top">
323+
<Grid>
324+
<StackPanel>
325+
<TextBlock HorizontalAlignment="Left"
326+
VerticalAlignment="Top"
327+
FontWeight="DemiBold"
328+
Text="{x:Static assets:Resources.Scrcpy_VirtualDisplay}" />
329+
<StackPanel Margin="0,15,0,0" Orientation="Horizontal">
330+
<TextBlock Width="90"
331+
Margin="8,0,0,0"
332+
VerticalAlignment="Center"
333+
FontSize="13"
334+
Foreground="{DynamicResource SukiLowText}"
335+
Text="{x:Static assets:Resources.Scrcpy_Enable_Virtual_Screen}" />
336+
<ToggleSwitch Margin="275,0,0,0" IsChecked="{Binding EnableVirtualScreen}" />
337+
</StackPanel>
338+
<StackPanel Margin="0,5,0,0" Orientation="Horizontal">
339+
<TextBlock Width="90"
340+
Margin="8,0,0,0"
341+
VerticalAlignment="Center"
342+
FontSize="13"
343+
Foreground="{DynamicResource SukiLowText}"
344+
Text="{x:Static assets:Resources.Scrcpy_Virtual_Screen_Package}" />
345+
<TextBox Width="330" Name="VirtualScreenPackage" Watermark="{x:Static assets:Resources.Scrcpy_Virtual_Screen_Package}" Text="{Binding VirtualScreenPackage, Mode=TwoWay}" theme:TextBoxExtensions.AddDeleteButton="False"/>
346+
</StackPanel>
347+
<StackPanel Margin="0,5,0,0" Orientation="Horizontal">
348+
<TextBlock Width="90"
349+
Margin="8,0,0,0"
350+
VerticalAlignment="Center"
351+
FontSize="13"
352+
Foreground="{DynamicResource SukiLowText}"
353+
Text="{x:Static assets:Resources.Scrcpy_VS_DisplaySize}" />
354+
<TextBox Width="330" Name="VirtualScreenDisplaySize" Watermark="{x:Static assets:Resources.Scrcpy_VS_DisplaySizeExample}" Text="{Binding VirtualScreenDisplaySize, Mode=TwoWay}" theme:TextBoxExtensions.AddDeleteButton="False"/>
355+
</StackPanel>
356+
</StackPanel>
357+
</Grid>
358+
</suki:GlassCard>
318359
</WrapPanel>
319360
</ScrollViewer>
320361
</UserControl>

UotanToolbox/Features/Scrcpy/ScrcpyViewModel.cs

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ public partial class ScrcpyViewModel : MainPageBase
1818
{
1919
[ObservableProperty]
2020
private bool _recordScreen = false, _windowFixed = false, _computerControl = true, _fullScreen = false, _showBorder = true,
21-
_showTouch = true, _closeScreen = false, _screenAwake = false, _screenAwakeStatus = true, _clipboardSync = true, _cameraMirror = false;
21+
_showTouch = true, _closeScreen = false, _screenAwake = false, _screenAwakeStatus = true, _clipboardSync = true, _cameraMirror = false,_enableVirtualScreen = false;
2222
[ObservableProperty] private bool _IsConnecting;
23-
[ObservableProperty] private string _windowTitle, _recordFolder;
23+
[ObservableProperty] private string _windowTitle, _recordFolder, _virtualScreenPackage, _virtualScreenDisplaySize;
2424

2525
[ObservableProperty][Range(0d, 50d)] private double _bitRate = 8;
2626
[ObservableProperty][Range(0d, 144d)] private double _frameRate = 60;
@@ -77,6 +77,25 @@ await Dispatcher.UIThread.InvokeAsync(async () =>
7777
{
7878
arg += $"--max-size {SizeResolution} ";
7979
}
80+
81+
if (EnableVirtualScreen)
82+
{
83+
if (VirtualScreenDisplaySize != "")
84+
{
85+
arg += $"--new-display={VirtualScreenDisplaySize} ";
86+
}
87+
else
88+
{
89+
arg += $"--new-display ";
90+
}
91+
}
92+
93+
if (VirtualScreenPackage != "")
94+
{
95+
arg += $"--start-app={VirtualScreenPackage} ";
96+
}
97+
98+
8099

81100
if (WindowTitle is not "" and not null)
82101
{
@@ -89,7 +108,7 @@ await Dispatcher.UIThread.InvokeAsync(async () =>
89108

90109
if (FullScreen)
91110
{
92-
arg += "--fullscreen ";
111+
arg += "--fullscreen --no-vd-destroy-content ";
93112
}
94113

95114
if (!ShowBorder)

0 commit comments

Comments
 (0)