自4.4 KitKat以来,Android有一个shell实用程序screenrecord来记录Android设备屏幕。
如果我通过USB将物理设备与adb实用程序连接,我可以执行以下操作:
adb shell screenrecord /sdcard/sample.mp4
adb pull /sdcard/sample.mp4
但是,如果我为Android模拟器执行上述操作,我将获得一个空的sample.mp4文件。
adb shell screenrecord /sdcard/sample.mp4
adb shell ls -l /sdcard/sample.mp4
-rw-rw---- root sdcard_r 0 2016-06-18 05:37 sample.mp4
如果我直接在模拟器的根控制台中执行screenrecord,我会看到以下内容:
root@flo:/system/bin # ./screenrecord /sdcard/sample.mp4
[1] + Stopped (signal) ./screenrecord /sdcard/sample.mp4
root@flo:/system/bin #
[1] + Illegal instruction ./screenrecord /sdcard/sample.mp4
为什么screenrecord不能用于模拟器?
Screenrecord使用MediaCodec API。 https://developer.android.com/reference/android/media/MediaCodec.html
确切地说,Screenrecord直接调用MediaCodec的本机接口。
据我所知,还没有模拟器支持MediaCodec。它们都支持更高级别的界面MediaPlayer https://developer.android.com/reference/android/media/MediaPlayer.html。
Screenrecord正在与Android Emulator v27.0.2
合作。
我用Oreo x86 with Google Play
图像测试了它,但它应该适用于任何KitKat +图像。