I am trying to listen to location changes but sometimes onLocationChanged callback is never called and getLastLocation returns null, w
First
It's kind of bug on old Android devices.
Apparently the location APIs have different behavior on different Android versions (LocationManager has issues on Android >= 4.1, while Play Services has issues on Android 2.3), see here.
So what I ended up with is below:
Trying to retrieve last location by play services, if failed try with LocationManager.
Second
I would like to thank you all for your valuable suggestions, I get the hint to use the previous workaround from AndroidHacker's post so I think he is the one who deserve the bounty.