One of the many footnotes that came with the announcement of Android 4.4 KitKat was the inclusion of native screen recording. This was pitched as a tool for developers to easily make video demos of apps, but we at Android Police were obviously pretty pleased as well. Google was a bit vague about how the functionality would be accessible, except to point to the developer tools. Now that the Nexus 5 is in the wild, we can take it for a spin and see what this feature can do.
How It Works
There is no way to activate the screenrecord function from the device, at least at this time. It's possible some root method will be developed later, but this is designed to work with the Android developer tools. The easiest way to start the recording is to connect your device to a computer running the Android developer tools and run an ADB shell command like this:
adb shell screenrecord /sdcard/movie.mp4
That command will start recording as soon as you press enter and output a video file called 'movie' in the root SD card directory. When you want to stop the recording, you just press ctrl-c on the computer keyboard. The last bit can be edited to place the file someplace else, or to change the file name. You'll want to be careful not to use the same file name more than once – the screenrecord function will overwrite without asking.
Screenrecord can also be accessed from the DDMS panel in Android Studio, an alternative to Eclipse. However you record the file, it can be copied from the device normally after you've stopped the session.
The most undeniably great thing here is this is a native function now. There's no more crazy root solution, no flashing ROMs, or anything else. If you're running KitKat and have a computer with ADB working, you can record the screen.
Video quality is also very good once you move the video to a computer (playback on the device is choppy). There is a touch of artifacting when there's a lot of movement, but the frame rate stays up there. Video is captured at the native resolution of the device, so for the Nexus 5 that's 1920x1080. Lowering it helps with the consistency.
Unfortunately, there are plenty of things wrong with the screenrecord implementation in KitKat. The most serious issue right now is, as mentioned, this only works over ADB. It's like we've gone back in time to the pre-ICS days when you couldn't even take screenshots on a device without root or ADB. Screen recording should not be a developer-only feature, just like screenshots shouldn't have back then.
The videos themselves are also somewhat limited right now. The maximum length is 180 seconds – if you haven't hit ctrl-c to stop it by then, it will end automatically. Android's screenrecord feature doesn't capture audio along with the video, either. If sound is an integral part of the app you want to capture, tough luck. The best you can do is edit the video file later and add an audio track.
There are very few options in general when recording the screen. You can tack on a few modifiers to the ADB shell command like --bit-rate and --size <WIDTHxHEIGHT>. You can also change the maximum video length by using the --time-limit <TIME> command, but you have to do it ever single time. However, there's nothing you can do about screen rotation – it's not supported at all. If you do rotate the screen, part of the video will be cut off.
If you want anyone to follow what you're doing on the video, you should have "Show touches" enabled in the developer options. There's no way to just have this activated for a screenrecord session – you have to do it manually every time.
So, screenrecord is not everything we hoped it would be, but I suspect you'll be seeing plenty of videos from us recorded this way. This system is good enough for a lot of situations, and it will work on all KitKat devices. This is a developer-focused feature just like screenshots used to be. Maybe someday Google will add more options and build this into an app on the device, but for now we'll have to make do with this imperfect solution.