ITADN
cvzi/ScreenshotTile
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

app icon ScreenshotTile (NoRoot)

License: GPL v3 F-Droid Play Store Download APK file Downloads F-Droid build status 🔨 Gradle Build

Get it on F-Droid Get it on Google Play

考虑向 F-Droid 捐赠

$\textcolor{#D00000}{\textsf{F-Droid 正面临威胁。Google 正在改变你在设备上安装应用的方式:}}$ https://keepandroidopen.org/

无需 root 权限即可在 Android 7.0+ 上截取屏幕截图

视频:

Video screenshot

github.com/ipcjs/ScreenshotTile 的分支

目录

更新日志查看旧版本发布Google 商店

语言

如需帮助翻译此应用,请访问 crowdin.com,本地化工作在此管理。如果您想添加新语言,请提交 issue 或给我发邮件,我会将其添加。

Crowdin | Agile localization for tech companies

您可以直接翻译资源文件并提交 pull request。英文源文件位于 /app/src/main/res/values-en/strings.xml,翻译后的文件存储在 /app/src/main/res/values-XX/strings.xml(XX = 语言代码)

贡献者与库

Contributors

内部使用的图像编辑器和图像库是 github.com/burhanrashid52/PhotoEditor (MIT 许可证),由 Burhanuddin Rashid 开发。

开源库及其许可证通过 Jared Burrows 开发的 gradle-license-plugin 在应用内的“关于”部分中展示。

技术细节

此应用支持三种不同的截图方法

传统/原始方法 Legacy method switch on

此方法使用 Android 的屏幕录制/屏幕投射功能来录制单帧。

要求:

特性:

  • 自定义存储位置
  • 自定义格式
  • 自定义通知
  • 在 Android 9 之前,ScreenCaptureIntent/MediaProjection 权限仅在添加磁贴时询问一次(带有“不再显示”选项)。从 Android 9 开始,每次截图前都需要频繁授予权限

启用系统默认设置的本地方法 Native method switch on

此方法使用设备的截图功能。它与按下 Home+Power 键或该手机上用于截图的任意按键组合完全相同。

要求:

  • Android 9 Pie
  • 需要在系统设置中启动辅助功能服务
  • Accessibility service screenshot

属性:

  • 无需权限,只需激活一次辅助功能服务
  • 设备制造商可能添加的功能,如长截图、截图编辑器、通知、缩略图等,均可使用

带有自定义设置的原生方法 Native method switch on Use system defaults switch off

此方法使用 AccessibilityService#takeScreenshot,它输出一个可以压缩并存储到磁盘上的位图。

要求:

  • Android 11 R
  • 需要在系统设置中启动辅助功能服务
  • 存储权限
  • Accessibility service screenshot
  • Storage permission screenshot

属性:

  • 自定义存储位置
  • 自定义格式
  • 自定义通知

受限设置(仅限原生方法)

在 Android 13 及以上版本中,设备制造商可能会限制可以为应用启用的设置。在这种情况下,在辅助功能设置中启用该应用的选项将显示为灰色。这意味着“浮动按钮”和“原生方法”都无法启用。值得注意的是,在运行 Android 14 的 Pixel 手机上就是这种情况:

Grayed Out Accessibility Settings

要绕过此保护,您需要启用“受限设置”选项。首先,尝试启用辅助功能服务。点击灰色选项,您将看到一个关于受限设置的对话框:

Dialog About Restricted Settings

现在,打开 Android 系统设置,进入“应用”>“所有应用”。找到“ScreenshotTile”,在应用信息中,点击右上角的三个点,并选择“允许受限设置”:

Allow Restricted Settings

在允许“受限设置”的情况下,您可以重新打开应用并启用“原生方法”或“浮动按钮”。无障碍设置将会打开,您可以启用该应用。

阅读更多相关内容:https://support.google.com/android/answer/12623953#allowrestrictedsettings

投屏图标: cast icon(仅限 Legacy 方法)

如果您不想在每次截图时都在状态栏中看到投屏图标,您可以在大多数手机上将其关闭。我不建议关闭它,因为了解应用何时正在录制屏幕通常是个好主意。
以下是如何关闭它的说明: PCTattletale.com - 如何关闭 Android 烦人的 Chromecast 图标

权限范围(仅限 Legacy 方法)

从 Android 14 开始,屏幕录制的权限对话框允许您选择录制当前屏幕或选择要捕获的应用: Scope of screen recording permission 如果在应用设置中选择“选择应用”,您可以在权限对话框中选择录制某个应用,或选择“整个屏幕”以捕获当前屏幕。 如果在应用设置中选择“当前屏幕”,权限对话框将预设为“共享整个屏幕”,您只需按下“共享屏幕”。在这种情况下,您无法将选择更改为“共享单个应用”。

权限

android.permission.WRITE_EXTERNAL_STORAGE “照片/媒体/文件和存储”

读取内部存储/USB 存储的内容
修改或删除内部存储/USB 存储的内容

此权限用于在设备的内部存储上保存截图文件。 自 Android 10/Q 起,此权限不再使用。

android.permission.FOREGROUND_SERVICE

自 Android 9/Pie 起,此权限是截取屏幕截图所必需的。它基本上意味着该应用可以在不显示自身的情况下运行。然而,当应用运行时,它始终会显示一条通知。

android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION

自 Android 14/U 起,此权限是截取屏幕截图所必需的。它是 android.permission.FOREGROUND_SERVICE 权限的更具体版本,该权限允许镜像屏幕。

ScreenCaptureIntent

ScreenshotTile 将开始捕获屏幕上显示的所有内容。

这是一种特殊权限,在截取屏幕截图之前或您将磁贴添加到快速设置时请求。它允许应用录制屏幕。在此情况下,对于屏幕截图,录制仅为一帧图像。

android.permission.POST_NOTIFICATIONS

自 Android 13/Tiramisu 起,此权限可用于请求显示通知的能力。您可以选择“不允许”以阻止所有通知。

使用广播意图自动截图

您可以使用 MacroDroidAutomateTasker 等应用来自动化截图。 这通过 Broadcast intents 实现。

YouTube 上的教程视频:https://youtu.be/q5hQF1nzOzk

Macro intent screenshot

首先,您必须在应用设置中设置密码来激活此功能。

现在您可以在 MacroDroid 中添加宏

  • 打开 MacroDroid,点击 Macros,然后点击 Add Macro 或 ➕ 符号
  • Triggers 上点击 ➕,并添加您所需的触发器
  • Actions 上点击 ➕,然后前往 Connectivity -> Send Intent
  • Target 下选择 Broadcast 并填写以下字段:
    • Action: com.github.cvzi.screenshottile.SCREENSHOT
    • Package: com.github.cvzi.screenshottile
    • Data (class name): com.github.cvzi.screenshottile.IntentHandler
    • Extra 1 parameter: secret
    • Extra 1 value: yourPasswordFromEarlier
    • (可选:Extra 2 parameter partial,value true 以打开区域选择器进行部分截图,而不是截取整个屏幕)

Macro intent screenshot

从终端自动截图

你也可以从终端截图:

# Take a screenshot
am broadcast -a com.github.cvzi.screenshottile.SCREENSHOT -e secret MY_PASSWORD com.github.cvzi.screenshottile
# Open the area selector for a partial screenshot
am broadcast -a com.github.cvzi.screenshottile.SCREENSHOT -e secret MY_PASSWORD --ez partial true com.github.cvzi.screenshottile

或通过 adb 从计算机:

adb shell am broadcast -a com.github.cvzi.screenshottile.SCREENSHOT -e secret MY_PASSWORD com.github.cvzi.screenshottile

使用 Activity intents 自动截图

某些应用只能启动 activity,无法发送广播,例如 Motorola AI Key / Red Key(com.motorola.mykey)、按键重映射应用或自定义启动器。对于这些情况,你可以使用 ScreenshotTriggerActivity,它接受与上述广播 intent 相同的 secretpartial extras。

首先,你需要在应用设置中设置密码来激活此功能(与广播 intent 使用相同的密码)。

你可以从终端截取屏幕截图:

# Take a screenshot
am start -a com.github.cvzi.screenshottile.TAKE_SCREENSHOT -e secret MY_PASSWORD
# Open the area selector for a partial screenshot
am start -a com.github.cvzi.screenshottile.TAKE_SCREENSHOT -e secret MY_PASSWORD --ez partial true

或通过计算机使用 adb:

adb shell am start -a com.github.cvzi.screenshottile.TAKE_SCREENSHOT -e secret MY_PASSWORD

存储可启动 intent(例如 Motorola AI Key 设置)的应用程序可以使用 intent URI:

intent:#Intent;action=com.github.cvzi.screenshottile.TAKE_SCREENSHOT;launchFlags=0x10000000;S.secret=MY_PASSWORD;end

其他数据

一些杂项文件(主要是图像),不需要放在 ScreenshotTile 的主仓库中,已被移至一个单独的仓库:https://github.com/cvzi/ScreenshotTile_miscellaneous


updatestar

updatestar