From 6a2b0eeb1cd2df5cc7cc2e782337c42b26c37ddc Mon Sep 17 00:00:00 2001 From: Barry <870709864@qq.com> Date: Wed, 22 Jun 2022 20:34:39 +0800 Subject: [PATCH 1/9] fix: error log open file failed --- QtScrcpy/ui/dialog.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/QtScrcpy/ui/dialog.cpp b/QtScrcpy/ui/dialog.cpp index 6b0e84a85..1cb80eafa 100644 --- a/QtScrcpy/ui/dialog.cpp +++ b/QtScrcpy/ui/dialog.cpp @@ -233,6 +233,10 @@ void Dialog::delayMs(int ms) QString Dialog::getGameScript(const QString &fileName) { + if (fileName.isEmpty()) { + return ""; + } + QFile loadFile(getKeyMapPath() + "/" + fileName); if (!loadFile.open(QIODevice::ReadOnly)) { outLog("open file failed:" + fileName, true); From 89fda3a56c166dfa63512dd7cad97a0dd2b89536 Mon Sep 17 00:00:00 2001 From: Barry <870709864@qq.com> Date: Wed, 22 Jun 2022 20:48:51 +0800 Subject: [PATCH 2/9] fix: audio DELETE_FAILED_INTERNAL_ERROR --- QtScrcpy/sndcpy/sndcpy.bat | 2 +- QtScrcpy/sndcpy/sndcpy.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/QtScrcpy/sndcpy/sndcpy.bat b/QtScrcpy/sndcpy/sndcpy.bat index f8a41a7f4..5454c5066 100644 --- a/QtScrcpy/sndcpy/sndcpy.bat +++ b/QtScrcpy/sndcpy/sndcpy.bat @@ -19,7 +19,7 @@ echo Find device %1 for /f "delims=" %%i in ('%ADB% %serial% shell pm path com.rom1v.sndcpy') do set sndcpy_installed=%%i if "%sndcpy_installed%"=="" ( echo Install %SNDCPY_APK%... - %ADB% %serial% uninstall com.rom1v.sndcpy || goto :error + %ADB% %serial% uninstall com.rom1v.sndcpy || echo uninstall failed %ADB% %serial% install -t -r -g %SNDCPY_APK% || goto :error echo Install %SNDCPY_APK% success ) diff --git a/QtScrcpy/sndcpy/sndcpy.sh b/QtScrcpy/sndcpy/sndcpy.sh index c9dfb9e36..5906b7877 100755 --- a/QtScrcpy/sndcpy/sndcpy.sh +++ b/QtScrcpy/sndcpy/sndcpy.sh @@ -19,7 +19,7 @@ echo "Find device $1" sndcpy_installed=$($ADB $serial shell pm path com.rom1v.sndcpy) if [[ $sndcpy_installed == "" ]]; then echo Install $SNDCPY_APK... - $ADB $serial uninstall com.rom1v.sndcpy + $ADB $serial uninstall com.rom1v.sndcpy || echo uninstall failed $ADB $serial install -t -r -g $SNDCPY_APK echo Install $SNDCPY_APK success fi From a78d9d03046072fad5f97a516c1da8cf00b6220a Mon Sep 17 00:00:00 2001 From: Barry <870709864@qq.com> Date: Wed, 22 Jun 2022 21:26:28 +0800 Subject: [PATCH 3/9] fix: single mode resize bug --- QtScrcpy/ui/dialog.cpp | 2 +- QtScrcpy/ui/dialog.ui | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/QtScrcpy/ui/dialog.cpp b/QtScrcpy/ui/dialog.cpp index 1cb80eafa..1c0482a44 100644 --- a/QtScrcpy/ui/dialog.cpp +++ b/QtScrcpy/ui/dialog.cpp @@ -671,7 +671,7 @@ void Dialog::on_useSingleModeCheck_clicked() ui->rightWidget->show(); } - resize(layout()->sizeHint().width(), height()); + adjustSize(); } void Dialog::on_serialBox_currentIndexChanged(const QString &arg1) diff --git a/QtScrcpy/ui/dialog.ui b/QtScrcpy/ui/dialog.ui index 569e76956..81860e632 100644 --- a/QtScrcpy/ui/dialog.ui +++ b/QtScrcpy/ui/dialog.ui @@ -119,6 +119,12 @@ + + + 0 + 0 + + auto update @@ -975,6 +981,12 @@ + + + 0 + 0 + + install sndcpy @@ -982,6 +994,12 @@ + + + 0 + 0 + + start audio @@ -989,6 +1007,12 @@ + + + 0 + 0 + + stop audio From c9ecb8bda79592b26b24596071b2ac276df7d3f5 Mon Sep 17 00:00:00 2001 From: Barry <870709864@qq.com> Date: Wed, 22 Jun 2022 21:34:09 +0800 Subject: [PATCH 4/9] fix: ui translate error --- QtScrcpy/res/i18n/en_US.qm | Bin 4971 -> 4971 bytes QtScrcpy/res/i18n/en_US.ts | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/QtScrcpy/res/i18n/en_US.qm b/QtScrcpy/res/i18n/en_US.qm index ffb637224f177c21094c7f27fd35b4c5f3ac1dd7..854e80499f426047e9fb7e1751ec8e0c22213c62 100644 GIT binary patch delta 14 VcmaE@_F8R2B{yUK<|^)w>;N$b1@`~| delta 14 VcmaE@_F8R2B{yTi<|^)w>;N$h1^55} diff --git a/QtScrcpy/res/i18n/en_US.ts b/QtScrcpy/res/i18n/en_US.ts index c8787cf5f..626a7607c 100644 --- a/QtScrcpy/res/i18n/en_US.ts +++ b/QtScrcpy/res/i18n/en_US.ts @@ -287,7 +287,7 @@ auto update - autp update + auto update From b1dbbfcdb07421e0f0d9c5a1a3a1dd854806dcf1 Mon Sep 17 00:00:00 2001 From: Zeroo <77537889+Zeroo28@users.noreply.github.com> Date: Wed, 29 Jun 2022 13:39:32 +0700 Subject: [PATCH 5/9] docs(readme): Fixed 'build' category link --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d819158c3..697d76b70 100644 --- a/README.md +++ b/README.md @@ -108,17 +108,17 @@ For Windows, for simplicity, prebuilt archives with all the dependencies (includ - [`QtScrcpy`][github-download] -or you can [build it by yourself](##Build) +or you can [build it by yourself](#build) ### Mac OS For Mac OS, for simplicity, prebuilt archives with all the dependencies (including adb) are available: - [`QtScrcpy`][github-download] -or you can [build it by yourself](##Build) +or you can [build it by yourself](#build) ### Linux -you can [build it by yourself](##Build)(just ubuntu test) +you can [build it by yourself](#build)(just ubuntu test) ## Run From f0cd5fde29bffc1016ad75b5de74e12b19144e90 Mon Sep 17 00:00:00 2001 From: Zeroo <77537889+Zeroo28@users.noreply.github.com> Date: Wed, 29 Jun 2022 14:16:38 +0700 Subject: [PATCH 6/9] chore: removed .vscode directory Removed vscode's config directory from version control. --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 5a6f350f4..d71bf127a 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,5 @@ build-* *.DS_Store userdata.ini -Info_Mac.plist \ No newline at end of file +Info_Mac.plist +.vscode \ No newline at end of file From 1d99246dc74ce4d2a47d3885a7bb4c6723cd49ec Mon Sep 17 00:00:00 2001 From: Zeroo <77537889+Zeroo28@users.noreply.github.com> Date: Wed, 29 Jun 2022 16:32:09 +0700 Subject: [PATCH 7/9] Revert "docs(readme): Fixed 'build' category link" This reverts commit b1dbbfcdb07421e0f0d9c5a1a3a1dd854806dcf1. --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 697d76b70..d819158c3 100644 --- a/README.md +++ b/README.md @@ -108,17 +108,17 @@ For Windows, for simplicity, prebuilt archives with all the dependencies (includ - [`QtScrcpy`][github-download] -or you can [build it by yourself](#build) +or you can [build it by yourself](##Build) ### Mac OS For Mac OS, for simplicity, prebuilt archives with all the dependencies (including adb) are available: - [`QtScrcpy`][github-download] -or you can [build it by yourself](#build) +or you can [build it by yourself](##Build) ### Linux -you can [build it by yourself](#build)(just ubuntu test) +you can [build it by yourself](##Build)(just ubuntu test) ## Run From 96356af287dba651bb55526d45fb37001e908d6f Mon Sep 17 00:00:00 2001 From: Zeroo <77537889+Zeroo28@users.noreply.github.com> Date: Wed, 6 Jul 2022 08:26:46 +0700 Subject: [PATCH 8/9] revert(vcs): removed .vscode directory from .gitignore --- .gitignore | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index d71bf127a..5a6f350f4 100644 --- a/.gitignore +++ b/.gitignore @@ -13,5 +13,4 @@ build-* *.DS_Store userdata.ini -Info_Mac.plist -.vscode \ No newline at end of file +Info_Mac.plist \ No newline at end of file From 1d62b272193219b5ab6df263fcbd706069796fd6 Mon Sep 17 00:00:00 2001 From: Zeroo <77537889+Zeroo28@users.noreply.github.com> Date: Wed, 6 Jul 2022 08:32:34 +0700 Subject: [PATCH 9/9] docs: fixes grammar mistakes and typos _I have used Grammarly to fixed them_ --- README.md | 60 +++++++++++++++++++++++++++---------------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 697d76b70..311f17209 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # QtScrcpy -[![Financial Contributors on Open Collective](https://opencollective.com/QtScrcpy/all/badge.svg?label=financial+contributors)](https://opencollective.com/QtScrcpy) +[![Financial Contributors to Open Collective](https://opencollective.com/QtScrcpy/all/badge.svg?label=financial+contributors)](https://opencollective.com/QtScrcpy) ![Windows](https://github.com/barry-ran/QtScrcpy/workflows/Windows/badge.svg) ![MacOS](https://github.com/barry-ran/QtScrcpy/workflows/MacOS/badge.svg) ![Ubuntu](https://github.com/barry-ran/QtScrcpy/workflows/Ubuntu/badge.svg) @@ -10,9 +10,9 @@ [中文介绍](README_zh.md) -QtScrcpy connects to Android devices via USB (or via TCP/IP) for display and control. It does NOT require the root privileges. +QtScrcpy connects to Android devices via USB (or via TCP/IP) for display and control. It does NOT require root privileges. -It supports three major platforms: GNU/Linux, Windows and MacOS. +It supports three major platforms: GNU/Linux, Windows and macOS. It focuses on: @@ -32,15 +32,15 @@ It focuses on: ![linux](screenshot/linux-en.png) ## Customized key mapping -You can write your own script to map keyboard and mouse actions to touches and clicks of the mobile phone according to your needs. [Here](docs/KeyMapDes.md) are the rules. +You can write your script to map keyboard and mouse actions to touches and clicks of the mobile phone according to your needs. [Here](docs/KeyMapDes.md) are the rules. -A script for "PUBG mobile" and TikTok mapping is provided by default. Once enabled, you can play the game with your keyboard and mouse as the PC version. or you can use up/down/left/right direction keys to simulate up/down/left/right sliding. You can also write your own mapping files for other games according to [writing rules](docs/KeyMapDes.md). The default key mapping is as follows: +A script for "PUBG mobile" and TikTok mapping is provided by default. Once enabled, you can play the game with your keyboard and mouse as the PC version. or you can use up/down/left/right direction keys to simulate up/down/left/right sliding. You can also write your mapping files for other games according to [the writing rules](docs/KeyMapDes.md). The default key mapping is as follows: ![game](screenshot/game.jpg) [Here is a video demonstration of playing "PUBG mobile"](http://mp.weixin.qq.com/mp/video?__biz=MzU1NTg5MjYyNw==&mid=100000015&sn=3e301fdc5a364bd16d6207fa674bc8b3&vid=wxv_968792362971430913&idx=1&vidsn=eec329cc13c3e24c187dc9b4d5eb8760&fromid=1&scene=20&xtrack=1&clicktime=1567346543&sessionid=1567346375&subscene=92&ascene=0&fasttmpl_type=0&fasttmpl_fullversion=4730859-zh_CN-zip&fasttmpl_flag=0&realreporttime=1567346543910#wechat_redirect) -Here is the instruction of adding new customized mapping files. +Here is the instruction for adding new customized mapping files. - Write a customized script and put it in the `keymap` directory - Click `refresh script` to check whether it can be found @@ -81,7 +81,7 @@ build|meson+gradle|qmake or CMake ## Learn If you are interested in it and want to learn how it works but do not know how to get started, you can choose to purchase my recorded video lessons. -It details the development architecture and the development process of the entire software, and help you develop QtScrcpy from scratch. +It details the development architecture and the development process of the entire software and helps you develop QtScrcpy from scratch. Course introduction:[https://blog.csdn.net/rankun1/article/details/87970523](https://blog.csdn.net/rankun1/article/details/87970523) @@ -93,7 +93,7 @@ QQ Group number:901736468 ## Requirements Android API >= 21 (Android 5.0). -Make sure you enabled [adb debugging][enable-adb] on your device(s). +Make sure you have enabled [ADB debugging][enable-adb] on your device(s). [enable-adb]: https://developer.android.com/studio/command-line/adb.html#Enabling @@ -104,63 +104,63 @@ Make sure you enabled [adb debugging][enable-adb] on your device(s). [github-download]: https://github.com/barry-ran/QtScrcpy/releases ### Windows -For Windows, for simplicity, prebuilt archives with all the dependencies (including adb) are available: +For Windows, for simplicity, prebuilt archives with all the dependencies (including ADB) are available: - [`QtScrcpy`][github-download] -or you can [build it by yourself](#build) +or you can [build it by yourself](#Build) ### Mac OS -For Mac OS, for simplicity, prebuilt archives with all the dependencies (including adb) are available: +For Mac OS, for simplicity, prebuilt archives with all the dependencies (including ADB) are available: - [`QtScrcpy`][github-download] -or you can [build it by yourself](#build) +or you can [build it by yourself](#Build) ### Linux -you can [build it by yourself](#build)(just ubuntu test) +you can [build it by yourself](#Build)(just ubuntu test) ## Run Connect to your Android device on your computer, then run the program and click `USB connect` or `WiFi connect` -### Wireless connection steps (ensure that the mobile phone and PC are in the same LAN): +### Wireless connection steps (ensure that the mobile phone and PC are on the same LAN): 1. Enable USB debugging in developer options on the Android device -2. Connect the Android device to computer via USB +2. Connect the Android device to the computer via USB 3. Click update device, and you will see that the device number is updated 4. Click get device IP 5. Click start adbd 6. Click wireless connect -7. Click update device again, and another device with IP address will be found. Select this device. +7. Click update device again, and another device with an IP address will be found. Select this device. 8. Click start service -Note: it is not necessary to keep you Android device connected via USB after you start adbd. +Note: it is not necessary to keep your Android device connected via USB after you start adbd. ## Interface button introduction: - Start config: function parameter settings before starting the service - You can set the bit rate, resolution, recording format, and video save path of the local recorded video. + You can set the bit rate, resolution, recording format, and video save path of the locally recorded video. - - Background record: the Android device screen is not displayed after starting the service. It is recorded in background. - - Always on top: the video window for Android device will be kept on the top + - Background record: the Android device screen is not displayed after starting the service. It is recorded in the background. + - Always on top: the video window for Android devices will be kept on the top - Close screen: automatically turn off the Android device screen to save power after starting the service - - Reverse connection: service startup mode. You can uncheck it if you experience connection failure with message `more than one device` + - Reverse connection: service startup mode. You can uncheck it if you experience connection failure with a message `more than one device` - Refresh devices: Refresh the currently connected device - Start service: connect to the Android device -- Stop service: disconnect from Android device +- Stop service: disconnect from the Android device - Stop all services: disconnect all connected Android devices - Get device IP: Get the IP address of the Android device and update it to the "Wireless" area for the ease of wireless connection setting. - Start adbd: Start the adbd service of the Android device. You must start it before the wireless connection. - Wireless connect: Connect to Android devices wirelessly - Wireless disconnect: Disconnect wirelessly connected Android devices -- adb command: execute customized adb commands (blocking commands are not supported now, such as shell) +- adb command: execute customized ADB commands (blocking commands are not supported now, such as a shell) ## The main function -- Display Android device screens in real time +- Display Android device screens in real-time - Real-time mouse and keyboard control of Android devices - Screen recording - Screenshot to png @@ -228,11 +228,11 @@ Everyone is welcome to maintain this project and contribute your own code, but p 4. Please keep the code style consistent with the existing style ## Why develop QtScrcpy? -There are several reasons listed as below according to importance (high to low). +There are several reasons listed below according to importance (high to low). 1. In the process of learning Qt, I need a real project to try -2. I have some background skill about audio and video and I am interested at them +2. I have some background skills in audio and video and I am interested in them 3. I have some Android development skills. But I have used it for a long time. I want to consolidate it. -4. I found scrcpy and decided to re-make it with the new technology stack (C++ + Qt + Opengl + ffmpeg) +4. I found scrcpy and decided to re-make it with the new technology stack (C++ + Qt + Opengl + FFmpeg) ## Build @@ -249,8 +249,8 @@ Qt version>=5.12 (use MSVC 2019 on Windows) 1. Set up an Android development environment on the target platform 2. Open server project in project root with Android Studio -3. The first time you open it, if you do not have the corresponding version of gradle, you will be prompted to find gradle, whether to upgrade gradle and create it. Select Cancel. After canceling, you will be prompted to select the location of the existing gradle. You can also cancel it (it will download automatically). -4. Edit the code as needed, but of course you do n’t need to. +3. The first time you open it, if you do not have the corresponding version of Gradle, you will be prompted to find Gradle, whether to upgrade Gradle or create it. Select Cancel. After canceling, you will be prompted to select the location of the existing Gradle. You can also cancel it (it will download automatically). +4. Edit the code as needed, but of course, you don’t need to. 4. After compiling the apk, rename it to scrcpy-server and replace QtScrcpy/QtScrcpyCore/src/third_party/scrcpy-server. ## Licence @@ -274,7 +274,7 @@ Since it is based on scrcpy, respect its Licence [Barry CSDN](https://blog.csdn.net/rankun1) -An ordinary programmer, working mainly in C++ for desktop client development, graduated from Shandong for more than a year of steel simulation education software, and later moved to Shanghai to work in security, online education related fields, familiar with audio and video. I have an understanding of audio and video fields such as voice calls, live education, video conferencing and other related solutions. I also have experience in Android, Linux server and other kinds of development. +An ordinary programmer, working mainly in C++ for desktop client development, graduated from Shandong for more than a year of steel simulation education software, and later moved to Shanghai to work in security, online education-related fields, familiar with audio and video. I have an understanding of audio and video fields such as voice calls, live education, video conferencing and other related solutions. I also have experience in Android, Linux servers and other kinds of development. ## Contributors