The speed apps on Android phones are GPS based and extremely accurate - when there is a solid lock on 3 or more satellites. There are a lot of factors that could have caused a calculation error. Poor satellite reception or poor application programming are the two likely suspects. I've seen apps that erroneously display speed 2x of what the phone is actually moving momentarily. Poor error correction/detection in an Android app is fairly common.
Regardless, he didn't hit 50mph.