Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中寻找速度和带宽_Android_Performance_Bandwidth - Fatal编程技术网

在Android中寻找速度和带宽

在Android中寻找速度和带宽,android,performance,bandwidth,Android,Performance,Bandwidth,我试图计算Android应用程序中的速度,无论它何时改变。我有速度,但我有两个问题: <P>1—需要考虑第一次变化和计算速度。 2-速度不准确,当我开车时,手机给出的速度与汽车的速度不一样 我的代码是: 这是onCreate方法中的一个: mlocManager.RequestLocationUpdate(LocationManager.GPS_提供程序,20000, 100,mlocListener) 我使用LocationListener接口并实现了以下方法: public void onL

我试图计算Android应用程序中的速度,无论它何时改变。我有速度,但我有两个问题:

<P>1—需要考虑第一次变化和计算速度。

2-速度不准确,当我开车时,手机给出的速度与汽车的速度不一样

我的代码是:

这是onCreate方法中的一个: mlocManager.RequestLocationUpdate(LocationManager.GPS_提供程序,20000, 100,mlocListener)

我使用LocationListener接口并实现了以下方法:

public void onLocationChanged(Location loc){

        if (firsttime) {
            la1 = loc.getLatitude();
            lo1 = loc.getLongitude();
            firsttime = false;
            start = System.currentTimeMillis();
        } else {
            la2 = loc.getLatitude();
            lo2 = loc.getLongitude();
            end = System.currentTimeMillis();
            long difftime = end - start;
            double diffhoure = (double) difftime / (1000 * 60 * 60);
            double dis = distance(la1, lo1, la2, lo2);
            double speed = dis / diffhoure;

            Toast.makeText(getApplicationContext(),
                    "Your speed is" + speed, Toast.LENGTH_SHORT).show();
            la1 = la2;
            lo1 = lo2;
            start = end;
        }

    }
查找距离的方法是:

double distance(double lat1, double lon1, double lat2, double lon2) {
    // this method uses Haversine Formula
    double R = 6373; // earth radius in KM.

    double dlon = Math.toRadians(lon2 - lon1);

    double dlat = Math.toRadians(lat2 - lat1);
    double a = (Math.sin(dlat / 2)) * (Math.sin(dlat / 2))
            + Math.cos(Math.toRadians(lat1))
            * Math.cos(Math.toRadians(lat2)) * (Math.sin(dlon / 2))
            * (Math.sin(dlon / 2));
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));

    double d = R * c;
    return d;
}
另外,你能告诉我一个计算WiFi和3G带宽的好方法吗

先谢谢你


非常感谢您的帮助。

您可以使用以下代码获得wifi带宽:

    public class Receiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {



        WifiManager mgr = (WifiManager) getSystemService(Context.WIFI_SERVICE);
        WifiInfo networks = mgr.getConnectionInfo();
        if (networks != null) {
            Integer linkSpeed = networks.getLinkSpeed();


            Log.i("linkSpeed**************",linkSpeed +"");

        }
}