Android - 如何通过模拟器访问模拟器屏幕截图?

标签 android android-emulator android-screen

我的应用程序允许用户截取屏幕截图,然后将其发送到服务器。

在真实设备上,屏幕截图保存在 /storage/emulated/0/Pictures/Screenshots/ 这样就可以了。

但是在模拟器上,当我点击Take screenshot按钮(位于模拟器旁边的面板中)时,屏幕截图会保存到我的电脑上,但我无法在任何地方找到它在模拟器的文件系统中 - /storage/emulated/0/Pictures/ 目录存在,但 /storage/emulated/0/Pictures/Screenshots/ 子目录不存在不是。

有什么方法可以在模拟器上访问屏幕截图图像,或者有其他方法可以截取屏幕截图吗?

最佳答案

模拟 Volume Down + Power 事件触发 Android 的截图,然后截图图片将存储在模拟器的 /storage/emulated/0/Pictures/Screenshots

这是脚本。运行 adb shell,然后复制下面的代码并运行,您应该会看到模拟器开始截屏。

cat > /data/local/tmp/screenshot.sh <<EOF
#!/bin/sh
echo 'volume key: down'
sendevent /dev/input/event1 1 114 1
echo 'power key: down'
sendevent /dev/input/event1 1 116 1
sendevent /dev/input/event1 0 0 0
sleep 1
echo 'volume key: up'
sendevent /dev/input/event1 1 114 0
echo 'power key: up'
sendevent /dev/input/event1 1 116 0
sendevent /dev/input/event1 0 0 0
EOF
sh /data/local/tmp/screenshot.sh

注意:我的模拟器的输入设备是“/dev/input/event1”,这可能与其他设备不同。您可以通过运行 adb shell getevent 命令获取设备信息,然后按下模拟器的键,输出将是这样的(我的音量调低键,这些是十六进制数字,所以 0x0072 是 114d):

/dev/input/event1: 0001 0072 00000001
/dev/input/event1: 0000 0000 00000000
/dev/input/event1: 0001 0072 00000000
/dev/input/event1: 0000 0000 00000000

关于Android - 如何通过模拟器访问模拟器屏幕截图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44495473/

相关文章:

android - 如何从 android 中的 ArrayList<Object> 获取值

android - 适用于 Xamarin 的 Genymotion Android 模拟器

android - 为什么qemu-system-x86_64(安卓模拟器)还在运行

android - adb 多个设备/模拟器

java - API>=19 如何获取屏幕中间

java - 从 ExceptionHandler 子类安全退出应用程序?

android - 绘制方向并通过解析方向api overview_polyline

Android fragment 管理器内存泄漏

android - 为什么它总是给出错误的屏幕英寸尺寸?

android - 在 Android Studio 屏幕录像机中标记光标单击/点击/双击