Adaptive Streaming over HTTP is a new video streaming technique that starts to boom in recent years. Meanwhile, mobile devices are quickly becoming the main platform for streaming services. Adaptive streaming to mobile devices faces additional challenges of high TCP throughput variability and limited battery supply. In this paper, we address those challenges and develop a video adaptation algorithm driven by buffered video time, TCP throughput history, recent video rates, and battery level. Our algorithm smoothly adapts the target video rate to the available network bandwidth and the remaining battery level, while maximally avoiding playback freezes. We implement the proposed algorithm into a fully-functional mobile DASH system and evaluate its performance through extensive experiments over WiFi and 3G connections. We demonstrate that our mobile DASH designs are highly efficient and robust in realistic network environments.