我正在编写一个执行一些adb shell命令的小型Ruby脚本。当我尝试在Android设备上运行屏幕记录然后发送一些滑动和触摸事件时,会出现问题。
如果我在触摸和滑动的最后没有screenrecord
的情况下运行adb shell "&"
,事件只会在screenrecord
超时时发生:
adb shell screenrecord --time-limit 10 /sdcard/dumper.mp4
如果我最后使用"&"
运行它,screenrecord
会在执行触摸或滑动事件时立即切断,尽管将--time-limit
高选项传递给{{1} }。
screenrecord
有没有办法可以创建一个子进程让它运行adb shell screenrecord --time-limit 10 /sdcard/dumper.mp4&
并在screenrecord
完成并且并行执行触摸和滑动时死掉?
我尝试使用screenrecord
,但父母最终死亡,如果我重新执行程序,则执行触摸和滑动。
这是我用来代码的代码:
fork
我尝试将def adb(arg)
fork do
exec("adb -s #{ARGV[0]} #{arg}")
exit
end
end
作为替代方案,但它不起作用:
spawn
它基本上用标签解析XML文件以触发记录过程。我确信exec没有失败,因为我尝试模拟IRB中的步骤。
正在运行
if line.include? "<record>"
puts "comes here"
duration=line.scan(/\d+/).first.to_i
adb_sep("shell screenrecord --time-limit #{duration} /sdcard/demo.mp4")
在按预期完成后杀死Ruby shell。
irb>>exec(<adb screenrecord command>)
就像一场梦!它完全符合我的要求。从设备中提取录制的视频可以准确显示我想要的内容。
我想我已经弄清楚发生了什么。使用irb>>system(<adb screenrecord command>&)
irb>>system(<adb tap or swipe command>)
运行adb会将adb进程发送到后台并停止录制。运行adb tap将其恢复到前台。因此,我正在拍摄视频。
我想我必须在自己的shell中触发adb screenrecord。
与人类的bash类比将是打开一个终端,开始记录屏幕。打开另一个终端,开始发送水龙头和滑动。
答案 0 :(得分:0)
事实证明这是一个Android shell屏幕记录问题,而不是Ruby问题。
Android正在对录制的视频长度进行优化,以扭曲我的输出视频。它仅记录从第一次UI更改到最后一次UI更改的视频。