I need to calculate Speed with which the user is moving. So we need two things to calculate speed which are GPS
and Accelerometer
.
The most accurate results can be obtained by using both of them, through sensor fusion. See my previous answer to question Using accelerometer to calculate speeds or to another question GPS V.S. accelerometer to calculate distance.
As for the accuracy of the accelerometer, see Get velocity from 3DVector using accelerometer sensor.
If you want to track the user indoor, see what you can actually do at question Android accelerometer accuracy (Inertial navigation).
An implementation, based on the GPS, is available at this link
You can call .getSpeed() on the locationprovider