I need some api or manipulative code by which i can measure the upload/download speed and the latency in wifi connection from an android application.
There are 2 main ways to calculate download/upload speed.
Passive testing - this is what has been suggested already using TrafficStats API. This method will give you speed which is more closer to the actual user experience. However, it will not provide you with capacity measurement - i.e what is the expected capacity of the connection. For example for fixed networks ISPs usualy sell packages based on speed - e.g. 100 Mbit package, 1 Gbit package. If you want to see if that ISP is delivering the speed, Passive approach is not the way! The speeds will be much lower as users are not using full capacity all the time. Also, keep in mind its not possible to do latency testing using passive approach using TrafficStats.
Active testing - this method requires downloading and uploading data to the remote server to get the download/upload speed and latency. For this type of testing there are many sampling methodologies , there is no one "true" speed. You can check following standards to give you more idea what is the recommended way:
https://itu.int/en/ITU-T/C-I/Pages/IM/Internet-speed.aspx
https://itu.int/itu-t/recommendations/rec.aspx?rec=q.3960
https://itu.int/ITU-T/recommendations/rec.aspx?rec=14125
https://tools.ietf.org/pdf/rfc6349.pdf
You can also use our Android SDK which should do what you need and is compliant with ITU standard:
https://github.com/speedchecker/speedchecker-sdk-android
Secondly, you have not made it clear whether you are after "wifi speed" or "internet speed". Wifi speed is local network speed that is measured differently from "internet speed". While there are many ways to test "internet speed", testing "wifi speed" is much more challenging as typically its problematic to get the remote server in the local network. Again, our Android SDK I referenced above has measurement of wifi speed as well